这个 ipv6 问题真折磨,大佬帮我分析下

333 天前
 FaiChou

上一个帖子IPv6 没问题,但夜间看不了 ipv6 源的电视

今天查看了一下问题,应该是 OpenWRT ipv6 的问题。具体表现在,每天凌晨一点多 OpenWRT 会执行自动重启,到白天 ipv6 都是 work 的,到了晚上连接它的客户端就无法访问 ipv6 地址了。研究了一会,发现重新连接一下 WAN6 这个网口(DHCPv6)后,就可以恢复正常,也就是用命令 (ifdown WAN6 && ifup WAN6)。

在出问题的时候,客户端(手机)无法观看 IPV6 源的电视,电脑( macOS )使用命令执行ping6 2409:8087:1e03:21::2 无响应; 但是 ssh 进 OpenWRT 后执行 ping6 都是正常的。使用 traceroute6 命令也是一样,客户端(macOS)执行后只有一条 1 2408:8224:f27:cc71::1 4.568 ms 4.953 ms 3.863 ms, 但在 OW 内部则是正常有跳转的。

即使出问题的时候,macOS 也是有 ipv6 地址的:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6460<TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 51:ed:3d:03:02:0c
	inet6 fe80::1c00:7578:921:68c1%en0 prefixlen 64 secured scopeid 0xc
	inet6 2408:8224:f27:cc71:cfd:83f:84d8:2748 prefixlen 64 autoconf secured
	inet6 2408:8224:f27:cc71:740e:450:7753:f472 prefixlen 64 autoconf temporary
	inet 192.168.11.109 netmask 0xffffff00 broadcast 192.168.11.255
	inet6 2408:8224:f27:cc71::ea1 prefixlen 64 dynamic
	inet6 fd72:53a3:521f:4e91:1003:46e:4ce2:710a prefixlen 64 autoconf secured

使用 netstat -nr -f inet6 查看路由表也是没有用信息。

仅仅重启了 WAN6 这个网口,没有重启 ipv4 的网口,防火墙也没有改变,所以应该不是防火墙问题。

重启过路由器,也是没有影响。开关过 OpenClash ,也没影响。

难道是租约到期了?但我不知道如何排查租约问题。不能每次挂掉后再登录 OW 重新连接 WAN6 吧。

3729 次点击
所在节点    宽带症候群
33 条回复
keegan
332 天前
试试这个?打开通告,感觉可能有用
```
echo "net.ipv6.conf.default.accept_ra=2" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.accept_ra=2" >> /etc/sysctl.conf
```
ac169
332 天前
@FaiChou 你说的仅仅是 DHCPv6 流程, SLAAC 不是这样的!

SLAAC 是系统根据 RA 消息中的前缀 和 各种 lefttime 参数 自己生成和维护地址(包括阴私扩展的临时地址), 生成之后地址是否可用 (比如: 是否重复) 路由是否可用等维护都是通过一定周期不断的收发 icmpv6 包来维护的.

当最大 lefttime 快到期了,又没有收到新 ra 消息,现在地址就会失效 (直接变没) 这个操作都是系统自己完成的

当重新拨号或者是上游更新了网关(或者说 slaac 服务端)会发送一个上一个前缀和 各种 lefttime 为零 RA 消息, 系统收到后就会让旧地址失效.


另外,在 3# 中提到 uci get dhcp.lan.ra 这里说的并不严谨, 因为他不代表 dhcpv6 是关闭的,个人建议只使用 slaac 模式禁用掉 dhcpv6 ( uci get dhcp.lan.dhcpv6 值是否为空或 disable)


这个就是我的经验了,后续的只能你自己研究,实际环境还是有差别.
xpn282
331 天前
@sangmingming
你给设备开了 v6 ,你就要用代理工具接管 v6 ,不然代理工具只处理 v4 而不处理 v6 ,那你翻墙绝对会出问题

