OpenWrt桥接ONU设置SoftBank光IPv6高速ハイブリッド「IPv6 IPoE + IPv4」


AD Time
【点击加载Telegram群链接】

有想讨论日本宽带相关话题的朋友可以加huggy佬的TG群交流


0x00:背景

SoftBank光想要启用IPv6 IPoE上网来避开PPPoE高峰期的不稳定就必须租赁ISP专用路由器“BB单元”。但BB单元在性能和固件方面都存在明显的缺陷,最重要的是它不支持NAT LOOPBACK:在局域网内访问域名绑定的服务只能通过修改hosts来将自己域名指向局域网IP地址来访问。

如果不使用BB单元将普通路由器直接连接到ONU则采用IPoE的方式只能访问纯IPv6互联网,IPv4互联网只能通过PPPoE的方式访问,而由于NTT的历史包袱PPPoE的稳定性并不好。日本市面上出售的路由器目前还没有能直接支持SoftBank光采用的4in6隧道的产品。互联网上关于SoftBank光配置IPoE IPv6 + IPv4教程也非常有限,大部分教程都是建议启用DMZ和IPv6 passthrough,同时关闭Wi-Fi信号发射来实现桥接。

然而,这并不是一个优雅的使用固定IPv4地址和稳定IPv4互联网的解决方案。经过一段时间的摸索实现了在OpenWrt上配置IPv6高速ハイブリッド,本文将简单介绍这一配置过程,希望能为其他同样面临这一问题的SoftBank光用户提供帮助。

注意:1、本文不含对ひかり電話等非上网服务的配置。
2、即使在OpenWrt上设置了IPv6高速ハイブリッド,也不能免除每个月的ISP路由器租金。SoftBank光IPv6高速ハイブリッド与BBユニットレンタル是捆绑在一起的オプション,解约后不能使用IPv6方式上网。

0x01: 事前准备

需要准备的东西:BB单元和NTT的ONU;1台安装有kmod-ip6-tunnelip-full包的OpenWrt路由器;1台支持端口镜像(Port Mirroring)的交换机;1台Windows电脑;Wireshark数据包捕获软件;SSH客户端。

0x02: 抓包获取IPv4 over IPv6隧道配置参数

SoftBank光使用的4over6协议并不是所谓“4rd/SAM”。这是一个广泛流传在日本社交网络上的谣言,已被SoftBank官方否认。事实上BB单元内置的4over6功能与JPIX的v6プラス中固定IP契约是相同的,它们均使用RFC2473标准的IPIP隧道。

区别在于使用JPIX提供IPv4 over IPv6服务的ISP会将隧道的配置信息提供给用户,用户可使用对应账号密码在未来隧道参数发生变化时通过HTTP Request请求新参数,而SoftBank光则是使用非公开的认证信息(并非PPPoE拨号的S-ID)通过BB单元内置的RADIUS客户端向服务器请求隧道配置参数。笔者在测试过程中发现理论上只要不取消IPv6高速ハイブリッド IP地址就不会发生变化,基本可以认为是固定IP。RAIDUS认证目前仅用于请求隧道参数不直接影响IPIP通信,因此我们不关心认证的具体实现,直接对BB单元进行抓包来获取隧道配置的参数。

按照接线图将ONU的UNI口连接PORT1,BB单元的WAN口连接PORT2,电脑网卡连接PORT3,在你的交换机上设置Mirror source port为PORT2,设置Mirror monitor port为PORT3。※ 更新:可直连ONU抓包,参考评论区。

在电脑上运行Wireshark,点击PC网卡对应的网络适配器开始抓包。然后将BB单元上电,等待Wireshark中出现抓包数据。BB单元成功联网之后点击停止按钮停止抓包。

应用显示过滤器里输入“RADIUS”过滤出与RADIUS有关的数据包,找到Info为Access-Accept的包,展开Attribute Value Pairs,找到VSA: t=Unknown-Attribute(204)VSA: t=Unknown-Attribute(207),这两项分别是以16进制表示的终端IPv4地址和Peer IPv6地址。

将得到的两组数据进行转换。

  • 假设204的字符串为7e723304,将其分成4个字节(每两个十六进制字符一个字节):7e, 72, 33, 04。将每个字节从十六进制转换为十进制:126, 114, 51, 4。得到终端IPv4地址:126.114.51.4
  • 假设207的字符串为2400200000040000a000000000001919,将这个字符串分为8组,每组4个字符:2400, 2000, 0004, 0000, a000, 0000, 0000, 1919。转换为IPv6的格式:2400:2000:0004:0000:a000:0000:0000:1919。化简得到Peer IPv6:2400:2000:4:0:a000::1919

