开启 IPv6 后遇到的奇怪现象

2023-05-09 13:57:43 +08:00
 peasant

光猫的 IPv6 WAN 信息获取方式
全局地址获取方式: 无状态自动配置
DHCP 启用前缀代理:√
NATv6 模式:不启用
LAN IPv6 配置
LAN 侧 DNS 获取方式:HGWProxy
LAN 侧前缀获取方式:WANDelegated

路由器 IPv6 联机类型:Passthrough

前两天用着感觉没啥问题,今天早上发现网络有点不太对劲,先是拨打别人微信视频一直连接失败,断开 WiFi 重连以后正常了。

下午发现 NAS 下载 IPv6 的种子 Peer 里没有出现 IPv6 的地址。查看了下 IPv6 地址还在,尝试重启路由器和光猫都不能让 IPv6 正常工作,尝试了很长一段时间发现一个奇怪的现象。

CentOS 系统和 NAS 获取到 IPv6 地址后使用 ping -6 或者 curl -6 都不能正常工作,换什么目标地址都不行,然后我在 CentOS 上使用 mtr -6,NAS 上使用 traceroute -6 连通目标主机以后 ping -6 和 curl -6 就能正常工作了,换个地址也同样能正常工作。

正常工作以后重启了光猫,机器上的 IPv6 地址就多了一个新的,旧的还在,这时候 IPv6 又不能正常访问了,重启网络服务可以让 IPv6 地址恢复成一个,但还是不能正常访问,只有执行 mtr -6 和 traceroute -6 这两台机器的 IPv6 网络才能恢复正常。

不清楚是什么原因造成的这种现象,也不知道该怎么解决,想到的简单粗暴的方法是这两台机器定时跑这两个命令或许可行?

4441 次点击
所在节点    宽带症候群
20 条回复
cnbatch
2023-05-09 14:17:48 +08:00
会不会又是经典的“光猫防火墙默认阻止 IPv6 主动入站”,先关掉试试
peasant
2023-05-09 14:20:28 +08:00
@cnbatch 不是入站问题,是我访问不了外网
xPKK1qofAr6RR09O
2023-05-09 14:48:14 +08:00
多个 ip 不能用是普遍存在的,单 ip 还不能用没遇到过
cnbatch
2023-05-09 15:01:28 +08:00
排除法,先排除掉光猫。
如果换成路由器接管呢?(比如路由器拨号)
ozOGen
2023-05-09 15:32:29 +08:00
看起来是 lifetime 和 preferred timeout 的问题,不过看设置项貌似是 asuswrt 的系统,不记得有没有地方可以设置了
lcdtyph
2023-05-09 15:41:33 +08:00
路由器上的联机类型改成 native
passthrough 我没理解错的话是中继模式,问题很多
acbot
2023-05-09 16:45:27 +08:00
短时间重启光猫,上一个无状态配置的 ipv6 lifetime 还没到而新的通告又来了, 所以同时存在两个优先级一样的地址问题就出现了,等旧的 ipv6 lifetime 到了正常了! 你这个情况应该是电脑的网卡和光猫之间不是直连中间还有其他设备(比如:交换机)造成电脑的网卡没有断开重连的过程,只要有这个重连的过程系统都能正常清空以前的地址
cnbatch
2023-05-09 18:18:49 +08:00
@ozOGen 我以前就用华硕路由器来 PPPoE 拨号,IPv6 也是用 Passthrough ,只不过是 WAN 侧 Passthrough 过来。在 Passthrough 状态下,lifetime 这块是没法设置的。一旦在 IPv6 页面选了 Passthrough ,那么该页面的其它选项就会全部消失,什么都不能设置。

于是我就换成了软路由。

不知道 OP 家的网络设备是什么样的,如果也是这样的话,那就没法在路由器上面解决了( Passthrough 状态下不能,除非换成其它选项)
jsq2627
2023-05-09 19:23:02 +08:00
这也是 ipv6 常见问题了。
路由器通过通过 RA 通告广播 IPv6 前缀。
原因就是 7 楼说的,断电重启光猫,旧的 RA 通告还没过期,新的 RA 通告又来了,如果系统没有检测到断网,那就会同时认为这两个地址都有效,而 Windows 在网络通信时候会使用最老的有效 IPv6 地址,导致无网络。

