7月申请SoftBank 光・10ギガ宽带,时隔31天NTT才上门做工事,不得不说效率真的是低的可怕。
10G契约与1G契约不同的是10G使用フレッツ光クロス,不提供PPPoE接入;1G契约使用フレッツ光ネクスト,可以使用PPPoE接入同时也可使用IPoE接入。但无论哪种契约使用IPoE接入都需要租赁ISP专用路由器,在10G契约中是NTT由NEC代工的XG-100NE,在1G契约中是由鸿海代工的BB单元。花550日元租路由器没什么问题,不过这路由器的固件实在是有过于简陋…… 也不能改成桥接模式,无端多一层NAT很让人不爽。本篇就作为日记记录一下折腾的过程吧。
工事完成后还特意问询了前来做工事的师傅“能否用市售路由器代替NTT的HGW?” 得到了肯定的回复。但是实际上并不能,Softbank所属的VNE BBIX社使用的是名为“IPv6高速ハイブリッド”而不是JPNE的“V6プラス”,直接接入普通市售路由器只能使用纯IPv6互联网。
接上 XG-100NE 之后自动从 ISP 处下载了一些配置文件,路由器重启了一次后 PPPoE 设置被禁用,DMZ 功能消失。路由器提示使用 MAP-E 隧道接入 IPv4 网络,感觉很像国内部分地市中国移动 IPoE 的 4in6 隧道?
有一个隐藏的页面“配信済事業者ソフトウェア”(http://192.168.1.1:8888/t)可以配置端口转发,审查元素查看js源码后发现最多可以配置64条转发规则,无NAT Loopback功能,无法直接从内网使用公网IP访问开放的端口。
BBIX社持有大量IPv4地址,有前辈测试1G的契约中租用BB单元使用IPv6 IPoE radius认证+IPIP隧道来实现IPv4 over IPv6通信,已知全部端口都可开放,是独享公网IPv4。
V6プラス使用MAP-E隧道在HGW中会给出可用的端口范围。Softbank光10G契约的ISP路由器中显示MAP-E,但是并没有明确端口范围。
真的是MAP-E吗?
随机开放了几组端口用于测试,全部可通,基本可以认为全端口可用。
尝试将软路由(OpenWRT)直接与ONU连接,WAN6接口可以DHCP到一个2400:2410:xxxx:xxxx::/56的IPv6-PD,配置好IPv6各项设定后可以访问纯IPv6网站。
网上有许多前辈编写了在OpenWRT中配置V6プラス的教程。使用IPv6前缀计算MAP-E参数的网站:http://ipv4.web.fc2.com/map-e.html
很遗憾,这个网站并不支持对BBIX的2400:2410:开头的前缀进行计算,提示:未対応のプレフィックス。
不知道BBIX的隧道和配置参数是什么?想到在国内时曾对IPTV的IPoE认证过程进行抓包分析,后面尝试对HGW抓一下包看看。
2023年9月20日:补充一下测速结果,东京都内不是很理想。据说东京周边的县能跑到6Gbps以上?
2023年8月14日
抓包结果显示是IPIP隧道。验证了之前的猜想,并不是MAP-E的方式,而是IPIP。(所以为什么HGW中要显示MAP-E?)
以及一段RADIUS认证的数据。认证服务器是2400:2000:bb1b:8::5,User-Name是IPv6前缀,Password是什么无从得知。返回数据是IPv6 BR IP和CPE侧的IPv4地址。
无论重启多少次ISP路由器、ONU或者更换ONU,IPv4和IPv6-PD都不会发生变化。
可以认为是固定IP吗?
[removed]
2023年8月15日
想办法得到了RADIUS认证使用的secret和password。
之前抓包的时候分别抓到了两次的CHAP-Challenge和CHAP-Password的盐值。编写一个简单的脚本来验证这个Password的正确性。
import hashlib def verify_chap_password(chap_ident, chap_password, chap_challenge, password): m = hashlib.md5() m.update(chap_ident.encode('latin-1')) m.update(password.encode()) m.update(bytes.fromhex(chap_challenge)) # 生成CHAP响应 expected_response = m.hexdigest() return expected_response == chap_password password = "<...>" # RADIUS Password # 抓包数据 chap_ident = "\x00" # 10G: 0x00, 1G:0x01 chap_password = "73baebe2b<....>" chap_challenge = "81d6b7777<....>" # chap_password = "2419a3bd1<....>" # chap_challenge = "9f2ac03c3<....>" if verify_chap_password(chap_ident, chap_password, chap_challenge, password): print("PASSWORD is correct.") else: print("PASSWORD is incorrect.")
运行结果:PASSWORD is correct.
感觉secret也不会有什么变化。
PS:用RADIUS客户端模拟请求了一下,确实是可以用的。
接下来只要构建RADIUS认证包发给认证服务器就可以了。
[removed]
2023年8月30日
2023年9月1日
Ethernet II, Src: Cisco_3d:de:8c (<secret>), Dst: NECPlatf_ (<secret>)
Internet Protocol Version 6, Src: fe80::<secret>, Dst: fe80::<secret>
User Datagram Protocol, Src Port: 547, Dst Port: 546
DHCPv6
Message type: Advertise (2)
Transaction ID: 0x8540de
Client Identifier
Server Identifier
Reconfigure Accept
Identity Association for Prefix Delegation
Option: Identity Association for Prefix Delegation (25)
Length: 41
IAID: 00000000
T1: 7200
T2: 10800
IA Prefix
Option: IA Prefix (26)
Length: 25
Preferred lifetime: 12600
Valid lifetime: 14400
Prefix length: 56
Prefix address: 2400:2410:<secret>00::
2023年9月3日
2023年9月12日
也许可以试试RouterOS?ROS提供了IPIPv6隧道的配置选项,而且我对ROS更为熟悉一点(逃
不会ROS(
我路由器的万兆网卡CX341A在ROS上好像也没有驱动
我看网上有只通过抓包就连接成功的案例,并且***********里的dibbler.sh.in文件里的connect_tunnel中,给***********传了mac地址,所以手动设置ipip tunnel不成功的原因是不是mac地址没有正确设置呢(个人猜测
顺便可以通过邮箱告诉我一下shared secret和password吗,已经想扔掉sb的路由器好几年了T.T
也许可以试试恢复出厂设置的同时抓包(?
有可能是初次启动之后,固化了的配置🤔
原来是这样吗()
想起大陆的运营商,SIP接口完全裸奔,桥接以后用WireGuard连回去打电话都没问题(
great work
曾经也抓过它的包,卡在了构造 RADIUS packet 的阶段,因为不知道怎么搞到 secret。
后来因为家里是 VDSL,对比了下似乎 IPIP tunnel 后 MTU 更小,这么做实际收益会很小;更要命的是我这边地区实测 PPPoE 更快(无论是延迟还是最大速率)。
联想到现在不少用户都已经用上 IPoE,NTT 的 PPPoE Server 也不再如以往拥挤,就暂时搁置了 😂