解决RouterOS v7使用SLAAC进行ipv6自动配置时地址失效的问题

分类:技术备忘 阅读:3807 评论:0
一直在使用Mikrotik的路由器,用了RB750Gr2, RB750Gr3和RB3011,自从电信开始下发ipv6地址之后,在RouterOS中用SLAAC方式,让内网终端在路由器获取电信ipv6 prefix的基础上,通过无状态地址自动配置生成自己的ipv6地址。

RouterOS版本为v6时正常,升级到v7后,发现windows, android和linux都出现问题,具体表现就是有时候各类终端能正常获取ipv6地址,有些时候又不能,只有本地fe80地址,从路由器ipv6前缀自动配置生成的ipv6地址会消失,导致ipv6网络失效

至今的v7版本也还有这个问题,只好多次回滚降级到v6。直到最近用了RB5009,这个硬件不支持v6,这个问题又开始困扰。

一直以为是防火墙策略、ipv6参数等问题导致,断断续续摸索了1个多月都没能解决。

最后在https://www.cisco.com/c/en/us/support/docs/ip/ip-version-6-ipv6/213272-troubleshoot-ipv6-dynamic-address-assign.html学习了SLAAC的基本过程,用Wireshark抓包发现(过滤:icmpv6.type == 133 or icmpv6.type == 134 or dhcpv6),正常情况下终端通过icmpv6 type133的Router Solicitation(RS)报文宣告自己,然后路由器响应icmpv6 type134的Router Advertisement(RA)报文宣告ipv6 prefix。出现问题的时候,终端发出了RS报文,但是路由器没有响应RA报文,导致不正常。

红框为正常情况,发出RS后响应RA;出问题就是只有RS,没有RA:
点击看大图

RS报文详情:
点击看大图

RA报文详情:
点击看大图


最后通过一些关键字在Mikrotik论坛找到答案https://forum.mikrotik.com/viewtopic.php?p=797048,原因是v7的IGMP snooping 和IPv6存在冲突,在开启IGMP snooping时ipv6的组播包可能被丢弃。

在RouterOS v7的Bridge中,将ipv6 nd对应接口所属的bridge的IGMP Snooping关闭,恢复都正常!!!


---------2022-02-25补充---------
1、论坛友人反馈,可以在开启IGMP Snooping时再开启Multicast Querier,或者在Bridge对应的Port中关闭L2 hardware offloading。

2、又根据官方介绍Multicast Querier只能处理不带vlan tag的报文。如果开启vlan,需要安装固件的扩展包multicast package。但是ROSv7没有这个扩展包,理论上已经集成到主固件里面了,那就还是有问题。

我是开启了vlan的,所以暂时没折腾,以上供参考。


发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。