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

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 光用户提供帮助。

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

注意
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 单元进行抓包来获取隧道配置的参数。

OpenWrt桥接ONU设置SoftBank光IPv6高速ハイブリッド「IPv6 IPoE + IPv4」插图1
按照接线图将 ONU 的 UNI 口连接 PORT1,BB 单元的 WAN 口连接 PORT2,电脑网卡连接 PORT3,在你的交换机上设置 Mirror source port 为 PORT2,设置 Mirror monitor port 为 PORT3。

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

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

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

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

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

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

假设 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 版本不同而不同,请根据你的固件版本自行修改)
点击 [Network] – [Devices],点击设备 eth1 的 [Configure…] 按钮将 MAC address 设置为 BB 单元的 WAN 口 MAC 地址
点击 [Network] – [Interfaces],删除 WAN 接口,编辑 WAN6 接口
点击 [General Settings] 将 Protocol 设置为 DHCPv6 Client
点击 [Advanced Settings] 将 Override MAC address 设置为 BB 单元的 WAN 口 MAC 地址。
点击 [Physical Settings] 确保 Bridge interfaces 为未选中状态(OFF)并将 Interface 设置为 eth1
点击 [Firewall Settings] 将 Create / Assign firewall-zone 设置为 wan
点击 [Network] – [Global network options],删除 IPv6 ULA-Prefix
点击 [Save & Apply]

参考任意教程配置 IPv6 Passthrough 使 LAN 侧设备能够正常获取 IPv6 地址。

如果一切正常,此时 WAN6 能够获取到一个长度为 64 的 IPv6 地址。可访问 https://ip.sb/ 测试能否正常连接到 IPv6 互联网。

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

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

使用 SSH 登录 OpenWrt,

编辑 /etc/rc.local,增加如下内容,其中:
1、INTERFACE: WAN6 的物理接口;
2、IPV6_PEER: 之前通过网络抓包得到的 Peer IPv6 地址;
3、IPV4_ENDPOINT: 之前通过网络抓包得到的终端 IPv4 地址;
4、IPV6_ENDPOINT: 由 WAN6 IPv6 地址的前缀来组成的终端 IPv6 地址。例如前缀是 2400:2410:abcd:ef00::/64,将后 64 位填充 1 从而得到完整的终端 IPv6 地址 2400:2410:abcd:ef00:1111:1111:1111:1111

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

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 地址。

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 连接。

OpenWrt桥接ONU设置SoftBank光IPv6高速ハイブリッド「IPv6 IPoE + IPv4」插图6
本文是对 SoftBank 光(1Gbps)的配置教程,基于笔者与使用 1Gbps 网络的朋友共同测试的回忆整理而来。笔者使用的网络配置方式与之并不相同,因此可能存在谬误。如果您在配置过程中出现任何问题请留言,以便于笔者对文中可能出现的失误进行修正。

0x05: 参考资料

RFC 2473 – Generic Packet Tunneling in IPv6 Specification (ietf.org)

IPv6 高速ハイブリッド IPv6 IPoE + IPv4 はどのようにして IPv4 over IPv6 を実現しているのか – rokoucha (scrapbox.io)

【風前の灯火】IPv6 スレ ver10【IPv4NAT に完敗】 (5ch.net)

OCN 総合スレ 126 回線目 [無断転載禁止]©2ch.net (5ch.net)

0x06: 特别感谢

  • kruton
  • yomai
  • xfoxfu

