最近家里 IPv6 突然上不了了,具体描述如下:
环境:
简要概述问题:在同一子网下,部分设备能 IPv6 联网,部分不行,查问题是路由器没有回应不能联网的设备的 NS 包。
问题描述:
求教大佬,能帮忙分析一下这是怎么回事么,若能解答,万分感谢!
图 1 目前家庭网 ULA 地址邻居情况:
图 2 目前家庭网全球单播地址邻居情况:
图 3 目前服务器网全球单播地址邻居情况:
图 4 抓包情况:可以看到,局域网内设备连续发送了多次 NS 信息,但路由器都没有回应:
经过了213天,最近有时间研究了一下这个问题,终于解决了。回来更新下
经过排查不是TP-LINK交换机的问题(错怪它了,抱歉抱歉),而是路由器的问题。
之前的网络拓扑是这样的:
OpenWRT (eth1) ----- (port8) TL-SG2008 (port1) ----- AP
OpenWRT (eth2) ----- PC(10.0.0.0/8)
OpenWRT设置了两个LAN,一个称为HOME,一个称为PC
OpenWRT配置的端口如下:
HOME ( eth1.101, eth2.101 ) # eth1.101表示端口eth1, vlan101
PC ( eth2, eth3, eth4 )
这种做法其实并不正确,事实上来自eth1.101的数据进入eth1.101后会由eth2剥离vlan tag再发出去(也许是OpenWRT的特性?),导致两个LAN连在一起了。(事实上可配置eth1的行为,使其不发出带tag的包,不过那有点复杂,感兴趣的可以自己找找)
事实上,在PC网内的电脑也因为开启了STP,五分钟断一次网,系统日志:
vmbr0: received packet on eno1 with own address as source address (addr:xxxxxxxx, vlan:0)
同样地,对于部分IPv6联网设备,需要发送NS等消息才能正确配置地址,但是因为两个子网连起来了,设备发送NS后可能收到多个应答。有些设备选择忽略后到的应答而配置成功,有些设备就会因为收到多个应答而配置失败。(正如一个局域网内部署了两个DHCP服务器,二者产生冲突)
所以最好的解决方案是,如果不需要,删掉HOME里面的eth2.101接口
HOME ( eth1.101 )
PC ( eth2, eth3, eth4 )
如果需要在eth2访问HOME,那么更改PC接口:
HOME ( eth1.101, eth2.101 )
PC ( eth2.100, eth3, eth4 ) # 但是同时需要配置PC网内的主机
最后一条附言,说一下其他注意事项吧。
使用旧版带IGMP功能的交换机,在应用IPv6时,一定要关闭“IGMP嗅探”和“Report报文抑制”功能。因为IPv6 NDP协议使用的是组播,不同于IPv4 ARP协议使用广播。所以一些旧的交换机可能会把IPv6的组播数据当成IGMP协议处理,最后因无法处理而丢弃报文。
开关“IGMP嗅探”这些功能时,效果可能不是很显著,因为要等交换机的MAC表超时才能进行新一轮的转发,也就是说,关了“IGMP嗅探”后要耐心等待一会儿才能有现象。一般交换机默认超时是5分钟,如果不想等也可以直接重启机器。
还有一点需要注意,在使用像TP-LINK这种家庭级的WiFi产品,将其作为AP使用时,也要把IPv6模式配置成“桥模式”,亲测如果不是“桥模式”,貌似会直接关闭网口的IPv6转发功能,导致连IPv6地址都获取不到,但无线设备不受影响。(也可能是因为我买的这款型号带有WAN盲插功能,为了避免冲突,没有配置的情况下便关闭了IPv6转发)
1
bigghost 2021-01-27 06:34:14 +08:00
请教,正常下,是通过 slacc 还是 dhcpv6,获得地址?谢谢
|
2
journeydove OP @bigghost 一般家用情况下还是使用 SLAAC,如果要用 PD 给下级路由分地址的话还是得 DHCPv6
|