硬件环境: i5-4200U 小主机(物理机直装纯 OpenWrt,不套 PVE 虚拟机) 网络环境: 双线宽带接入(电信 + 移动) 核心需求:
- 解决 OpenWrt 重启后 IPv4 瘫痪、只有 IPv6 能通的玄学 Bug。
- 实现精准的多线负载均衡:国内网站(如 B 站、淘宝)双线 1:1 叠加;海外网站及科学代理流量(Passwall),指定优先走移动宽带(例如 3:1 甚至全走移动)。
痛点一:重启后 IPv4 瘫痪的“玄学”排查
现象: 路由器运行稳定,但只要一重启,局域网设备就无法访问 IPv4 网站(ping 223.5.5.5 不通),而 IPv6 网站(如 www.163.com)却畅通无阻。WAN 口显示已获取 IP。
排查与原因: 典型的 OpenWrt “启动抢跑(Race Condition)” 问题。由于 mwan3(多线负载均衡插件)和代理插件的启动速度远快于 WAN 口 PPPoE/DHCP 拨号获取网关的速度。导致底层路由表(nftables/iptables)在没有网关的时候就被强行注入了分流规则,最终 IPv4 流量被全部引向“黑洞”。
解决方案: 延迟重启服务。 放弃复杂的修改服务优先级,直接在“本地启动脚本”中加入延时代码,等网络彻底通了之后,再重新唤醒 mwan3 加载规则。
痛点二:海内外精准分流的“弯路”与“顿悟”
最初设想是利用 luci-app-mwan3helper 插件,或者通过 Dnsmasq / Passwall 内部命令(ipset list / nft list sets)去抓取代理节点的 IP 来进行分流。
踩坑记录:
- 老插件失效:
mwan3helper由于内置下载源失效,且底层仍在使用老旧的ipset命令,与新版 OpenWrt 的nftables防火墙产生代沟,直接罢工。 - 抓取节点 IP 太繁琐: 机场节点域名常变,且 Passwall 内部机制复杂,强行对接
mwan3极易翻车。
终极顿悟:反向排除法(大道至简) 既然抓取“海外 IP”和“节点 IP”犹如大海捞针,不如直接把“国内 IP”全部打包作为白名单! 逻辑极其简单:只要你访问的 IP 在“国内中国 IP 库”里,就走 1:1 双线叠加;只要不在这个库里(无论是节点 IP 还是 OneDrive 直连),统统掉入兜底规则,走移动高权重的海外策略。
终极实战配置(保姆级作业)
第一步:编写一石二鸟的“开机脚本”
利用国内极速的 clang.cn 路由表,每次开机不仅能延时修复重启断网,还能顺手把最新的国内 IP 库下载并塞进 mwan3。
进入 系统 -> 启动项 -> 本地启动脚本 (/etc/rc.local),在 exit 0 上方添加:
Bash
# 1. 延时 15 秒,等待双线 WAN 口拨号彻底完成
sleep 15
# 2. 创建名为 cn_ips 的 IP 集合
ipset -! create cn_ips hash:net
# 3. 极速下载国内 IP 库并批量导入集合 (i5 处理器一秒搞定)
wget -qO- http://ispip.clang.cn/all_cn.txt | awk '/^[0-9]/{print "add cn_ips "$1}' | ipset restore -!
# 4. 重启 mwan3,彻底解决断网并加载最新规则
/etc/init.d/mwan3 restart
(验证方法:SSH 登录后台,执行 ipset list cn_ips | wc -l,如果返回 4000 左右的数字,说明国内 IP 库加载成功!)
第二步:配置 mwan3 成员与策略 (按比例分配)
进入 网络 -> 负载均衡:
- 成员 (Members):定义 4 个基础组件
telecom_dom(国内电信):跃点 1,比重 1mobile_dom(国内移动):跃点 1,比重 1telecom_proxy(海外电信):跃点 1,比重 1mobile_proxy(海外移动):跃点 1,比重 3(以此实现移动流量占 75%)
- 策略 (Policies):打包成员
policy_domestic(国内策略):包含telecom_dom和mobile_dom(实现 1:1 叠加)policy_proxy(海外策略):包含telecom_proxy和mobile_proxy(实现 3:1 移动优先)
第三步:配置 mwan3 规则 (极简两段式)
进入 网络 -> 负载均衡 -> 规则,删除多余规则,只保留自上而下两条:
1. 规则名:Domestic_Traffic(处理所有国内流量)
- 源地址/目标地址:留空
- IPset:填写
cn_ips - 分配策略:选择
policy_domestic
2. 规则名:default_rule(处理所有海外/节点流量)
- 置于列表最底部
- 源地址/目标地址/IPset:全部留空
- 分配策略:选择
policy_proxy
最终效果: 完美绕开所有复杂的插件底层冲突。国内看视频测速,实时流量图双线齐头并进;科学上网或直连海外服务器,流量图精准向移动宽带倾斜。i5-4200U 性能冗余极大,这套纯系统级路由表分流方案跑起来极其丝滑、免维护。