OpenWrt 全屋翻墙旁路由实现记录

Last Updated on 2026-01-31

OpenWrt 全屋翻墙旁路由实现记录

前言

很多人认为软路由必须买专门的工控机,但作为开发者,我们手头闲置的性能怪兽才是最佳选择。本次实验对象是一台拥有 4核8线程 i7-7700HQ 的神舟 战神Z7 kp7d2,它是我的私人服务器。我们将通过 Docker Macvlan 技术,让它在不破坏原宿主机 宝塔面板环境的前提下,化身为全家网络的“大脑”。


第一部分:宿主机(Ubuntu)的地基搭建

在 Docker 运行旁路由,最难的不是容器本身,而是宿主机网卡的权限。

开启内核转发

Linux 默认不转发包,不开启此项,流量进得来出不来。

Bash

sudo sysctl -w net.ipv4.ip_forward=1
# 永久生效echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

网卡混杂模式(Promiscuous Mode)

这是最容易被忽视的巨坑。 旁路由需要处理不属于自己 MAC 地址的包,必须开启混杂模式。

Bash

sudo ip link set enp2s0 promisc on

创建 Macvlan 网络

我们需要给 Docker 容器一个真实的局域网身份,使其与小米 BE3600 路由器处于同一地位。

Bash

docker network create -d macvlan \
  --subnet=192.168.31.0/24 \
  --gateway=192.168.31.1 \
  -o parent=enp2s0 macnet

第二部分:OpenWrt 容器部署与网络调优

启动容器

使用特权模式运行,确保 OpenWrt 能修改容器内核网络。

Bash

docker run -d --name openwrt --restart always --privileged --network macnet --ip 192.168.31.2 sulinggg/openwrt:x86_64 /sbin/init

接口配置(单臂路由逻辑)

进入 OpenWrt 后台(192.168.31.2),进入 网络 -> 接口 -> LAN

  • IPv4 网关:必须指向小米路由器 192.168.31.1
  • 使用自定义 DNS:建议填 192.168.31.1
  • IPv6:将分配长度设为“已禁用”。旁路由架构下,IPv6 是导致手机“WiFi 图标消失”和“假断网”的元凶。
  • DHCP 服务器:勾选“忽略此接口”,让小米路由器继续负责分配 IP。

防火墙补丁(必做)

网络 -> 防火墙 -> 自定义规则 添加: iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE 这行命令强制 OpenWrt 进行 SNAT 转换,解决小米路由器不认识回程流量的问题。


第三部分:OpenClash 高级配置(梯子落地)

OpenClash 是基于规则的 Clash 客户端,由于我们的 CPU 性能过剩,建议开启全功能模式。

模式选择

  • Redir-Host:最稳定的模式,适合 Docker 环境。
  • 规则模式 (Rule):实现国内流量直连,美国服务器流量走代理的核心。

DNS 防污染设置

进入 OpenClash -> 全局设置 -> DNS 设置

  • 勾选 本地 DNS 劫持:确保所有设备的域名请求都被 OpenClash 接管。

  • 勾选 自定义上游 DNS

    • 国内:阿里云 (223.5.5.5)、腾讯 (119.29.29.29)。
    • 国外:Google (8.8.8.8)。
  • 分流逻辑:国内域名通过国内 DNS 解析并直连,国外域名通过加密隧道解析。

节点导入与启动

  • 配置文件订阅 中贴入你的美国服务器链接,点击更新。
  • 回到 运行状态 点击“启动 OpenClash”。

第四部分:全屋自动起飞(小米 BE3600 配置)

当你手动在手机上设置 192.168.31.2 作为网关能通了,就可以去小米路由器后台改 DHCP:

  • 默认网关192.168.31.2
  • DNS 1192.168.31.2
  • DNS 2192.168.31.1 (备用方案)
  • 关闭IPV6,现在我还不会怎么做IPV6翻墙

第五部分:踩坑实录与总结

那个该死的“193”

在配置手机静态 IP 时,千万注意不要手抖将 192 写成 193。这种低级错误会导致内网能进后台,但流量永远发不到真正的网关上。我成功的把192.168.xx.x写成了193.xx.x.x, 卡我2天

为什么重启后没网了?

因为 Ubuntu 重启后网卡混杂模式会失效。 解决方案: 编写一个 Shell 脚本,包含 ip link set enp2s0 promisc on,并利用 crontab @rebootsystemd 实现开机自启。

手机 WiFi 图标消失

这通常是由于手机发出的检测包(访问苹果或谷歌的验证服务器)没有得到回包。检查 OpenClash 的节点是否可用,以及防火墙的 MASQUERADE 规则是否生效。

结语

这次折腾让我们明白了,旁路由不是一个插件那么简单,它是一场关于 Linux 网络转发、防火墙规则和 DNS 解析的综合实践。神舟笔记本 i7 的性能让网页开启速度达到了毫秒级,这才是开发者该有的网络环境!