OpenWrt单线多拨教程:mwan3实现网速叠加

目标:用一条宽带拨出多个 PPPoE 连接,把网速叠加起来
效果:单线下行速度接近理论倍数(实际能否叠加取决于运营商策略
前置:光猫已改桥接,OpenWrt 已能正常拨号
难度:中高 —— 需要改配置文件,不是点几下就能完成
耗时:约 60 分钟

一、先搞清楚:多拨为什么能提速

运营商的限速逻辑

宽带账号的速率限制通常有两个层面:

层面 说明 账号级限速 一个账号最大速率,比如 500Mbps 端口级限速 光猫 PON 口的物理上限,通常远高于账号速率

多拨的原理:用同一个账号发起多个 PPPoE 连接。
如果运营商允许,每个连接会各自获得一份带宽
再用 mwan3 把流量分摊到多个连接上,总速度就能叠加

但关键前提是:运营商必须允许

很多运营商在 BRAS 侧限制「同一账号只能一个会话」
这种情况下你只能拨上一个,多拨无从谈起。

情况 结果 运营商允许多会话 ✅ 可以多拨、可以叠加 运营商限单会话 ❌ 只能拨上一个 运营商允许多会话但共用带宽 ⚠️ 能多拨,但速度不叠加

所以第一步不是配 OpenWrt,而是确认你的宽带能不能多拨。

二、前置条件检查(10 分钟)

1. 光猫必须已改桥接

这是硬性前提。 如果光猫还在路由模式,多拨在光猫那一层就被挡住了。

完整步骤见 光猫改桥接教程,要点:

  • 拿到光猫超级密码
  • 把上网的 VLAN 改为桥接,由自己的路由器拨号
  • 备份原配置(重要)

2. 测试运营商是否允许多拨

最简单的测试方法

  1. 用电脑直接接光猫 LAN 口,用宽带账号拨号(Windows 的宽带连接)
  2. 让路由器也同时拨号(同一个账号)
  3. 如果两个都能上网 → 运营商允许多拨

也可以用 OpenWrt 手动多拨一次测试(见第四节的方法)。

3. 准备硬件

方案 说明 物理多网口 最稳,但需要多个网口接同一交换机 macvlan 虚拟接口(推荐) 单网口即可,靠软件虚拟出多个 MAC

macvlan 方案的优势:不需要额外网卡,一个 WAN 口就能虚拟出多个接口。

4. 确认 OpenWrt 版本

这一步很关键 —— mwan3 有 iptables 和 nftables 两个版本:

# 查看防火墙后端
opkg list-installed | grep -E 'iptables|nftables'
结果 该装哪个 mwan3 有 iptables mwan3(iptables 版) 有 nftables mwan3(nftables 版)

装错版本会导致规则不生效 —— 这是最常见的坑。

三、安装 mwan3

SSH 登录 OpenWrt,执行:

opkg update
opkg install mwan3
opkg install luci-app-mwan3

如果需要 macvlan 虚拟接口(单网口多拨):

opkg update
opkg install kmod-macvlan

以上命令来自 OpenWrt 官方文档。

四、方法一:macvlan 单线多拨(推荐)

第 1 步:创建 macvlan 虚拟接口

编辑 /etc/config/network,添加虚拟设备:

config device 'veth5'
    option name 'veth5'
    option type 'macvlan'
    option ifname 'eth1'      # 改成你的 WAN 口名

config device 'veth7'
    option name 'veth7'
    option type 'macvlan'
    option ifname 'eth1'

说明(官方文档给的示例):

  • veth5 / veth7 是虚拟接口名,可以自定义
  • type 'macvlan' 表示这是 macvlan 类型
  • ifname 'eth1' 必须改成你实际接光猫的那个物理口

怎么查物理口名

ip link show
uci show network | grep ifname

第 2 步:为每个虚拟接口创建拨号

继续编辑 /etc/config/network,加重播的 WAN 接口:

config interface 'wan1'
    option ifname 'veth5'
    option proto 'pppoe'
    option username '你的宽带账号'
    option password '你的宽带密码'
    option ipv6 '1'

config interface 'wan2'
    option ifname 'veth7'
    option proto 'pppoe'
    option username '你的宽带账号'    # 同一个账号
    option password '你的宽带密码'
    option ipv6 '1'

注意:账号密码和主 WAN 一致(多拨用的是同一个账号)。

第 3 步:验证多拨是否成功

# 重启网络
/etc/init.d/network restart

# 等 30 秒后查看接口状态
ifstatus wan1 | grep -E 'up|address'
ifstatus wan2 | grep -E 'up|address'

# 或者直接看有没有拿到不同的 IP
ip addr show veth5
ip addr show veth7

成功标志

  • 两个接口都 up
  • 拿到了不同的公网 IP(这是关键)

如果第二个拨不上

  • 说明运营商限制单会话 → 这个宽带不能多拨
  • 或者需要错开拨号时间(有些 BRAS 需要)

五、方法二:物理多网口

如果路由器有多个网口,可以直接每个口接一根线到光猫/交换机:

config interface 'wan1'
    option ifname 'eth1'      # 物理网口
    option proto 'pppoe'
    option username '账号'
    option password '密码'

config interface 'wan2'
    option ifname 'eth2'      # 另一个物理网口
    option proto 'pppoe'
    option username '账号'
    option password '密码'

优点:不需要 macvlan,更稳定
缺点:需要多个网口,且要都能接到光猫所在网络

六、配置 mwan3 负载均衡

接口拨通后,用 mwan3 把流量分摊到多条线路上。

第 1 步:确认 mwan3 接口

编辑 /etc/config/mwan3

config interface 'wan1'
    option enabled '1'
    list track_ip '1.0.0.1'
    list track_ip '1.1.1.1'
    list track_ip '208.67.222.222'
    list track_ip '208.67.220.220'
    option family 'ipv4'

config interface 'wan2'
    option enabled '1'
    list track_ip '1.0.0.1'
    list track_ip '1.1.1.1'
    list track_ip '208.67.222.222'
    list track_ip '208.67.220.220'
    option family 'ipv4'

track_ip 是什么:mwan3 用这些 IP 做连通性探测
如果某个 WAN 探测失败,mwan3 会自动把流量切到其他线路。

(这些 IP 是官方文档给的示例:Cloudflare 的 1.1.1.1、OpenDNS 的 208.67.x.x 等)

第 2 步:配置成员和权重

config member 'wan1_m1_w3'
    option interface 'wan1'
    option metric '1'
    option weight '3'        # 权重:3 份

config member 'wan2_m1_w3'
    option interface 'wan2'
    option metric '1'
    option weight '3'        # 权重:3 份

weight 决定流量分配比例

配置 效果 两个都是 weight '3' 各分 50% wan1 是 3,wan2 是 1 wan1 分 75%,wan2 分 25%

如果两条线路速度不同(比如一条 500M、一条 300M),
按速度比例设置权重效果更好。

第 3 步:配置策略

config policy 'balanced'
    list use_member 'wan1_m1_w3'
    list use_member 'wan2_m1_w3'
    option last_resort 'unreachable'

第 4 步:配置规则

config rule 'default_rule_v4'
    option dest_ip '0.0.0.0/0'
    option family 'ipv4'
    option use_policy 'balanced'

这条规则的含义:所有 IPv4 出站流量都走 balanced 策略(负载均衡)。

第 5 步:全局设置

config globals 'globals'
    option local_source 'lan'
    option mmx_mask '0x3F00'

mmx_mask 是 mwan3 用来给流量打标记的位掩码,官方默认 0x3F00
除非和其他也用防火墙标记的插件冲突,否则不要改。

第 6 步:重启并验证

/etc/init.d/mwan3 restart
mwan3 status

mwan3 status 应该显示

  • 两个 interface 都是 online
  • 有流量统计

注意:如果显示 offline,通常是 track_ip 探测不通,
可以换成国内的稳定 IP(比如 223.5.5.5 阿里 DNS)。

七、验证提速效果

用测速工具

# 在局域网设备上测(不要在路由器上测,CPU 会是瓶颈)
# 或者用 iperf3 测多线程
iperf3 -c 测速服务器 -P 8

建议用多线程测速(单线程只能跑一条线路,看不出叠加效果)。

关键:单线程 vs 多线程的区别

测试方式 结果 单线程下载 只能跑满一条线路 多线程下载 能跑出叠加后的总速度

这解释了一个常见困惑
「我明明多拨成功了,为什么下载还是 500M?」
—— 因为你用的是单线程下载,它只会走一条线路。

mwan3 是基于连接做负载均衡的:
同一个 TCP 连接只走一条线路,不同连接才会分摊。

检查 NAT 类型是否变化

多拨后 NAT 类型可能改变,用 NAT 类型检测工具 看一下。

如果原来是 NAT1,多拨后可能变成 NAT3 —— 因为多线路出口造成地址不一致。

八、多拨的副作用与风险

这一节是别的教程很少讲的,但很重要。

1. 运营商封禁风险

部分运营商在服务条款里禁止多拨。

风险等级 情况 低 运营商默许(很多地区如此) 中 检测到多拨后限速 高 判定为异常使用,停机或要求整改

建议

  • 不要拨太多(2-3 个通常安全,10+ 个容易被检测)
  • 不要长时间跑满带宽
  • 如果被限速或停机,先把多拨关掉再联系客服

2. 对 IPTV 的影响

多拨会改变你的网络结构,可能导致:

  • IPTV 的 VLAN 被多拨流量干扰
  • 机顶盒无法通过 IGMP 组播

如果你同时用 IPTV,建议:

  • 把 IPTV 的接口排除在 mwan3 之外(不要参与负载均衡)
  • 或者参考 NAS组播转单播方案 改用组播转单播

3. 对 IPv6 的影响

多拨对 IPv6 的影响比较大

  • 每个 PPPoE 连接会拿到不同的 IPv6 前缀(PD)
  • 设备会拿到多个 IPv6 地址
  • 可能导致 IPv6 路由混乱

建议

  • 如果 IPv6 用得不多,可以在 mwan3 里只对 IPv4 做负载均衡
  • IPv6 检测工具 验证多拨后的连通性

4. 对 NAS 远程访问的影响

这是最容易被忽略的坑

多拨后你有多个公网 IP,但 DDNS 只能解析到一个
如果 DDNS 解析的 IP 和你实际出口不一致,远程访问会失败

解决方案

  • 在 mwan3 里做端口转发策略,让特定流量固定走某条线路
  • 或者只给一条线路配 DDNS,其他线路只做下载加速

九、常见问题解答

Q1:多拨后网速没变化?

按顺序排查:

  1. 确认真的拨上了多个 —— mwan3 status 看是否都 online
  2. 确认拿到了不同的公网 IP —— 相同 IP 说明没真正多拨
  3. 用多线程测速 —— 单线程只能跑一条线路
  4. 确认运营商没做账号级限速

Q2:为什么只能拨上 1-2 个?

最常见的原因:运营商在 BRAS 侧限制了并发会话数。

其他可能

  • macvlan 的 MAC 地址冲突(每个虚拟口应该有独立 MAC)
  • 拨号太频繁被临时封禁
  • 光猫的会话数限制

Q3:多拨会不会被运营商封号?

有可能,取决于运营商政策。

风险提示:部分运营商的服务条款明确禁止多拨。
建议控制在 2-3 个连接,不要长时间跑满。
如果收到运营商通知,立即停止多拨

Q4:多拨后 IPTV 看不了怎么办?

原因:多拨的流量干扰了 IPTV 的 VLAN。

解决

  1. 在 mwan3 里排除 IPTV 接口
  2. 或者参考 NAS组播转单播方案

Q5:IPv6 会受影响吗?

会。 多拨会导致多个 IPv6 前缀,可能造成路由混乱。

建议:只在 mwan3 里对 IPv4 做负载均衡。
验证工具:IPv6 连接测试

Q6:软路由需要什么配置?

多拨对 CPU 的要求不高(主要消耗在网络转发)。

场景 建议 千兆以下 N100 级别的软路由足够 多拨 + 千兆以上 建议 J4125 以上,且需要 2.5G 网口 同时跑其他服务 留出 CPU 余量

具体型号的跑分参考 NAS CPU 性能天梯图

Q7:多拨后能做端口映射吗?

能,但要注意出口 IP 问题。

由于有多个公网 IP,外部访问时可能只到其中一个。

建议:用 mwan3 的规则让特定服务固定走一条线路。

Q8:mwan3 显示 offline 怎么办?

通常是 track_ip 探测不通。

官方示例用的是国外 IP(1.1.1.1、208.67.x.x),国内可能不通。

改成国内稳定 IP

list track_ip '223.5.5.5'      # 阿里 DNS
list track_ip '119.29.29.29'   # 腾讯 DNS

十、总结

多拨的三个前提

# 前提 1 光猫已改桥接 2 运营商允许多拨(这是最关键的,测不出来就别折腾) 3 mwan3 版本与防火墙后端匹配(iptables / nftables)

最容易踩的三个坑

  1. 单线程测速看不到叠加 —— mwan3 是按连接负载均衡的
  2. mwan3 装错版本 —— iptables 版装在 nftables 系统上不生效
  3. DDNS 只指向一个 IP —— 多拨后远程访问可能失败

一句实话

多拨不是万能的。 它的效果完全取决于运营商策略:

  • 运营商允许 → 可能翻倍
  • 运营商限制 → 一个都拨不上
  • 运营商默许但共用带宽 → 能拨上但不提速

在花时间配置之前,先用第二节的方法测试一下能不能多拨。
这能帮你省下几个小时。