另:旁路由(旁网关)好像不会处理设备的 v6 ,因为设备只是把 v4 的网关指向旁路由而已,v6 好像没过旁,所以开了旁,设备又使用 v6 的话,大概率翻墙有问题
sangmingming
331 天前
@xpn282    现在就是旁路由,还没找到怎么设置 v6 的网关。
pagxir
330 天前
@sangmingming 修改一下旁路由的 radvd.conf 配置,将路由的 priority 修改成 high 。不过如果你主路由广播 ipv6 的 DNS 估计解析还会有问题,不过如果是 android 机器的话,可以在你旁路由打开 DOT 支持,并将手机的 private DNS 设置成自动。 至于 ios ,怎么打开自动 DOT ,就不清楚了,因为我没有 ios 设备。
xdzhang
329 天前
v6 开了之后不要分配 v6 的 dns 给局域网的设备,或者把 v6 的解析劫持到你自己用来防污染的 dns 上,要不大概率代理不了,直接给你返回 AAAA ,到时候 v4 的代理用不了的。
veSir
329 天前
之前也有同样问题, 更新 OpenWrt 版本后已解决.
Franzx
325 天前
同样的问题,同时观察到 WAN6 在正常的时候是有一个/ 128 的 ipv6 和一个/ 60 的 ipv6-PD ,LAN 口会使用这个 PD 给下游设备。当运营商玄学更换 ipv6 (或者手动重启光猫)后 WAN6 口新获取到的是/ 64 的 ipv6 ,同时旧的/ 128 和/ 60PD 也还在,结果就是下游设备 ipv6 全部失效断网。WAN6 口新获取 ipv6 时甚至获取到的 ipv6 的 DNS 都会和旧的一起重复显示,哪怕新旧 DNS 是一样的。
shomaru
321 天前
接口-全局-IPv6 ULA 前缀 删掉
yyysuo
320 天前
这题目我会啊,最近刚刚解决的,楼主的猜想是正确的,就是租期的问题,是临时 ipv6 地址租期的问题。解决的办法就是用 SLAAC ,不用 dhcpv6 ,同时取消 ipv6 格式的 dns 的下发,解决步骤如下:
1:lan 口 dhcp 服务器设置中,路由通告服务-服务器模式,dhcpv6-已禁用,NDP 代理-已禁用,取消通告的 dns 服务器。
2:删除 ipv6 ula 前缀。
3:删除所有固定 IP 地址分配的租期(如果之前有指定),dhcp 中的 ipv4 租期默认为 30m
4:修改/etc/config/dhcp 文件,在 lan 部分,添加或者修改如下项目,自己删除#及注释
option ra_dns '0' #不下发 ipv6 格式 dns
option ra_useleasetime '1' #ipv6 地址使用 ipv4 的租期
option preferred_lifetime '30m' #preferred lifetime30 分钟
option leasetime '30m' #租期 30 分钟

完整的 lan 参考:
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option force '1'
option ra 'server'
option ra_dns '0'
list dhcp_option '6,10.10.10.1'
option ra_default '1'
option ra_useleasetime '1'
option preferred_lifetime '30m'
option leasetime '30m'
FaiChou
320 天前
@shomaru 是空的。
yyysuo
320 天前
再补充一下,如果不改路由配置,连接不上的时候,重启一下 ap 或者断开重连一下 wifi ,一般就能连接了。我猜想你用的 ipv6 源是网上流行的那个吧,高峰时候,有时候也是卡。
yjzll
217 天前
ip6tables -I zone_lan_input -p udp --sport 546 --dport 547 -j ACCEPT

解决 DHCPv6 续约的 icmpv6 通讯,lan 侧到路由器本身。此消息经过中继后再传到上级光猫。
过程:Solicit---Advertise---Request---Reply
PC 端口 546 ,发送请求 Solicit 至,路由器本身[ff02::1:2]:547 端口
路由器本身 546 端口,中继到,光猫 547 端口
光猫 547 端口,回应一个 Advertise 给,路由器 546 端口
路由器本身 547 端口,中继到,PC 端口 546
PC 端口 546 ,回应一个 Request 给路由器 547 端口
路由器本身 546 端口,中继到,光猫 547 端口
光猫 547 端口,回应一个 Reply 给,路由器 546 端口结束。

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

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

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

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

© 2021 V2EX