评论

  1. l
    lqs
    2023-9-27
    2023-9-27 13:54:35

    测试了一下,有个更简便的方法:
    先提前从 bbunit 拿到自己的 IPv6 地址(结尾 1111 的那个),配置到网卡上,然后网线直连光猫抓包,这时候应该能抓到 ipip6 隧道的包,就可以从里面拿到隧道对方的 IPv6 地址了。

    • Missing
      博主
      lqs
      2023-9-27
      2023-9-27 14:33:53

      是的,可以抓到 destination 是自己 WAN IPv4 的 IPIP6 包

  2. T
    Thorn
    2023-10-5
    2023-10-05 20:26:00

    所以最后博主是放弃了 10G 契约,换成 1G 契约了么()

    • 博主
      Thorn
      2023-10-6
      2023-10-06 22:56:05

      这倒不是,1G 契约用的人更多所以就写了 1G 的教程
      10G 有一个解决不掉的致命问题就暂时搁置了∠(ᐛ 」∠)_

      • t
        Missing
        2023-11-18
        2023-11-18 0:08:45

        I want to connect SoftBank 光 10Gbps with OpenWRT Router.
        “SoftbankBB RADIUS dictionary” seems XG-100NE, which is used in SoftBank 光 10Gbps Service.
        But You said 10G had a fatal problem that could not be solved.
        What is the problem?

        • 博主
          tomo0611
          2023-11-18
          2023-11-18 5:51:01

          The DHCPv6 client in OpenWrt isn’t compatible with Flet’s Hikari Cross, and when the IPv6 prefix lifetime expires, odhcp6c will not actively send a renew message, which results in WAN6 losing connection for about 20s.
          The prefix lifetime of Flet’s Hikari Cross is only 4 hours, causing frequent network disruptions. Flet’s Hikari Next has a prefix lifetime of a month, so the issue isn’t easily noticed.
          This bug was reported by someone 3 years ago, but it still hasn’t been fixed.

          • t
            Missing
            2023-11-20
            2023-11-20 10:38:56

            Ummm… That’s a serious problem.
            I found a issue you wrote.
            https://github.com/openwrt/openwrt/issues/13454
            From issue comment, As a temporary solution, I will send odhcp6c send Renew Message using crontab…
            So if I make odhcp6c send Renew Message every 3 hours, will the problem be solved? (temporary solution)

          • 博主
            tomo0611
            2023-11-21
            2023-11-21 9:12:16
  3. 已编辑
    3-28
    2024-3-28 19:29:23

    使用的路由器是 unifi dream machine SE 抓包总是抓不到 RADIUS pppoe 也抓不到。能出个视频详细讲解一下如何干掉 Softbank 的路由器吗,实现自己的路由器和 NTT 连接。ntt 直连路由器 wan 口 是任何网络都没有 要设置哪些东西啊。日语不好真的头疼。。。

    • 博主
      3-29
      2024-3-29 21:10:16

      上面有评论提到可以直接 NTT 光猫直连 PC 抓远程 BR 服务器发来的数据包喔。视频就不放了,毕竟这个严格来说是不合法的

      • Missing
        3-29
        2024-3-29 21:11:51

        谢谢大佬

  4. otonashikurumi
    8 天前
    2024-5-03 1:49:06

    ax11000 最新固件好像已经支持 sb 光的 ipv4+ipv6

    • 博主
      otonashikurumi
      6 天前
      2024-5-04 4:51:04

      哦?具体是哪个品牌的 AX11000?支持的是 IPoE IPv6 + IPv4 over IPv6 方式还是 IPoE IPv6 + PPPoE IPv4?

      • o
        otonashikurumi
        Missing
        6 天前
        2024-5-04 10:21:11

        网络这块我也不太懂。我自己的路由器是华硕的 ax11000 之前一直用的 au 光没怎么更新过固件这次换到 sb 的网。一通瞎操作整的上不了网索性恢复出厂设置后再升级了固件。然后看到 ipv6 里多了很多选项。。用 onu 直连 ipv4 那里还是 pppoe。ipv6 那里选了 passthrough。重启路由器后有 ipv4+ipv6.ipv6 test 也能测到有 ipv6 不过会出现你的浏览器不愿意使用 ipv6。

        • 博主
          otonashikurumi
          5 天前
          2024-5-05 15:18:48

          正常的,SB 光 1G 在开通 BB 单元之后可以通过 DHCPv6 拿到 IPv6,另外本身它自带 PPPoE IPv4。本文探讨的是 IPv4 over IPv6 的方式获取 IPv4

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