我飞牛使用公网访问方案是ipv6 + ddns-go。
这个方案免费、好用、方便,而且非常稳定,只是有那么一点点小问题,每次碰到这个bug都需要人工介入处理;因为这个小问题
出现的概率很低,所以之前也一直没当回事,大不了这小概率事件真的发生的时候,手动调整一下,也花不了几分钟。
具体表现就是:
- 出现了2~3个公网ipv6地址
- 只有最新的那个ipv6地址才是有效的
- 旧的ipv6地址会一直保留直到它的valid_lft有效生命周期结束
原因是宽带定期(?不定期)pppoe重播,导致不断分配新的公网ipv6地址,但旧的公网ipv6地址并没有被主动弃用/注销,所以出现了多个公网ipv6地址共存、但只有最新的那个公网ipv6地址有效的情况。知道原因以后,找解决方案就很简单,只需要动态获取最新的那个公网ipv6地址
即可。
ddns-go获取ipv6地址有三种方式:
- 根据接口
- 根据网卡
- 根据命令
第一个方式在出现多个公网ipv6地址的时候会gg,表现就是访问不到接口,导致无法获取ipv6地址。第二个方式只支持最简单的用@1@2@3
来指定使用第1、2、3个ipv6地址,如果最多只出现2个ipv6地址的话可以用@2
,但如果出现3个ipv6地址,就搞不定了。
所以只有第三个方式了,用命令在动态选择最新的那个ip6v地址。
查看了多个issue以后,还是刚刚提到的这个帖子:#872 希望ipv6地址获取可以根据valid_lft或preferred_lft排序选择,有人提供了自己写的命令。
ip addr show|grep -v deprecated|grep -A1 'inet6 [^f:]'|grep -v ^--|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;Ta'|sort -nr|head -n1|cut -d' ' -f2
感谢这位网友提供的命令,实测有效。
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。