IPv6 绕过旁路由?教你几招彻底解决网络分流问题
在家组建高性能网络时,很多小伙伴都会选择旁路由方案。无论是软路由跑 OpenClash,还是专门的小主机跑插件,旁路由以其“不改动原有网络拓扑、即插即用”的特点深受喜爱。
但最近不少朋友在升级千兆宽带或办理新宽带时遇到了一个棘手的问题:运营商纷纷开启了 IPv6,结果发现流量莫名其妙地绕过了旁路由,直接走了主路由的通道。 这就导致了尴尬的局面——你想“科学上网”,结果直连了;你想做流量控制,结果控制了个寂寞。
今天就来聊聊这事儿到底为啥发生,以及咱们该怎么解决。
IPv6 通过 SLAAC 自动配置地址,客户端获得直连外网的网关。
为什么 IPv6 会“无视”你的旁路由?
要解决问题,得先搞懂原理。咱们大多数人的旁路由配置,其实主要是针对 IPv4 的。
在 IPv4 的世界里,旁路由通过 DHCP 配置,把主路由的网关指向旁路由,或者通过策略路由把流量“劫持”过去。这一切都建立在 IPv4 的协议栈上。
但是,IPv6 的到来改变了游戏规则:
- 地址分配方式不同:IPv6 通常是 SLAAC(无状态地址自动配置)或者通过 DHCPv6 分配。你的客户端(手机、电脑)在获得 IPv6 地址的同时,也获得了运营商下发的 IPv6 网关地址。这个网关通常是直接指向光猫或运营商的设备,而不是你的旁路由。
- 路由表优先级:当目标网站支持 IPv6 访问时,操作系统会优先查询 IPv6 路由表。因为系统手里有一个“直连”世界的 IPv6 网关,它就默认走这条大路了,根本不去查那个还需要绕弯子的 IPv4 旁路由规则。
- NAT 机制缺失:IPv4 时代我们依赖 NAT 来处理内网地址,而 IPv6 提倡端到端连接。如果你的旁路由没有专门处理 IPv6 的转发和 NAT66(IPv6 NAT),它对 IPv6 流量来说就是“透明”的。
简单来说,你的电脑手里有一张直达“外面的世界”的 IPv6 门禁卡,它干嘛还要路过你那个兼职守门(IPv4)的旁路由呢?
解决方案:把 IPv6 也关进笼子
既然知道了原因,那我们就得想办法让 IPv6 流量也乖乖听话。这里提供几种不同难度的方案,大家可以根据自己的网络环境和折腾能力按需取用。
方案一:暴力关闭法(主路由操作)
这是最简单、最彻底但也最“原始”的方法。如果你暂时不需要 IPv6,或者觉得 IPv6 带来的麻烦大于收益,干脆把 IPv6 关了。
- 操作位置:进入光猫管理后台(通常是超级管理员账号)或主路由(OpenWrt/EdgeOS/梅林等)后台。
- 具体操作:在 WAN 口设置中,将“IPv6 分发前缀”、“原生 IPv6”、“DHCPv6”等服务全部关闭。同时,在 LAN 口设置中,关闭“LAN 口 IPv6 分发”和“RA(路由通告)”。
- 效果:全网回归纯 IPv4,所有流量被迫走 IPv4 通道,自然就乖乖经过旁路由了。
- 缺点:彻底失去了 IPv6 带来的低延迟、无需 NAT 等优势,且部分只支持 IPv6 的资源将无法访问。
在旁路由 OpenWrt 中配置 IPv6 防火墙转发规则。
方案二:旁路由接手法(推荐,折腾指数高)
如果你既想享受 IPv6 的速度,又想通过旁路由管理流量,那就得让旁路由具备“处理 IPv6”的能力。这需要你的旁路由系统(如 OpenWrt)支持 IPv6 转发。
- 配置防火墙转发:在旁路由的
/etc/config/firewall中,确保 IPv6 转发已开启。通常需要将 LAN 和 WAN 的 IPv6 规则设置为 ACCEPT。 - 配置 IPv6 网关:这里有两种思路。一种是让旁路由作为 IPv6 网关,你需要开启
odhcpd并通告 RA,让你的内网设备把旁路由当成 IPv6 网关;另一种是保持主路由分发 IPv6,但通过策略路由( ip -6 rule )把 IPv6 流量强行引流到旁路由进行代理转发。 - 代理软件支持:确保你使用的代理软件(如 Sing-box、Xray-core 或 PassWall 教程中的组件)开启了 IPv6 入站/出站支持。很多老版本的插件默认只处理 IPv4 数据包。
这个方案的难点在于调试,很容易因为配置错误导致“能上 Google 但上不了百度”或者“IPv6 漏洞 DNS”等玄学问题。
方案三:DNS 分流法(折中方案)
如果你懒得动网络拓扑,可以试着从 DNS 入手。
-
当客户端访问一个双栈网站(既有 A 记录又有 AAAA 记录)时,如果 DNS 服务器只返回 IPv4 的 A 记录,客户端自然就会用 IPv4 走旁路由。
-
操作:在旁路由或 DNS 插件(如 AdGuard Home)中,设置只返回 IPv4 地址,或者对特定域名过滤掉 AAAA 记录。
-
优点:配置简单,无需复杂的路由表改动。
-
缺点:治标不治本。如果客户端硬性访问 IPv6 地址,或者某些应用强制使用 IPv6,依然会绕过旁路由。此外,访问纯 IPv6 网站会失败。
方案四:主路由策略引流(进阶)
如果主路由性能足够(比如软路由直接做主路由),可以直接在主路由上写规则。利用 iproute2 的策略路由(PBR),将内网网段的 IPv6 流量打标记,然后强制通过 ip -6 route 指定下一跳为旁路由的 IPv6 地址。
这需要你有扎实的 Linux 网络基础,维护成本较高,一旦旁路由挂了,全网的 IPv6 可能都会瘫痪,需要配置一套故障转移机制。
总结
IPv6 绕过旁路由本质上不是“故障”,而是新一代协议与老旧单栈代理模式的不兼容。
- 对绝大多数 “只要能上就行” 的用户,方案一(关闭 IPv6) 依然是最省心、最稳的选择。
- 对于 “极客玩家”,建议慢慢摸索 方案二,让旁路由彻底接管双栈流量,这才是未来的方向。
希望大家都能根据自己的需求,把家里的网络收拾得服服帖帖!如果你在配置过程中遇到了什么奇怪的问题,欢迎在评论区交流,咱们一起踩坑、一起填坑。
评论已关闭