电信某些 ONT 的 6in4 奇特问题( IPv6 链路能 ping 通,却无法正常访问网页)解决

2017-09-11 11:21:11 +08:00
 MWKPON
具体现象是设置了 ONT (光猫)为桥接,家用路由器(刷了自定义固件,如 OpenWRT, Tomato 等)上拨号得到公网 IP 并使用 HE.NET 的 6in4 隧道,家用路由器里的设备可以获取到 IPv6 地址并 ping 通 ipv6.google.com ,但是浏览器访问却像卡住一样,等几十分钟都没办法打开网页。

许多类似的情况:
https://www.chiphell.com/thread-1722770-1-1.html
https://www.v2ex.com/t/366940
https://www.v2ex.com/t/362099#r_4379391
@sengxian @Sjmr

进一步测试
1、正如 @Sjmr 说的,ONT 调试日志里打印一堆
kernel: ^[[0;33;41m[ERROR pktrunner] add_fwd_commands,519: Unable to determine if the flow is routed/bridged (519)^[[0m

2、确认与隧道 MTU 无关,从 1280 修改到默认 1480 都无效。

3、更为奇特的是,用 http://test-ipv6.com 测试,居然网络得分是 10/10,也就是 IPv6 是通的,点击“测试数据”“技术信息”,里面的“ IPv6 大封包测试”,浏览器居然可以访问里面的 URL ;可是“其他 IPv6 网站”测试,除了少数网站可以测试通过(但是响应速度极慢),列表中的多数都测试是无法访问(一直是等待响应状态)。

之前一直不怀疑 ONT 的原因是,已经设置成桥接了,并且 6in4 是打包 IPv6 数据包到 IPv4 中,只要 v4 通,v6 就应该通的,并且还确实 ping 通了。但这样测试下来,现在只能怀疑 ONT 有问题了。

正好手头有几个 ONT,换来测试,发现问题果然是在 ONT 上。
出问题的:悦 me TEWA-600 (千兆 LAN 口,电信定制界面固件);
没问题的:中兴 F460 (百兆 LAN 口,电信定制界面固件)、华为 HG8245H (用 HG8245C2 改,千兆 LAN 口,非电信定制界面固件)。

结论:某些 ONT 应该使用了不标准的(或者未经充分测试的)实现,导致 6in4 出这样问题。解决办法:换!

延伸探讨:到底是 ONT 里的软件没写好,还是和硬件也有关系?换句话说,厂家如果更新固件,是否能解决?相应的,悦 me 也有华为、中兴产的(看起来都是电信定制的软件界面,和其他厂家的一样),是否就没这个问题(因为手头没有找到足够的设备,无法验证)?
这些出问题的 ONT,设置界面都提供了 IPv6 选项(当然,没出问题的,也有 IPv6 选项),难道用原生的就没问题?所以厂家没充分测试?
桥接下,直接 PPPoE 下,还能影响应用层面的数据传递,底层原因究竟是什么?
6221 次点击
所在节点    宽带症候群
32 条回复
flyfishcn
2017-09-11 12:30:07 +08:00
也许是光猫把封装的数据解封装了。猜的。我这也有个骨骼清奇的友华悦 me 网关,6in4 隧道建立起来都没有问题,但是随便哪怕走 1Kb 的数据,光猫 pon 状态直接掉,然后再也无法注册。除非重启光猫。
zro
2017-09-11 12:49:16 +08:00
难道就我一个人觉得,GFW 已经可以干扰 6in4 了?

LEDE/OpenWRT 配置 6in4 一直用了好几年,特殊域名都是通过 [省略::8888] 来查询,但今年前几个月开始,用这个::8888 来查特殊域名,也是卡好久,用 nslookup 排查出来居然是得到了污染结果 ,目前换成其他的才正常
MWKPON
2017-09-11 12:56:37 +08:00
@flyfishcn 问题是这是桥接模式呀,桥接后需拨号,难道连 PPPoE 的包也解了?解来做什么……岂不是把简单的二层数据复杂化到应用层了?
MWKPON
2017-09-11 13:00:03 +08:00
@zro 这个不好说,还可能会是运营商把 8888 的路由做到了自己的网内。
flyfishcn
2017-09-11 13:02:08 +08:00
@MWKPON 具体原因不清楚,但是确实是有这样的可能性的。
LGA1150
2017-09-11 13:04:20 +08:00
@zro 早就可以了
zro
2017-09-11 13:09:24 +08:00
@MWKPON #4 [捂脸]我那个::8888 是指 2001:4860:4860::8888,都已经用 IPv6 来访问了,本来就没本地 ISP 啥事了,要做成网内也是 v6 服务器那头的 ISP 做
MWKPON
2017-09-11 13:12:38 +08:00
@flyfishcn 还是固件问题可能性比较大……说不定这几个厂家都用了同一个“公版方案”做出来的固件。搜了一下,出问题的都是这种之前没怎么听过厂家,很是奇特。
MWKPON
2017-09-11 13:16:45 +08:00
@zro 一样的,DNS UDP 响应可以抢答,可以修改返回的数据,不管你是 v6 还是 v4 地址……运营商这么做,是“好心”,怕你用了其它 DNS 解析出来的地址不是它网内的,网速慢又还要多出网间结算费用。连很多家用路由器的自定义固件都可以设置,是否强制指定 DNS 为某个地址,而不管设备端如何更改 DNS 配置。
xinglp
2017-09-11 13:58:57 +08:00
有没有可能是 GFW 开始把一部分功能挪到用户这边了,比如 yunos 和一些浏览器就无法起飞。

如果不是刻意搞,怎么可能影响到桥接呢
MWKPON
2017-09-11 14:43:14 +08:00
@zro 又查了一下 6in4 的实现协议,好像还必须解包 41 号协议,才能实现改隧道里的 v6 包,难道你那边的的线路中的某些设备已经可以做 41 号协议解包修改了?
MWKPON
2017-09-11 14:44:22 +08:00
@xinglp 这个太容易被更换了吧,用户端设备谁都可以换掉,还不如原来的分光呢。
zwy100e72
2017-09-11 15:14:36 +08:00
之前来了兴趣,抓包看了一下 PPPoE 的包,看到 PPPoE 真的只是在 Ethernet 层上上了个 PPP,然后就又是 Ethernet。所以只要不加密 无论前置多少层,最后一层该是 DNS 还是 DNS ;想伪造数据包也只需要把所有的 Over head 复制一遍就行。
6in4 和这个道理一样,不加密链路上一样看光光;很有可能是你遇到的这个实现只看后几层,前面的 IP 头被丢弃了
MWKPON
2017-09-11 16:03:22 +08:00
@zwy100e72 确实如此,但作为 ONT,感觉既然设置成了桥接,就不应该去管 PPP 包的内容才对。除非要做应用层替换,不然这个开发意义在哪里?除非……
redsonic
2017-09-11 17:28:28 +08:00
@MWKPON 桥接模式下你可以到光猫里面看下 cat /proc/net/br_pppoe_list ,这个不是 broadcom 实现的就是厂家实现的。 另外我的烽火光猫走 he 没有 kernel: ^[[0;33;41m[ERROR pktrunner] add_fwd_commands,519: Unable to determine if the flow is routed/bridged (519) 这个错误。虽然也加载了 pktrunner 这个模块。
MWKPON
2017-09-11 17:39:34 +08:00
@redsonic 所以烽火的光猫 6in4 也是没问题的啰?
mmmkik
2017-09-11 18:17:45 +08:00
这个星期 6in4 隧道中,使用 ipv6 的 dns 解析已经被污染,之前用了 5 年都没事
比如 2001:470:20::2 解析 YouTube.com 就被污染
楼主确定不是 dns 惹的祸
试着更改一个无污染 ipv4 dns(202.141.162.123),顺便要把 ipv6 dns 写成::1
再看看问题是否解决
mmmkik
2017-09-11 18:18:29 +08:00
并不是光猫的问题
mmmkik
2017-09-11 18:18:51 +08:00
能 ping 通并不意味着你能顺利打开网页
catinsnow
2017-09-11 19:39:38 +08:00
@mmmkik 只是这个 DNS 解析到的是香港节点的 IP,用 US 节点的要绕一圈。

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

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

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

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

© 2021 V2EX