Life Lab

Life Lab

Thoughts, stories and ideas.

BGP again

BGP again

为啥本来以为在RouterOS上配置BGP就完事了,结果今天发现一个场景,访问一个LB IP超时,但从某个k8s node上访问就正常,通过mtr看到产生了回环,后来猜测是这样的:k8s nodes都使用了旁路网关而不是主路由作为网关,是因为nodes需要拉取docker image,旁路网关有透明代理,而之前的配置是主路由和nodes建立了bgp connection,所以主路由上学习了LB ips, 当请求发到主路由,转到某个node, node并不知道在本机可以处理这个请求,而且LB IP是另一个网段,他就发回自己的gateway了,而gateway又发给主路由,主路由又发回来。。。 这次设置BGP没有使用之前的quagga,因为新版的openwrt默认没有包,不过有frr的一系列,似乎他们是一家?于是有了下文。 Installation opkg update opkg install frr-bgpd frr-zebra frr-staticd frr-watchfrr Configuration 1. /etc/frr/daemons, modify bgp
3 min read
Setup IoT networking on RouterOS

Setup IoT networking on RouterOS

之前在OpenWRT中设置了一个IoT网络,给家里的IoT设备使用,有一定访问限制,比如只能访问WAN而无法访问内网其他设备,于是单独设置了一个内网网段和内网其他网段隔离开了。后来换了RouterOS并没有重新设置,IoT设备都处于断网状态,有时用起来还有点麻烦,于是又设置上了IoT网络。 主路由已经做了虚拟化(PVE),一共有4个网口,其中1连接了LAN(加入到了PVE的默认bridge),2是WAN口(从PVE中使用PCI-E直通到了RouterOS虚拟机),3将作为IoT网口,单独连接一个无线AP给IoT设备使用,4是PVE管理口。 配置RouterOS每个人都不太一样,因为每个人可能定义不同的Lists,这些Lists会用在firewall等地方,所以以下操作并不是都需要。 /interface/list add interface=ether2 list=LAN #必须:dhcp要求interface必须有ip /ip/address add address=10.0.0.1/8 interface=ether2 network=10.0.0.0 #必须:dhcp分
2 min read
Metallb with RouterOS

Metallb with RouterOS

之前主路由是OpenWRT, 安装了支持BGP的组建后配置和Metallb的BGP模式工作起来,现在主路由换成了RouterOS,一直没动这块,当然blog就下线了几个月。 在RouterOS(7.x)中配置BGP很容易,本身得益于RouterOS完善的功能,出厂就具备完善的路由功能,在【Routing】-【BGP】中添加几个BGP connection即可,最简配置只需要写Local Address(我的是192.168.1.1),Local AS(我的是65000),Remote Address(我的有4个节点,创建4个BGP connection,每个节点一个),Remote AS(我的是65009),其他都用了默认配置,可以根据实际情况再选择,比如local port和remote port也许需要根据实际情况填写。 如果一切正常,建立完4个bgp connection后,可以看到有4个bgp sessions出现 如果已经使用metallb分配了loadbalancer ip给k8s service,你应该可以在RouterOS的路由表中看到通过BGP通知过来的IPs,
3 min read
Struggle with CIFS and NFS

Struggle with CIFS and NFS

使用showmount查看了NAS上的NFS服务暴露的存储,但用mount -t cifs挂载总提示No such file or directory,百思不得其解,最终还是在尝试用mount -t nfs挂载成功后接近了答案:cifs是和smb一样的,nfs就是nfs了。 查看NAS中的共享服务,虽然SMB和NFS有一部分重合的,但我想要挂载的存储确实只在NFS里配置了。。。 我使用的是TrueNAS scale系统,SMB里用一个逻辑的共享名字映射到具体的路径,例如movies -> /mnt/v_3x2t/movies,在Windows的共享中看到的是movies, 如果用CIFS在Linux中挂载,也是用movies名字,例如:sudo mount -t cifs //NAS-IP/movies /mnt/nas -o username=A-USER-NAME,password=A-PASSWORD 而NFS挂载需要先使用showmount查看一下,TrueNAS通过NFS暴露的存储名称是完整路径,例如通过showmount查看到的是:/mnt/v_3x2t/
1 min read
记录Pixel 5刷机root和开启VoLTE

记录Pixel 5刷机root和开启VoLTE

