OpenWrt 双线双拨折腾记:完美解决重启断网与海内外精准分流

硬件环境: i5-4200U 小主机(物理机直装纯 OpenWrt,不套 PVE 虚拟机) 网络环境: 双线宽带接入(电信 + 移动) 核心需求:

  1. 解决 OpenWrt 重启后 IPv4 瘫痪、只有 IPv6 能通的玄学 Bug。
  2. 实现精准的多线负载均衡:国内网站(如 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 来进行分流。

踩坑记录:

  1. 老插件失效: mwan3helper 由于内置下载源失效,且底层仍在使用老旧的 ipset 命令,与新版 OpenWrt 的 nftables 防火墙产生代沟,直接罢工。
  2. 抓取节点 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 成员与策略 (按比例分配)

进入 网络 -> 负载均衡

  1. 成员 (Members):定义 4 个基础组件
    • telecom_dom (国内电信):跃点 1,比重 1
    • mobile_dom (国内移动):跃点 1,比重 1
    • telecom_proxy (海外电信):跃点 1,比重 1
    • mobile_proxy (海外移动):跃点 1,比重 3(以此实现移动流量占 75%)
  2. 策略 (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 性能冗余极大,这套纯系统级路由表分流方案跑起来极其丝滑、免维护。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