Linux旁路由核心是让内网设备自愿交流量给它处理,不替代主路由;关键三步:开启IPv4转发(echo 1 > /proc/sys/net/ipv4/ip_forward并永久配置)、配置静态内网IP且不设默认网关、用iptables放行转发并MASQUERADE源地址转换,最后通过DHCP或手动设置客户端网关指向旁路由IP。

Linux 实现旁路网关(即旁路由)的路由转发,核心不是替换主路由,而是让部分或全部内网设备把流量“自愿交”给这台 Linux 主机处理。它不接管 WAN 接入,只负责内网到出口的策略转发(如透明代理、广告过滤、分流等),因此叫“旁路”。实现关键在三步:开启转发、配通路由、控制流向。
开启 IPv4 转发功能
这是所有转发行为的前提,内核默认关闭。
临时启用:
echo 1 > /proc/sys/net/ipv4/ip_forward
永久生效(推荐):
编辑 /etc/sysctl.conf,确保含这一行:
net.ipv4.ip_forward = 1
然后运行 sysctl -p 加载生效。
配置网络接口与基础路由
旁路由通常只有一个物理网卡(接入同一局域网),所以不需要双网卡拓扑。
- 给它分配一个静态内网 IP(如
192.168.0.20/24),确保和主路由同网段; - 主路由仍作为默认网关(
192.168.0.1),但旁路由本身不设默认网关(避免环路),除非它还要上外网做代理出口; - 若需访问外网(比如 curl 测试代理隧道),可临时加一条默认路由指向主路由:
ip route add default via 192.168.0.1 dev eth0
但注意:这条不能和后续 NAT 规则冲突,旁路由自身上网和转发流量要区分清楚。
设置 iptables 转发与伪装规则
仅开启转发还不够,Linux 默认 FORWARD 链是 DROP,必须显式放行并做源地址转换(SNAT/MASQUERADE)。
放行内网到旁路由的转发流量:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -j ACCEPT iptables -A FORWARD -s 0.0.0.0/0 -d 192.168.0.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT
做 SNAT,让返回包能正确回到客户端(关键!否则响应无法回包):
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 192.168.0.20
或者用 MASQUERADE(更通用,适合 IP 可能变动的场景):
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
⚠️ 注意:若系统装了 Docker,默认会修改 iptables 链并干扰 SNAT,建议停用或调整其 iptables 设置(如 --iptables=false 启动 daemon)。
让客户端走旁路由
这才是“旁路生效”的最后一步:
- 方法一(全网段):在主路由 DHCP 设置中,把「默认网关」和「DNS 服务器」都填成旁路由 IP(如
192.168.0.20); - 方法二(指定设备):在目标客户端手动改网关为
192.168.0.20,DNS 可同步改或保留主路由; - 验证是否生效:客户端执行
ip route show,应看到默认网关指向旁路由;再ping 192.168.0.20确认可达,curl -I http://httpbin.org看响应头是否含旁路由特征(如自定义 header 或经代理日志)。
不复杂但容易忽略


















