2026-04-27 追加

上次那个加路由的方案, 似乎不是解决方案的完全体. 在测试了一段时间后仍然会出现内网设备被记录在wan口的错误. 感觉Openwrt内核设计是不是有问题.

最后花了好几天时间, 写了一个脚本来解决. 原理就是自动增加两条正确的路由, 并且在发现问题邻居的时候主动ping一下邻居的IP, 触发新的NS来纠正错误的邻居记录.

https://github.com/Mr0x01/NURO-IPv6-Fix

2026-03-20 追加

原因已经明确了,目前想到的解决方法不是特别优雅但能用。

当前的网络拓扑:NSD-G1000TS <==> OpenWrt <==> 内网设备

原因

G1000TS会给OP的wan6口一个/64的地址,这导致OP会出现一条这样的路由:240d:xxxx:xxxx:xxxx::/64 dev eth1 metric 256

也就是所有240d:xxxx:xxxx:xxxx::/64这个网段的流量都会往wan6走,但内网的主机IPv6也都是这个网段的。这导致了原本需要发给内网主机的流量,在从wan6到达OP之后又从wan6口发回去了。

具体到OP里的表现就是ip -6 neigh show的话,可以看到内网主机的IPv6被错误的记录成了属于wan6口(正常的话应该属于br-lan)

正确⭕ 错误❌
240d:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:f940 dev br-lan 240d:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:f940 dev eth1

解决

在OP上手动加一条路由,声明240d:xxxx:xxxx:xxxx::/64这个网段在内网应该就可以了。但如果有其他设备直接接在ONU上,会导致OP下的设备和ONU下的设备无法互通。并且如果IP段会变的话,频繁的手动加路由也很麻烦。好在NURO的IP是固定的,而且我的设备都是从OP接入的,所以上述两个问题对我来说还好。

1
ip -6 route add 240d:xxxx:xxxx:xxxx::/64 dev br-lan metric 128

加入这条路由后重启路由器即可。或者直接用lcui也能直接进行添加路由操作,很方便。有的Windows设备必须netsh winsock reset一下才能正常生效。

2026-03-16 追加

从这一个多月的使用体验来看,稳定性没有太大问题,唯独一点:在OP重启后,有很大几率会出现客户端设备能拿到IPv6但无法联网的问题。

目前能总结出来的现象有如下几个:

1.客户端能拿到240d开头的公网IPv6地址,但无法通过IPv6联网
2.在OP里执行ip neigh show,会发现有大量的FAILED,客户端拿到的240d开头的地址也在其中,也是FAILED
3.在客户端里ping一下OP的WAN6口的IPv6地址,第一个数据包会超时或者响应极慢(大于1秒),后续数据包正常响应。在这之后,执行ping的主机的IPv6会恢复正常,能正常连接公网

现在还不知道原因是什么。

0x01 起因

最近搬了家,新家开发商估计和索尼有PY交易,全楼统一契约的NURO,不许用别家。不得已解约了用得好好的Softbank光,痛失4个独立公网IP+2万工事费。

NURO光虽然乍一看参数很好,上1Gb下2Gb。但连上路由一看,MAP-E,端口映射、DMZ、UPnP全都不能用,可用端口就240个,合一个IPv4能给200多个家庭使用。官网查了一下,不给恢复双栈,也没有付费独立IP选项。家里搭的那么多服务,全没法访问了。

NURO官方说明

0x02 研究对策

NSD-G1000TS

因为之前耳闻过,有人撤了索尼给的入户网关导致被索尼发函威胁断网的事情,弄得我也不敢瞎搞了,万一给我把网掐了,我还没法契约别的运营商。

不换入户网关的情况下,IPv4直连肯定是没戏了,因为没法配DMZ,也没法配端口转发,只能打洞。IPv6直连应该是可行的,但G1000TS这个机器没有IPv6防火墙。虽说IPv6不那么容易被扫,但直接在公网上裸奔感觉还是不太放心。所以最终决定再接一个Openwrt做二级路由,家里所有的设备从OP接入。

2.1 IPv4的处理

在内网起了一个TailScale并开启Subnet Router功能,无IPv6环境下用TailScale连回家。其他的什么FRP、CFTunnel也可以。

2.2 IPv6的处理

G1000TS本身是可以从索尼那里拿到一个56的PD的,但是不会再继续下发PD,所以OP里需要做一个NDProxy才能给接入OP的设备分配IPv6。IPv6是不受MAPE可用端口的限制的,可以用满65535个。

0x03 鼓捣

这些配置基于
NSD-G1000TS 固件版本V4.0.06(按说和NSD-G1000T应该是通用的,不过没有机器没法验证)

后期可能会发生变化,无法保证时效性

3.1 G1000TS的配置

无需配置,也没什么可配置的。可以把无线功能关了,省一些电。因为所有设备是从OP接入的,开着无线也没用。

3.2 OP的配置

简单来说有两项需要配置
一项是需要一个DHCPv4和一个DHCPv6作为WAN口,从上级的G1000TS获取IP。另一项是配置IPv6透传。

network 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0' #按自己情况设置成实际的接口

config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.x.1' #这里x不能是1,会和上级路由冲突
option netmask '255.255.255.0'
list dns '8.8.8.8'
list dns '1.1.1.1'
option delegate '0' #不委托IPv6前缀
option ip6assign '64'

config interface 'wan4'
option proto 'dhcp'
option device 'eth1' #按自己情况设置成实际的接口

config interface 'wan6'
option proto 'dhcpv6'
option device 'eth1' #按自己情况设置成实际的接口
option reqaddress 'try'
option reqprefix 'auto'
option norelease '1'

dhcp 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv4 'server'
option ra 'relay'
option dhcpv6 'relay'
option ndp 'relay'

config dhcp 'wan6'
option interface 'wan6'
option ignore '1'
option master '1'
option ra 'relay'
option dhcpv6 'relay'
option ndp 'relay'

这样配置完,内网的主机就应该能够正常的获取到IPv6了。Windows主机可能需要reset一下才能正常通信。如果想要从外部访问内部服务,直接在OP和主机的防火墙上放开服务对应的端口即可。
alt text

1
2
netsh interface ipv6 reset
netsh winsock reset

0x04 长远来看

Sony已经明确说了会逐步将双栈接入切换为MAPE,老用户虽然现在还是双栈,但切换是迟早的事。假如家里网关设备坏了或者旧了联系索尼换新设备的话,是一定会被切换为MAPE的。

单纯打打游戏看看视频的话,NURO确实也不是不能用。但如果有复杂的组网需求,或者玩HomeLab的话,还是慎重考虑NURO。