XProxy
XProxy copied to clipboard
能否支持自动获取ipv6前缀呢?
家庭宽带,ipv6前缀是会变的,又不想用v6的内网地址。假定主路由支持完整的ipv6,支持下发PD子网,然后设置成只给XProxy运行的主机分配v6地址和v6子网信息。其他客户端的ipv6地址由XProxy再分配。我这里移动给的子网是/60的,联通好像是/48的,都是支持继续下发的。这样v6没有nat,只是有二级子网。
如果主路由不支持下发v6子网,那么能不能让radvd根据接受到的ra信息获取前缀地址,然后自己再发送一个优先级较高的ra消息,覆盖客户端的网关配置。
RA 消息没有优先级的参数,无法覆盖,IPv6 设计时就规定了 RA 发送源链路地址作为客户端的 next-hop,所以目前旁路由方案在 v6 下只能关闭上级的 RA 广播功能。
家庭带宽下,可以配置定时任务重载 RA 分配,运营商分配的前缀可以用 Python 脚本向光猫管理网页获取,然后在变动时写入到 XProxy 配置文件,再重启容器。或者直接将新地址写入到 radvd 配置中,然后发送热重载信号,这样子可以实现不断网切换 IPv6 地址。
谢谢回复,第二个方案也可以。我记得是有优先级,radvd的参数: AdvDefaultPreference | string | no | medium | 广播默认路由的优先级。 (low, medium or high) 但是客户端是否支持就不一定了,我自己的Linux主机是支持的。 参见在不关闭主路由 SLAAC 的前提下对家庭内网指定设备的IPv6流量进行“旁路牵引。
保持光猫拨号并开启RA的前提下,也可以考虑用透明网桥,在LAN1(光猫)和LAN2之间架设,然后wifi和其他设备连接LAN2,我的openclash跑在网桥上,只强行截获了v4的流量。理论上截获v6应该也有办法,我现在不会整。这种方案更“透明”,因为客户端完全不知道代理跑在了哪里。
感谢反馈,RFC 4191
中确实提及了广播优先级机制,这个方案是可行的,但是需要保证设备 mac 地址不变,且遵守 EUI-64
规则,才能实现 RA 通告向客户端单播。