旁路由的好处是不动主路由。家里人用的设备该上网照常上网,只有你自己那几台需要分流的机器,把网关指到旁路由就行。出事随时改回来,不会全家断网。
拓扑先说清楚
光猫 → 主路由(192.168.1.1,负责拨号和 DHCP)
↓
旁路由(192.168.1.2,关闭 DHCP)
↓
需要分流的设备(网关手动指向 192.168.1.2)
三条铁律:
- 旁路由必须关掉 DHCP,否则会和主路由抢着发地址
- 旁路由的 LAN 口要接主路由的 LAN 口,不是 WAN 口
- 主路由的 DHCP 里给旁路由留一个静态 IP,别让它漂
网络配置
登录 OpenWrt,改 /etc/config/network:
config interface 'lan'
option proto 'static'
option ipaddr '192.168.1.2'
option netmask '255.255.255.0'
option gateway '192.168.1.1'
option dns '192.168.1.1'
option ip6assign '60'
关键是 gateway 必须指向主路由,否则旁路由自己没法上网,所有代理规则都会失效。
DNS 是分流的核心
很多人配完发现「能上但很慢」,问题基本都出在 DNS。推荐的链路是:
客户端 → 旁路由 dnsmasq (53) → 分流插件 → 上游 DNS
需要处理两件事:
- 国内域名走运营商 DNS,保证解析到就近节点
- 国外域名走加密 DNS,避免污染
如果你的旁路由要接管全屋 DNS,就在主路由的 DHCP 设置里,把「下发的 DNS 服务器」改成 192.168.1.2。这样所有设备不用手动改,自动走旁路由解析。
IPv6 的两个陷阱
IPv6 一旦启用,分流经常整个失效,原因有两个:
陷阱一:客户端优先走 IPv6,绕过代理
如果主路由下发了 IPv6 地址和 RA 通告,客户端会优先用 IPv6 直连,你的 IPv4 分流规则根本没机会生效。
处理办法是让旁路由不下发 IPv6 的 DNS,或者在旁路由上把 IPv6 的 DNS 也劫持到本地:
# 关闭 LAN 的 IPv6 路由通告(只下发 IPv4)
uci set dhcp.lan.ra='disabled'
uci set dhcp.lan.dhcpv6='disabled'
uci commit dhcp
陷阱二:DNS 返回 AAAA 记录导致解析卡住
客户端拿到 AAAA 记录后会尝试 IPv6 连接,超时才回落 IPv4,表现就是「网页打开慢半拍」。
两种解法,选一个:
- 在 dnsmasq 里过滤 AAAA:
option filter_aaaa '1' - 或者干脆在旁路由禁掉 IPv6 转发,让所有流量走 IPv4
我个人选择保留 IPv6 但过滤 AAAA 记录。这样国内 IPv6 站点仍然直连,国外域名不会因为 AAAA 卡住。
验证顺序
配完别急着开全局,按这个顺序验证:
- 旁路由自己能不能上网:
ping 223.5.5.5 - 旁路由能不能解析:
nslookup baidu.com 127.0.0.1 - 客户端指网关后能不能上网
- 最后才打开分流规则
每一步都能独立定位问题,比一次性全开再抓瞎强得多。
一个容易忽略的细节
主路由如果是运营商送的光猫一体机,DHCP 下发的 DNS 可能改不了。这种情况下别硬改,直接在你自己的设备上手动指定网关和 DNS,虽然麻烦,但至少可控。
旁路由这套方案的本质是「用最小改动换取可控性」。它不追求全屋完美,只保证你自己那几台设备按预期工作——对家庭网络来说,这通常已经够了。
评论
评论功能默认关闭。想开启的话,去
src/lib/site.ts里把giscus.enabled改成true,填上你的repo和repoId即可——基于 GitHub Discussions, 不需要服务器,也不用数据库。