neo 发表于 2022-8-5 08:27:52

AX1800 OpenWRT IPv6 问题

本帖最后由 neo 于 2022-8-6 09:32 编辑

最近入手了 AX1800,自己编译了 5.4 内核开源固件,并开启 IPv6
OpenWrt 21.02-SNAPSHOT r16399+142-c67509efd7 / LuCI openwrt-22.03 branch git-21.284.67084-e4d24f0运营商给 PPPOE-WAN 下发了一个 240e:xx:xx:xx:xx:xx:xx:xx/64 地址,以及一个 240e:xx:xx:xx::/56 网段。

我把路由器的 br-lan 设置成 RA server/DHCPv6 disable/NDP relay
然后局域网设备就可以自动配置 IPv6 地址了,是 240e:xx:xx:xx::/56 的一个子网段,而且跟 br-lan 在同一个网段。

问题来了。从局域网 ping br-lan/pppoe-wan 都没有问题,但 ping 外网提示 destination unreachable, unreachable route
更诡异的是从公网 ping 局域网设备能通。

基本算是解决了。现在做一个总结。

问题的关键是 OpenWRT 会为 br-lan 生成一条路由策略规则(注意,不是路由规则)
...
32766:from all lookup main
...
4200000000:   from 240e:389:4f00:2500::1/64 iif br-lan unreachable讲道理因为有 32766 这条,所有有数据包都应该通过 main 路由表(我们平时加的路由规则都在此表保存)才对。但现在看下来是走了下面这一条。所以从局域网发出去的包会收到 unreachable 消息。

解决的办法就是到 luci 后台 Network -> Routing -> IPv6 Rules 新建如下规则

保存并应用就好了。

现在讨论一下 IPv6 网络的其他问题。

就我观察,电信和联通都会给路由器分配两套地址。其中电信会给 pppoe-wan 分配一个 /64 地址,然后再额外分配一个 /56 网段(IPv6-PD)。而联通也是类似,但额外的网段为 /60。

如果打开 gl 路由器的 IPv6 功能,局域网里的设备只会分配到跟 pppoe-wan 一样的地址,而无法利用 PD 网段。而且 gl 后台的 IPv6 选项太少且过时,居然还提供 NAT6 功能。所以我建议不要使用 gl 的配置后台,而且直接使用 OpenWRT 的配置界面。

所以我们需要安装 luci-proto-ipv6 包(忘记 OpenWRT 有没有默认安装了)

本来 linux 默认是支持 IPv6 的。但 gl-sdk4-ipv6 会配置一个服务,每次启动时会强行禁用 IPv6。所以我们需要到 luic 的 System -> Startup 中禁用 gl_ipv6 服务。

然后就是删除 /etc/sysctl.d/99-disable-ipv6.conf (这个文件是 gl_ipv6 生成的)
最后就是重新开启各网卡的 IPv6 支持


uci set network.wan6.disabled='0'
    uci set network.wwan6.disabled='0'
    uci set network.tethering6.disabled='0'
    uci commit network
然后就可以在 luci 的 Network -> Inerface 里面管理 IPv6 配置了。

为了充分利用 PD 网段,我们可以如下配置:

RA 是路由通告,我们改成服务器模式。这样路由器就会把 br-lan 所在的新网段通告给其他局域网设备。这些设备收到路由广播后会通过 SLAAC 自动配置 IPv6 地址。所以,也就没有必要再开启 DNCPv6 服务了。



萝卜大侠 发表于 2022-8-5 10:51:54

提示destination unreachable, unreachable route可能是路由表少了规则
在我们的页面先设置试一试呢

neo 发表于 2022-8-6 07:44:36

萝卜大侠 发表于 2022-8-5 10:51
提示destination unreachable, unreachable route可能是路由表少了规则
在我们的页面先设置试一试呢 ...
基本破案了。OpenWRT 自己添加一条路由策略规则(已有的路由规则跟防火墙规则都没有问题):

4200000000:   from 240e:xx:xx:xx::1/64 iif br-lan unreachable

最简单的办法是手工再加一条:

32766:from all lookup main

但 OpenWRT 这样做的原因还不确定

eggy 发表于 2022-8-6 18:21:40

顶,学习了,紫薯布丁

山山妖 发表于 2022-8-6 19:57:12

看不懂,够学:lol:lol:lol:lol

萝卜大侠 发表于 2022-8-6 22:28:48

neo 发表于 2022-8-6 07:44
基本破案了。OpenWRT 自己添加一条路由策略规则(已有的路由规则跟防火墙规则都没有问题):




厉害了
我们实际测试也是发现OpenWrt的IPV6路由有些BUG

lszjyj 发表于 2022-11-14 16:52:31

谢谢楼主分享!

nihaolai 发表于 2023-1-14 02:53:26

suhaha 发表于 2023-11-25 01:01:59

gl_ipv6也折腾到我了。明天按楼主这个方法试试看

neo 发表于 2024-1-15 21:02:25

萝卜大侠 发表于 2022-8-6 22:28
厉害了
我们实际测试也是发现OpenWrt的IPV6路由有些BUG

今天更新到 4.4.6 版本。发现 ipv6 问题还是没修,跟之前一样。是放弃治疗了吗?

页: [1]
查看完整版本: AX1800 OpenWRT IPv6 问题