求助关于 ros v7 获取不了 ipv6 前缀的问题

321 天前
 OLOrz1984

成都电信。光猫拨号 or ikuai 均正常。
使用 ros 配置 dhcpv6 client 获取 v6 前缀时卡 searching ,不能 bound 。
debug 日志显示,每个端口前两次可以获取到 prefix ,但是最后都会报错提示 “bad server DUID”。两次之后便提示“NOPREFIXAVAIL”。
之前有在恩山看到类似的问题,但是似乎也没有解决。

3124 次点击
所在节点    宽带症候群
28 条回复
patrickyoung
321 天前
1. log 那里 topic: dhcp, dest: memory ,打一下 ros 的 dhcp 包看一下
2. RFC3633: https://datatracker.ietf.org/doc/html/rfc3633

> The requesting router subnets the delegated prefix and assigns the
longer prefixes to links in the subscriber's network. In a typical
scenario based on the network shown in Figure 1, the requesting
router subnets a single delegated /48 prefix into /64 prefixes and
assigns one /64 prefix to each of the links in the subscriber
network.
> An IA_PD is a construct through which a delegating router and a
requesting router can identify, group and manage a set of related
IPv6 prefixes.

成都电信我没记错只给了 /64 ,我现在换了其他运营商了,印象中 PD 是不能继续再分了。

供参考。
OLOrz1984
321 天前
@patrickyoung https://gist.github.com/OLOrz996/a1ab135b6c92e87575d1ef10d1c6b4c6 ,这个上午就打出来了,有获取到 prefix ,但是最后还是报错了
raysonx
321 天前
先说结论,OP 所使用的当地运营商的 DHCPv6 服务器返回的消息格式存在 bug 。

按照 DHCPv6 的规范,服务器和客户端的 DUID 的组成格式为:2 个字节的 type code ,外加 1-128 字节可变长度的 identifier
(见 https://datatracker.ietf.org/doc/html/rfc8415#section-11 )。

而 OP 给出的日志:
10:28:29 dhcp,debug,packet -> clientid: 00030001 0050568c 5e2f
10:28:29 dhcp,debug,packet -> serverid: 6660

客户端( RouterOS )的 DUID 是 00030001 0050568c 5e2f ,服务端的 DUID 是 6660 。
按照规范解读,客户端的 type code 是 0003 (DUID-LL),hardware type 是 0001 ,后面的 0050568c 5e2f 是 link-layer 地址。
而服务端给的 DUID 是 6660 ,这只能解读为 type code 是 6660 ( RFC 中没有定义,应该是乱填的),然后没了。按照 RFC 的规定后面还要跟 1-128 字节的 identifier 。

所以结论就是,你的运营商的 DHCPv6 服务器响应的消息里 Server DUID 是乱填的(不知道谁开发服务器连 RFC 都不遵守),连长度都不对。RouterOS 报错且忽视了服务器的回应。

根本的解决方法是让运营商修服务器(可能性太低)或者换运营商。但我建议提出向 RouterOS 提一个 bug 吧,让 RouterOS 忽略这个错误就行了。
neroxps
320 天前
# 允许 DHCPv6 客户端尝试前缀代理
/ipv6 firewall filter add action=accept chain=input \
comment="Accept DHCPv6 client prefix delegation" \
dst-port=546 protocol=udp src-address=fe80::/10

先确认 ipv6 dhcp client 端口在防火墙那边 input 是允许先吧。
OLOrz
320 天前
@raysonx 感谢,看来全国电信都是这样的问题……之前看见有人发上海电信的 duid 也是 6660

@neroxps 和这个无关哈,我 v6 防火墙没有任何规则,是裸奔的
KexyBiscuit
320 天前
@OLOrz 并不是,我这上海电信是 serverid: 00010006 7355b278 (link-layer address redacted),符合规范
OLOrz
320 天前
@KexyBiscuit 我是看到恩山这个帖子的,截图里也是 6660
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8278390
KexyBiscuit
320 天前
@OLOrz 看来不同 BRAS 情况还不一样,可能是新采购的设备有问题?
OLOrz
320 天前
@KexyBiscuit 也有可能,不过我已经联系装维了,但是感觉找他们也没用。目前不知道该从什么渠道去问问
letmefly
319 天前
估计 op 是用软路由,既然如此,为什么不用 CHR6.48.7 Long-term 版本?免费的正版,bug 还少。
Waffle
319 天前
@letmefly CHR 免费授权是限速到 1Mbps 的吧,现在不一样了么?

官网: https://help.mikrotik.com/docs/display/ROS/Cloud+Hosted+Router%2C+CHR#CloudHostedRouter,CHR-Freelicenses
letmefly
319 天前
@Waffle 不会啊,一直能用。你不理它,它会每天给你续命的,或者你可以重新生成 ID ,再来 2 个月的免费授权。
letmefly
319 天前
哦,你说的免费限速到 1Mbps 只是在你激活之前,例如你用 p1 授权到期了,它不会回到重新限速 1Mbps 的。
jcxq5200
319 天前
我之前 7.2 获取 ipv6 没有问题,但是我把 IPv6 关了。近期成都电信升级新型城域网,我 ros 也升级到了 7.10 ,打算在 ros 里开启 ipv6 结果和楼主一样的情况。
OLOrz1984
318 天前
@jcxq5200 要是有解决办法了麻烦给说一声哈
raysonx
317 天前
不知道 OP 所使用的 ROS 具体版本和硬件是什么,可以试试给 MikroTik 提一 bug 让其对 Server DUID
的检查不要那么严格: https://help.mikrotik.com/servicedesk/servicedesk/customer/portal/1
或者我来代为提交 bug 也可以,不过 MikroTik 对个人用户提的 bug 响应时间很慢就是了。
dfly0603
317 天前
我觉得应该让运营商那边修复这个问题,ROS 这边改的话总觉得很奇怪……
OLOrz1984
316 天前
@raysonx 感谢,如果有空的话就麻烦帮忙提个 bug 吧,随缘处理了。反正我也给装维反馈了,但是感觉用处不大。
OLOrz1984
307 天前
最新情况:
1. 给 mikrotik 反馈了,目前没有响应。https://help.mikrotik.com/servicedesk/servicedesk/customer/portal/1/SUP-120873
2. 也给电信反馈了问题,但目前刚流转到分公司装维那里,说帮我反馈给后台。
OLOrz1984
307 天前
再次更新情况
我描述的问题:
https://sm.ms/image/fOLrcimdnuaRENW
电信的回复:
https://sm.ms/image/YJ6VlxT1Edrp8jD
响应很快,但是看起来电信并没有关注 server id 的问题,只是草草检查了一下……果然不能抱有太高的期望……

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

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

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

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

© 2021 V2EX