2025年我又翻出了我的Pixel 5。 拿在手里沉甸甸的感觉,圆润,强烈质感(相比Pixel 7)。 拿出Pixel 5主要是因为手边的2部黑莓(9900和Q20)都无法完全使用基本功能:电话、短信。从买了Pixel 5到现在用的Pixel 7都没有root过,自己对折腾没太大意愿。 这次虽然是尝试root,幸运的是这次尝试很正确,因为不root的话无法安装一些模块,就无法开启VoLTE,也就无法打电话了。 刷机、root 了解的不多,大致理解刷机、root其实是2个动作,一个是解锁bootloader,这可以刷机,而root也是建立在这基础上的。 刷机过程: 1. developer选项中允许usb调试,并信任本机,允许解锁bootloader打开。 2. 关机,再按开机键和音量下键,就进入fastboot模式了,此时会暂停在这里等待你选择是否继续启动。安装好adb等工具(macOS可以用brew),但这里不使用adb,而是另一个命令:fastboot,目前macOS上的体验是只有手机进入了fastboot模式后再连接到macOS才能被fastboot发现(可以通
3 min read
Blackberry 9900

Blackberry 9900

最近在闲鱼上看了很久黑莓9900,最终还是买下了。我已经有黑莓Q20(classic)了,9900的外观好像和Q20一摸一样,似乎应该说Q20和9900一摸一样才对。但Q20给我的感觉是太慢了,即便是重置系统后什么都没装,电话进来的时候反应还是有点慢,我特别想把系统版本降下去,但一直没找到办法。 9900反应确实很快,毕竟是上一代的系统(OS 7.1),基本没啥可用的应用,我主要也是想打电话和收短信用用。 现在闲鱼上有特别多黑莓设备在卖,大多数都是100-200元,淘宝也就那一两家还在卖高价,当然都是全套新,我不知道是不是真的原装,毕竟现在造假一条龙服务,全套配件和包装都能造。 我在闲鱼买的是港行全套新,如果淘宝买的话得七八百,闲鱼只需300.收到货后确实配件都没拆(除了电池)。 检查了一些地方 三码合一(包装盒、电池仓、系统内输入*#06#)是全新的基本配置。 还看了通话、网络的使用情况(Options->Device->Device and Status Information,输入buyr后显示在最下面),双0。
3 min read
TrueNAS lost IPv6 address assigned with SLAAC

TrueNAS lost IPv6 address assigned with SLAAC

TrueNAS升级到了SCALE 24.10或者25.04都没能解决丢失IPv6地址和默认IPv6网关的问题,原本只是以为默认网关有问题,通过UI设置IPv6默认网关得到Invalid arguments错误,看调用栈走到了py2route工具,由于无法修改py文件,没法打出更详细日志,后来看源代码,知道了UI上填写默认网关的时候,对于IPv6可以指定interface名字,由于我这里有点特殊,interface是LACP协议绑定的2个interfaces,于是写成 fe80::xxxxx%bond0,这样通过UI设置没问题了,但仍然看到IPv6地址过一段时间消失问题,大概就是路由上的1800s左右的过期时间。 后来看到论坛上有人提到需要设置accept_ra成2才可以持续接收RA,因为使用docker的原因会把IPv6的forwarding打开,打开后默认的accept_ra=1就不再接收RA了,但我们这里需要持续接收,看到官方会在25.04.2以上修复,于是提前设置了sysctl:net.ipv6.conf.default.accept_ra=2 似乎需要重启才能完全修复,重启
1 min read
down several days

down several days

从删除了NAS上的某些users、groups开始,k8s部署的应用不能正常工作了,原因是k8s使用了nfs-dir解决pvc,但k8s nodes无法正确挂载nfs了。 一开始以为nfs需要什么username、password之类的,但实际nfs工作地相当简单,NAS上的/etc/exports记录了哪些可以通过nfs挂载的路径,但我检查时,这里面是空的。。。 最终发现在NAS上保存某个nfs路径出错,原因是那个group不存在了,是我之前删除的,没有显示错误,只是默默不工作了。改好后一保存就出现在/etc/exports了。 k8s正常工作了。
1 min read
tailscale改动

tailscale改动

似乎观察到ddns工作不正常,但几乎没有影响到公网ip的更新,可能是因为长达210天的IP未下线,即便没更新也不要紧。。。起初是因为ddns使用外部dns判断域名是否更新完成目标IP的逻辑总是超时,于是换成不使用外部dns判断,但nslookup总是无法得到更新后的IP, 使用dig查114都更新了,于是在opwnwrt上看了nslookup结果,是通过100.100.100.100返回的结果,一查这个dns是tailscale的magic dns,于是重启了tailscale并关闭magic dns。 另外去掉了一个内网网段的访问,暂时没有公开的必要。 openwrt的endpoints里有代理的ipv4和6,想去掉,于是设置了v2ray透明代理直连tailscale.com, 似乎不够,使用tailscale netcheck还是看到返回了代理服务器的ip,于是设置了不转发3478端口的流量和允许41641端口进入,再使用netcheck测试,返回公网ipv4和6了。
1 min read
IPv6后续

IPv6后续

前阵子全面启用了IPv6,最近又有些修改。 M、O tag 之前使用的是无状态DHCPv6,但还是能在DHCPv6分配地址中看到几条记录,那不就相当于是有状态的分配么。于是又看到了A、M、O几个tag的作用,也许我用的OpenWRT并不是最新版原因,UI上没有更精准的调整方法,但配置支持。我的无状态DHCPv6给配置了ra_flags 有managed-config 和other-config 文档上的解释是,managed-config代表里地址信息也从RA中获取,而other-config指的是DNS等信息,完全无状态的话,得全都自己配置需要的信息才能联网,退而求其次的无状态就是地址能自己生成就好了,其他信息还可以从DHCP获取。 由于我的UI上没有更细的关于RA的配置,于是我就直接改配置,ra_flags只保留了other-config AppleTV的home hub 最近买了个Apple TV 4K版,接入家庭网络后发现它竟然在自己组网。。。起初是从k8s集群中看到了所有节点都有一个fd42 开头的IPv6地址,以为是什么高级的k8s功能,搜了很久也没看到哪里
5 min read
全面启用了IPv6

全面启用了IPv6

好像是因为IPTV,全面启用了IPv6. 农历新年前最后一个大件,AppleTV 4K到手,目前看来这也算是个提升幸福感的东西。拿到后用了国区AppleID登陆后发现啥功能都没有,以为买错了,因为看到说明在某代AppleTV上不提供AppStore,但我这几乎是最新款AppleTV了还能不提供?最后得知国区没有AppleTV。。。 作为一个电视,还是有机会看看新闻、春晚啥的,于是尝试了一下IPTV,由于没有购买这个服务(从联通),也就只能找一些免费资源,收费也没找到。。。最后找到一个IPv6的地址,当时没有启用IPv6,也就无法测试是否好用,这才考虑要不要启用IPv6试试看啊,之前默认开着,总感觉慢慢的,后来就嫌麻烦关闭了。 OpenWRT上的主要改动: * WAN口中【使用内置的 IPv6 管理/ use builtin IPv6 Management】关闭,这个关不关都不要紧,看到这个功能是为了几个没听过的服务使用,于是就关了。 * LAN中的DHCP里有一个【IPv6】配置,通告和DHCPv6都开了服务器模式,这和具体网络环境有关,我是光猫桥接,所以这里用服务器模式。
2 min read
最近的网络改动
networking

最近的网络改动

最近微调了家中网络,主要来自以下几个方面。 1. 去除2个端口的链路聚合 2. iot网络隔离 3. 测试网络 原本链路聚合为了增加带宽,但可能受限于交换机的链路选择算法,并没有测到更高的带宽,不如以后升级到2.5G网络算了,现在用了猫棒,光纤收发机支持了2.5G,所以从路由器测速能到1200Mbps,从下游电脑上只能到940Mbps。去掉链路聚合是为了能释放一个网口给iot使用。 目前把第一个网口留给了测试网络,用线拉到了办公桌上的交换机,基本是给几个不动的笔记本使用。目前和默认的LAN网络一致,LAN用了4号网口,不再需要桥接,直接就对应eth3. 而3号网口给了Linksys 1900AC路由器,这个路由器是前几天替换下来的老路由器,想专门给iot设备使用。 于是创建了一个iot网络,并添加了如下规则限制访问LAN网络,但不影响访问WAN. config rule option target 'ACCEPT' option
2 min read
Comprehensive Rust中文版编译
rust

Comprehensive Rust中文版编译

官方地址:https://google.github.io/comprehensive-rust/,中文名字应该叫《深入理解Rust》? 从twitter上看到有人发了这样一个Rust的入门教程,出自Google Android团队,不造为啥是Android出的,看着是个三四天课程,前三天是基础,后面有Android、Bare metal、并发三个后续内容。 看到昨天合并了中文的翻译,看了下在线版的多语言,只有4个,但PO文件已经有不少,不造这里是咋考虑的,固定就这几个还是要等翻译完再加上。目前中文版翻译不是100%,也不太影响阅读。 先睹为快的方法 按照README中提示,用Cargo安装几个依赖后,使用 mdbook build 可以指定语言编译成静态文件,试了下,mdbook serve 也支持添加MDBOOK_BOOK__LANGUAGE=zh-CN 得到中文版。注意需要使用zh-CN而不是zh或者cn 其他 发现Jetbrains发布的RustRover在Preview阶段,应该可以免费用,所以赶紧下载一个吧,还是那些熟悉的按键!
1 min read
MetalLB with OpenWRT

MetalLB with OpenWRT

主要参考这里:https://www.cnblogs.com/hahaha111122222/p/17223152.htm,下面记录一些和OpenWRT相关操作。 我用的stupidloud/nanopi-openwrtOpenWRT镜像,安装最新版slim版,但本地软件源中没有quagga,打开snapshot源后,也没有。。。发现release版中有,于是找了最近一个stable release,下载了这些packages: * quagga-bgpd_1.2.4-2_x86_64.ipk * quagga-vtysh_1.2.4-2_x86_64.ipk * quagga-zebra_1.2.4-2_x86_64.ipk * quagga-libzebra_1.2.4-2_x86_64.ipk * quagga-watchquagga_1.
2 min read
cloudflare帮助消除了8443端口
k8s

cloudflare帮助消除了8443端口

80和443不能用才改用的8080和8443 8080和8443的转发在openwrt中添加,转发给ingress-nginx即可。到此,如果你不嫌弃8080和8443端口出现在URL上,那就不用继续了,这样以及可以用了。 但如果还想去掉这可恶的自定义端口,则需要继续,让cloudflare帮忙。 一直在用cloudflare,但仅仅用来添加DNS,它的本源(CDN)和最近几年一直在上新的功能是一个都没用上。看了下cloudflare的功能,一开始觉得无法解决端口隐藏的功能,也就是说,虽然8443也是CF认可的https端口,也就是说,当你访问8443端口的时候,CF也会去original的8443端口获取数据,但并不能给隐藏啊。后来看到有人说可以加page rules直接转发,这样的话,确实可以,但最终还是不隐藏的状态,直到我看到这么多规则可以设置: 我看了下Origin Rules中写了可以rewrite port,于是添加了一条试试: 这条规则就是HTTPS的话,rewrite origin port to 8443,尝试了下,竟然就隐藏了端口。。。可以用了。 据说,
3 min read
咖啡记录 2023-04
coffee

咖啡记录 2023-04

4月初收到3款豆子,先主喝两款100g的。 * 100g 2023春季拼配 * 100g 印尼-霞光合作社曼特宁G1-湿刨法 * 35g 云南 凰关庄园 厌氧日晒卡蒂姆 4月中收到另外3款豆子 * 100g 埃塞-瑰夏村绿标-蜜处理 * 100g 埃塞-耶加雪菲沃卡-日晒 * 35g 危地马拉-圣菲丽莎酵母瑰夏-日晒 2023春季拼配 风味:橙汁、树莓、糖渍山楂 手冲建议:15g, 92c, 240g, 110s 首喝感受:没啥,风味也没喝出来。 喝完感受:没啥特别。就是银皮有点多,可以磨完后吹吹,抖一抖再吹两下。 印尼-霞光合作社曼特宁G1-湿刨法 风味:黑巧克力、普洱茶、香料 手冲建议:15g, 88c, 240g, 120s 首喝感受:风味不详;技术上比较容易成功,也就是说比较容易出现成功的标志,例如咖啡粉鼓起来,
2 min read
Cert-manager和nginx ingress
k8s

Cert-manager和nginx ingress

前几天收到letsencrypt邮件,提醒我有个域名的tls cert要过期了,看起来是后来没renew,所以就要过期了。 今天要摆弄一下blog,所以想不得不要接触一下nginx ingress,打算设定好一个域名后,让cloudflare做CDN,是不是就可以摆脱联通的端口限制了?不然的话,blog发布出去还得加一个8443端口才能访问到。 看nginx ingress的时候,就看到现有的app,发现是在使用的,但tls cert竟然不自动renew了,于是看到了cert-manager,运行似乎正常,但两个多月前重启过,也不造当时怎么了,我的k8s一般没啥用,也没啥监控,想起来可能会升级一下,其余时间吃灰,也就是最近,在上面加了netboot、influxdb、mqtt等应用,现在连blog都挪过来了。 看了下,找不到certificate资源了,各种namespace中找了下都没有,也不造当时发生什么,按理说用cert-manager得出现一个cert资源对应tls cert。 先升级吧,从1.8直接安装了1.11,因为看着1.8-1.9, 1.9-1.10, 1.10
2 min read