记录这两个地址备用。2023年9月21日更新:加载字典(dictionary.softbank)可直接解析出终端IPv4和Peer IPv6无需手算转换。

0x03: 配置OpenWrt

移除BB单元,将OpenWrt路由器WAN口eth1(后续eth1均代表WAN口)直接连接到ONU。确认OpenWrt已经安装软件包kmod-ip6-tunnelip-full。访问OpenWrt的Web LuCI页面。(后续步骤可能因luci版本不同而不同,请根据你的固件版本自行修改)

  1. 点击[Network] – [Devices],点击设备eth1的[Configure…]按钮将MAC address设置为BB单元的WAN口MAC地址。
  2. 点击[Network] – [Interfaces],删除WAN接口,编辑WAN6接口。
  3. 点击[General Settings]将Protocol设置为DHCPv6 Client。
  4. 点击[Advanced Settings]将Override MAC address设置为BB单元的WAN口MAC地址。
  5. 点击[Physical Settings]确保Bridge interfaces为未选中状态(OFF)并将Interface设置为eth1。
  6. 点击[Firewall Settings]将Create / Assign firewall-zone设置为wan。
  7. 点击[Network] – [Global network options],删除IPv6 ULA-Prefix。
  8. 点击[Save & Apply]。

参考任意教程配置IPv6 Passthrough使LAN侧设备能够正常获取IPv6地址。如果一切正常,此时WAN6能够获取到一个长度为64的IPv6地址。可访问https://ip.sb/测试能否正常连接到IPv6互联网。

这里假设地址为:2400:2410:abcd:ef00:021a:2bff:fe3c:4d5e/64,记录该IPv6的前缀备用。

使用SSH登录OpenWrt,编辑/etc/rc.local,增加如下内容,其中:

  • INTERFACE: WAN6的物理接口。
  • IPV6_PEER: 之前通过网络抓包得到的Peer IPv6地址。
  • IPV4_ENDPOINT: 之前通过网络抓包得到的终端IPv4地址。
  • IPV6_ENDPOINT: 由WAN6 IPv6地址的前缀来组成的终端IPv6地址。例如前缀是2400:2410:abcd:ef00::/64,将后64位填充1从而得到完整的终端IPv6地址2400:2410:abcd:ef00:1111:1111:1111:1111

※ 可以在写入/etc/rc.local之前手动运行这些指令以及后续步骤来测试能否正常使用。

※2024-10更新:OpenWrt 23.05.3 (Released: Fri, 22 Mar 2024) 后ds-lite包增加了IPIP6隧道接口配置,可直接在webui配置以上内容。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
INTERFACE=eth1
IPV6_PEER="2400:2000:4:0:a000::1919"
IPV4_ENDPOINT="126.114.51.4"
IPV6_ENDPOINT="2400:2410:abcd:ef00:1111:1111:1111:1111"

ip -6 addr add $IPV6_ENDPOINT dev $INTERFACE
ip -6 tunnel add ip6tnl1 mode ipip6 remote $IPV6_PEER local $IPV6_ENDPOINT dev $INTERFACE encaplimit none
ip addr add $IPV4_ENDPOINT dev ip6tnl1
ip route add default dev ip6tnl1
ip link set dev ip6tnl1 up

编辑/etc/config/network,增加如下内容,其中ipaddr为终端IPv4地址。

1
2
3
4
5
6
7
8
config interface 'sbb_wan'
	option ifname 'ip6tnl1'
	option _orig_ifname 'ip6tnl1'
	option _orig_bridge 'false'
	option proto 'static'
	option ipaddr '126.114.51.4'
	option netmask '255.255.255.255'
	option dns '8.8.8.8'

保存并执行/etc/init.d/network restart使配置生效。 点击[Network] – [Interfaces],编辑刚刚新建的sbb_wan接口,点击[Firewall Settings]将Create / Assign firewall-zone设置为 wan。 点击[Save & Apply]。 重启路由器。

0x04: 确认配置正常

理论上重启路由器后就能正常上网了。可以访问https://ip.sb/或访问其他IPv4网站进行确认。可点击[Status] – [Realtime Graphs] – [Connections]观察是否成功建立Protocol为IPENCAP的IPv6连接。

本文是对SoftBank光(1Gbps)的配置教程,基于笔者与使用1Gbps网络的朋友共同测试的回忆整理而来。笔者使用的网络配置方式与之并不相同,因此可能存在谬误。如果您在配置过程中出现任何问题请留言,以便于笔者对文中可能出现的失误进行修正。

0x05: 参考资料

0x06: 特别感谢

  • kruton
  • yomai
  • xfoxfu
Licensed under CC BY-NC-SA 4.0
最后更新于 2025-09-01
Powered by Hugo | Theme Stack