OpenWrt 作为主路由拨号可以从 ISP 获得了 /60 的 IPv6 PD ,但是如果启用了 OpenWrt 的 DHCPv6 ,分配出来的 IPv6 带的默认 router 是 OpenWrt 自己的 link-local 地址。如果要实现旁路由 IPv6 科学上网的话,需要手动把客户端的 router 修改为旁路由的 link-local 地址。
目前一个临时的解决方案是关闭 OpenWrt 的 RA 和 DHCPv6 ,改为使用旁路由的 radvd 来分配 IPv6 。这样虽然可以让旁路由作为客户端的 router ,但是每次 OpenWrt 重新拨号,获得的 IPv6 PD 都会发生变化,需要手动修改旁路由的静态 IPv6 地址和 radvd 的配置。
想问一下有没有办法让 OpenWrt 分配的 IPv6 指向旁路由作为默认 router 呢?
1
cwbsw 2022-09-10 11:09:51 +08:00
主路由和旁路由各自新建一个 VLAN 接口。
|
2
Jirajine 2022-09-10 11:53:19 +08:00 1
做不到。旁路由本来就是 trick ,v6 相关标准和实现都没有支持。
当然也不是没办法,可以在旁路由上写脚本自动获取前缀信息(通过无密码的 ssh 或 http API )然后重启服务。 |
3
cloudsigma2022 2022-09-10 12:45:57 +08:00
op 拨号,只开启 RA , 关闭 dhcpv6 ,下联 旁路由 或其他设备会自动获取 v6.
|
4
cloudsigma2022 2022-09-10 12:47:57 +08:00
或者将 旁路路由 ra lifetime 设短一点。1 分钟。
|
5
yaott2020 2022-09-10 13:55:18 +08:00 via Android
试试 iptables fwmark 策略路由
|
6
Senorsen 2022-09-10 14:06:06 +08:00
有个 Workaround ,可以让主路由只给旁路由 IPv6 地址,不给其他客户端分配:
主路由开 RA 和 DHCPv6 但关闭 SLAAC ,然后防火墙建两条规则:允许旁路由 MAC 入站 IPv6 UDP 546 547 ,拒绝所有设备入站 IPv6 UDP 546 547 。 |
7
Senorsen 2022-09-10 14:07:52 +08:00
我现在是用上边的方法,让 PS5 等不支持自主关闭 IPv6 的设备不被分配 IPv6 地址(因为似乎其对国内的 IPv6 水土不服,会访问不了任何联机服务)
|
9
skies457 OP @cloudsigma2022 IPv6 地址获取倒不是难事,主要是获取到的 router 是 OpenWrt ,导致 IPv6 流量不会路由经过旁路由
|
12
cloudsigma2022 2022-09-10 19:09:52 +08:00
|
13
skies457 OP @cloudsigma2022 是的,不过还是想在旁路由上实现 clash redir-host 模式下自动分流,绕过国内的 IPv6 段
|
14
cloudsigma2022 2022-09-10 19:27:13 +08:00
|
15
Senorsen 2022-09-10 19:39:30 +08:00
@skies457 我理解你想要的,是不是让旁路由分配 IPv6 ,主路由不分配?所以是不是让主路由不给除旁路由外的其他设备分配 IPv6 ,旁路由为所有设备分配 IPv6 就可以实现目标?
|
16
connorzone 2022-09-11 14:20:27 +08:00 1
@skies457 既然两台设备都是 OP ,为什么不试试单臀路由?
IPv6 的默认路由是没办法通过 DHCP 选项广播的,运行 ra 的接口自动成为默认路由,或者参考下 @ihipop ( https://www.v2ex.com/t/818661 )提到的 radvd 单播方案:odhcpd 不能指定路由优先级,只能关闭主路由的 ra ,手动指定旁路由的默认路由为主路由的链路地址,开启旁路由的 ra 使其成为默认路由。不过如果主路由是桥接到光猫,似乎 ra 应该在光猫管理界面去关? 或者像楼上说的对 IPv6 用策略路由,可参考 https://superuser.com/questions/1107837/proper-location-for-transparent-squid-proxy-gateway-with-caching ,个人经验,这个效率不高,凑和用,最近 edge 浏览器优先 IPv6 确实很烦,以前 nat6 还能保证双栈通过系统前缀策略优先 IPv4 ,纯 ipv6 站点才会走 IPv6 ,现在直接不成了。 |
17
Kunmona 2022-09-12 00:23:03 +08:00 via Android 1
这里可以利用 DHCPv6 PD 去一级一级的对前缀分配。
保留下级路由的 wan-lan 区域,一级路由 lan 设置成大于或等于 60 前缀,二级路由的 wan 请求大于上级 lan 的前缀长度,后面路由器依次类推到 64 前缀分配完,这样就可以做到报文一级一级的转发,同时做到地址的自动配置 参考 https://zhuanlan.zhihu.com/p/362151770 |
18
gyorou 2022-09-12 14:10:32 +08:00
修改 openwrt 的防火墙规则把 gateway 改成旁路由的 link-local address 不行吗。。。
|
19
skies457 OP 最后还是用 @Jirajine 提的方法,通过 cron 自动从主路由更新 PD ,感觉比较简单省事。脚本放在这个 gist 里了: https://gist.github.com/w1ndy/f037efb028e8b7b3a934d334a3da9455
|