提供一个无法获得 IPv6 前缀的可能原因,但是暂时无解。
宽带运营商最近割接,原来使用 HW 的接入,割接之后使用中兴的 v6000 (虚拟化的) 路由器:Mikrotik RB4011 ,Ros 7.11 ,光猫桥接。
割接之前一切正常,可以获得/56 前缀,割接之后无法获得前缀。
报障之后运维不懂(但是态度良好),一层一层向上反应,估计是到了中心机房,机房运维了解到之后表示“不可能”。 遂抓了账号的 log ,发现已经分配了两个/56 前缀和一个/64 地址(为啥这样后面说)。
本地依然看不到前缀,一直是 searching...状态。
配合机房运维抓包(机房抓 debug 信息,我在以太网口抓包): 机房运维依然能看到响应了 DHCPv6 ,我这边依然看不到前缀。 看了一下包,发现 ROS 发了 solicit ,机房回复了 reply (含 IA 和前缀),ROS 又发了一次 solicit ,机房再次回复 relay (含有不同的 IA 和前缀). ROS 再发 solicit 收到的回复就都是 no prefix available 了。
打开 ROS logging debug dhcp ,看到 ROS 收到 replay 之后报错“bad server DUID". 发现运营商 replay 包中的所有 server DUID 都是 6660 ,type unknown.
于是就破案了...ROS 因为上端设备回复的 server DUID ”不规范“ 没有处理包信息,丢弃了.......
于是乎解释了为什么机房运维看到其他用户都分了一个/56 前缀,而我分配了两个。 于是乎解释了为什么割接之后得不到前缀? 因为之前 HW 设备是硬件设备,使用 LLT 方式生成 server DUID ,这样保证了一定是有效的 DUID 。
看到了另一个网上的帖子,发现这不是个例。( https://www.77bx.com/358.html )
但是 ROS 因为 server DUID 或者 server DUID type 触发 bad server DUID 未知,已经发邮件给 Mikrotik 要求澄清。
查阅 RFC 8415 ( https://datatracker.ietf.org/doc/html/rfc8415#section-11), 其中的表述是:
Clients and servers MUST NOT restrict DUIDs to the types defined in this document, as additional DUID types may be defined in the future.
目前不确定是 ROS 还是中兴在实施 IPV6 协议过程没有完全遵守 RFC8415.
帖子意在与给各位获取不到 prefix 的伙伴提供一个新的思路。 部分设备对于 server DUID 不校验,所以不受这个问题的影响(如 openWRT 和电信自己的光猫) 感谢之前提到的帖子的作者,我给他发了邮件通报了我目前的排故过程和进展。
peace.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.