解决办法:如果是光猫拨号,就避免光猫断电硬重启。如果是路由器拨号,那就避免路由器硬重启。慎用光猫 /路由器的定时重启功能。
一部分路由器支持在软重启前(在后台点“重启”按钮,或者定时重启)通告旧前缀无效。但是大部分路由器应该是不支持的,典型如 OpenWRT ( odhcpd )。
cnbatch
2023-05-09 19:29:28 +08:00
@jsq2627 OP 用的似乎不是 Windows ( CentOS 肯定不是; NAS 大概率也不是)
jsq2627
2023-05-09 19:31:37 +08:00
@cnbatch 我当时是 Windows 遇到这个问题,但是装在 VM 里的 Arch 反而会能够使用最新的地址,不会断网。所以对于 Linux 我不敢判断 😂
jsq2627
2023-05-09 19:34:16 +08:00
@cnbatch 我就是在 OpenWRT 下遇到了这个问题,翻出 odhcpd 代码看了半天,反复确认在重启的时候不会通告 prefix deprecated ,这是问题根源。(但重新 PPPoE 拨号时就能正确宣告旧地址 deprecated )
cnbatch
2023-05-09 19:40:15 +08:00
@jsq2627 不同的路由、甚至不同的软路由都对 IPv6 支持得各不相同,这确实十分头大😓
zent00
2023-05-09 19:47:02 +08:00
我发现有相当一部分人说的 IPv6 的问题都是这两个问题:

https://www.v2ex.com/t/800024
https://www.v2ex.com/t/829436
villa2935
2023-05-10 05:39:17 +08:00
是不是掉线从连没更新前缀?
letmefly
2023-05-10 07:37:11 +08:00
我用的 er-x 路由器也遇到这个问题,从自带的固件刷到 openwrt 都有这个问题,一段时间后 lan 口下的设备就没法通过 ipv6 上网了。
x2009again
2023-05-10 09:04:27 +08:00
我用联通时也有多 ipv6 的问题,但是有 deprecated ,所以不影响上网,换成电信后 ipv6 固定了,重启路由客户端 ipv6 也不会变化,不过路由的 ipv6 是会变化的,和 ipv4 相差 3 秒左右更新
peasant
2023-05-10 09:19:08 +08:00
@acbot 昨晚回去尝试了一下,确信拔网线和重启路由器都不会让 CentOS 清除之前的 IPv6 路由,Windows 断开 WiFi 重连确实没有看到还有之前的 IPv6 路由,最后在 NetworkManager 下面加了个钩子,断开网络的时候清空 IPv6 路由表。只要重启网络服务就能正常了,NAS 没找到重启网络服务的方法,暂时先这样吧。
acbot
2023-05-10 09:42:34 +08:00
@peasant 拔网线和重启路由器...改变端口状态这个就是针对 Windows 说的,Linux 可以禁用 NetworkManager 使用 Network 服务 试试看,我记得这两中方式效果不同,由于要指定后缀和隐私模式的情况所以我也使用了 NetworkManager 遇到这样的情况要不等,要不重启网络服务!
huaxie1988
2023-05-13 16:43:47 +08:00
@jsq2627 openwrt 重启前缀问题我自己解决了,可以通过在关机停止 odhcpd 前关掉 wan 口解决,在 init.d 目录新建个文件,例如 wandown ,内容如下

#!/bin/sh /etc/rc.common

STOP=80

USE_PROCD=1

stop_service() {
ifdown wan
sleep 1
}

然后给该文件加上运行权限
chmod +x /etc/init.d/wandown
允许该脚本
/etc/init.d/wandown enable
然后关闭 odhcpd 前 wan 口会先被关闭,odhcpd 就会发 preferred_lifetime 为 0 的 ra 给下方设备让 ip 前缀失效。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/938587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX