旁路由:网关与 DNS 分流配置

旁路由是 OpenWrt 玩家最常采用的部署形态。不改动主路由的拨号和原有网络,只把一台 OpenWrt 设备旁挂在局域网里,需要它的设备把网关指过来,就能享受广告过滤、流量统计、智能队列这些高级功能,不影响其他人上网。本篇把旁路由的本质、配置步骤和验证方法一次讲清。

旁路由到底在做什么

很多教程一上来就给配置命令,但先理解原理才不会在出错时抓瞎。所谓旁路由,本质是一台不负责拨号、不分配 IP 的辅助网关。主路由照常工作,OpenWrt 只静静挂在一边;客户端主动把默认网关改成 OpenWrt 的地址,流量先经过它处理,再由它转发给主路由出网。

这个模式的好处是风险可控:OpenWrt 宕机了,只影响手动指向它的设备,家里其他人照常上网。代价是多了一跳转发,配置不当时还可能形成环路。

判断一台设备适不适合当旁路由,主要看三点:网口速率够不够(千兆环境至少千兆口)、CPU 能不能扛住转发和插件开销、内存是否足够跑你想用的服务。闲置的旧路由器、小主机、甚至 Docker 里的 OpenWrt 容器都可以胜任,具体硬件选择可以参考 软路由硬件入门 的对比建议。

旁路由流量走向

标准配置流程

假设主路由是 192.168.1.1,旁路由用 192.168.1.2。完整步骤分三块:改接口、关 DHCP、加防火墙规则。

首先是 LAN 接口配置。旁路由本身没有 WAN 口角色,它通过 LAN 口接入主路由,所以要给 LAN 口设静态地址、把网关和 DNS 指向主路由:

uci set network.lan.proto='static'
uci set network.lan.ipaddr='192.168.1.2'
uci set network.lan.netmask='255.255.255.0'
uci set network.lan.gateway='192.168.1.1'
uci set network.lan.dns='192.168.1.1'
uci commit network

然后是关闭旁路由自己的 DHCP 服务。这一步极其关键:两个 DHCP 服务器同时在局域网里工作,客户端会随机拿到其中之一的网关,表现就是网络时好时坏:

uci set dhcp.lan.ignore='1'
uci commit dhcp

最后补一条防火墙规则,让旁路由发给主路由的流量做源地址转换,避免回包路径不一致:

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

三条做完,重启网络和 DHCP 服务,旁路由本体就配好了。整套操作在 LuCI 界面里也能完成:Network → Interfaces 编辑 LAN 填静态地址,DHCP Server 勾选 Ignore interface,位置一一对应。

几个新手必知的小细节。其一,改 LAN IP 后你的管理地址就变了,重启网络服务会立刻断开 SSH 会话,提前在新地址上做好重连准备,别被踢出来以为设备死了。其二,旁路由的 LAN 口和 WiFi 可以同时开着,无线终端连上旁路由的 WiFi 也会自动走它转发,省得逐台改配置。其三,eth0 只是示例设备名,旁路由只有一张网卡时它通常就是 LAN 口;有些设备(比如常见的 N1 盒子)内置网卡编号是 eth0,多口软路由则要看好实际桥接的是哪个,用 LuCI 接口页能直接确认。

部署形态速览

同样是叫旁路由,实际落地有几种形态,资源和需求决定选哪种。

形态 硬件 优点 注意点
独立设备 旧路由或小主机 稳定、互不影响 占一个网口和插座
容器形态 NAS 或服务器里 零额外硬件 依赖宿主机网络配置
临时插网线 笔记本演示用 即插即拔 仅适合验证功能

容器形态近年很流行:在 NAS 上跑一个 OpenWrt 容器当旁路由,好处是充分利用现有算力、备份快照方便;代价是网络配置要改宿主机网卡,比如开混杂模式、建 macvlan 网络,对 Docker 新手有一点点门槛。如果你的 NAS 性能富裕,这是最省钱省电的折腾方式。

让设备走旁路由

旁路由配好只是搭好了路,还要告诉设备走这条路。两种粒度可选。

单设备手动改:在自己电脑或手机的设置里,把 IP 改成静态,网关和 DNS 都填 192.168.1.2。这种方式最灵活,想恢复改回 DHCP 即可,适合先拿一两台设备试水。 主路由统一下发:在主路由的 DHCP 设置里,把默认下发的网关和 DNS 参数改成旁路由地址,全家用网设备自动生效。部分主路由还支持按设备分配不同的 DHCP 参数,给指定 MAC 单独下发旁路由网关,别的设备维持原样。如何让你的设备寻址到网关,涉及 DHCP 与基础网络 讲过的地址分配机制,不熟悉的可以先行复习。

两种方式都要配套检查 DNS 指向。很多新手只改网关不改 DNS,结果广告过滤、分流这类依赖 DNS 的功能全部失效。一个验证小技巧:在设备上执行 tracert 任意外网地址,第一跳应该显示 192.168.1.2,而不是主路由。

顺带说说无线设备怎么走旁路由。手机、平板这类设备改静态 IP 的操作系统各不相同,iOS 在无线局域网里点配置 IP,安卓是网络详情里的高级选项,Windows 在适配器属性里。改完之后建议断开重连一次 WiFi,确认新网关生效。如果家中来客频繁、不便逐台改动,才考虑走主路由统一下发这条路。操作细节上,同样建议通过 SSH 远程登录 先把旁路由自身调通,再动客户端,出问题时的故障面会小很多。

配好旁路由之后建议尽快做一次压力验证:让一台设备持续从旁路由出网,另一台设备不经它直连主路由,两边同时测速对比。如果前者速率明显低于后者,说明旁路由转发能力成了瓶颈,要么升级硬件,要么只把真正需要旁路由功能的设备指过去。旁路由的定位是功能层不是性能层,心里有这条线,部署架构才不会走偏。

旁路由上适合跑什么旁路由最常见的用途集中在三类,都不需要改动主路由任何设置。第一类是 DNS 层面的增强:广告过滤、域名分流、自定义解析记录,只要客户端的 DNS 指向旁路由就生效,是门槛最低、效果最直观的玩法。第二类是流量观察:按设备统计连接数和带宽占用,家里谁在偷偷下大文件一目了然,排查网络卡顿时特别有用。第三类是出口管理:做智能队列限速缓解缓冲膨胀,配合多 WAN 做分流和故障转移。

不适合放在旁路由上的,是对转发性能要求极高的场景。旁路由多一跳转发,千兆线速 firewall offload 之类的能力都会打折,把它当主路由性能用是不现实的。态度上把旁路由定位成增强层而非主力层,功能取舍会更清楚。

配置自查表

按这张表逐项核对,能排除九成旁路由疑难杂症。

检查项 期望状态 出错时的现象
旁路由 LAN 网关 指向主路由 IP 旁路由自身无法上网
DHCP 服务 已关闭 设备时好时坏随机断网
IP 地址冲突 无 设备时通时断
客户端网关 指向旁路由 流量绕过旁路由
客户端 DNS 指向旁路由 过滤功能无效
防火墙 NAT 规则 已添加 部分网站打不开

特别强调第二项。有些教程会说保留 DHCP 也行,那是极少数特例。绝大多数情况下,旁路由必须关闭 DHCP,由主路由统一分配 IP。发现故障时,先 logread 看日志,再按上表排查,比无目的地重启设备管用得多。

两种接入方式对比;手动改网关,粒度细好回退;主路由统一下发,全家自动生效但牵一发动全身

IPv6 环境下的特殊问题

IPv6 让旁路由配置变得复杂。原因是 IPv6 地址不经过传统 NAT,客户端拿到的公网 IPv6 地址由主路由的前缀分配决定,旁路由插在中间很难透明接管。常见症状是 IPv6 流量绕过了旁路由上的过滤规则,或者完全不通。

对新手最务实的建议是:初期先把 IPv6 的旁路由处理放一放,专注于 IPv4 的功能验证;熟悉之后,再研究在旁路由上做 NDP 代理或中继模式接管 IPv6 前缀分配。这方面的深入内容,我们放在《IPv6 透传与内网访问》一篇展开。

顺带回答一个被问得最多的问题:旁路由 坏了会连累全家上网吗?答案是只要客户端不是被统一下发的,指向它的设备断网、其它设备照常,这正是旁路由形态最大的价值所在。被统一下发的情况下确实会全军覆没,所以生产环境用统一下发方案时,旁路由自身的稳定性(电源、散热、固件质量)就要按主路由的标准来对待了。备用方案也提前想好:紧急情况下把主路由 DHCP 的网关参数改回自己,两分钟就能让全家恢复。

家庭带宽使用分布

延伸阅读

  • 《IPv6 透传与内网访问》:理解 IPv6 地址分配机制,是处理高级旁路由问题的前提。
  • 《自建 DNS 与 hosts 去广告》:DNS 指向旁路由之后,下一步就是搭建自己的过滤体系。
  • 《常见故障排查清单》:旁路由常见症状的速查手册。