目标:用一条宽带拨出多个 PPPoE 连接,把网速叠加起来
效果:单线下行速度接近理论倍数(实际能否叠加取决于运营商策略)
前置:光猫已改桥接,OpenWrt 已能正常拨号
难度:中高 —— 需要改配置文件,不是点几下就能完成
耗时:约 60 分钟
一、先搞清楚:多拨为什么能提速
运营商的限速逻辑
宽带账号的速率限制通常有两个层面:
多拨的原理:用同一个账号发起多个 PPPoE 连接。
如果运营商允许,每个连接会各自获得一份带宽,
再用 mwan3 把流量分摊到多个连接上,总速度就能叠加。
但关键前提是:运营商必须允许
很多运营商在 BRAS 侧限制「同一账号只能一个会话」。
这种情况下你只能拨上一个,多拨无从谈起。
所以第一步不是配 OpenWrt,而是确认你的宽带能不能多拨。
二、前置条件检查(10 分钟)
1. 光猫必须已改桥接
这是硬性前提。 如果光猫还在路由模式,多拨在光猫那一层就被挡住了。
完整步骤见 光猫改桥接教程,要点:
- 拿到光猫超级密码
- 把上网的 VLAN 改为桥接,由自己的路由器拨号
- 备份原配置(重要)
2. 测试运营商是否允许多拨
最简单的测试方法:
- 用电脑直接接光猫 LAN 口,用宽带账号拨号(Windows 的宽带连接)
- 让路由器也同时拨号(同一个账号)
- 如果两个都能上网 → 运营商允许多拨
也可以用 OpenWrt 手动多拨一次测试(见第四节的方法)。
3. 准备硬件
macvlan 方案的优势:不需要额外网卡,一个 WAN 口就能虚拟出多个接口。
4. 确认 OpenWrt 版本
这一步很关键 —— mwan3 有 iptables 和 nftables 两个版本:
# 查看防火墙后端
opkg list-installed | grep -E 'iptables|nftables'
iptablesnftables装错版本会导致规则不生效 —— 这是最常见的坑。
三、安装 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'wan1 是 3,wan2 是 1如果两条线路速度不同(比如一条 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:多拨后网速没变化?
按顺序排查:
- 确认真的拨上了多个 ——
mwan3 status看是否都 online - 确认拿到了不同的公网 IP —— 相同 IP 说明没真正多拨
- 用多线程测速 —— 单线程只能跑一条线路
- 确认运营商没做账号级限速
Q2:为什么只能拨上 1-2 个?
最常见的原因:运营商在 BRAS 侧限制了并发会话数。
其他可能:
- macvlan 的 MAC 地址冲突(每个虚拟口应该有独立 MAC)
- 拨号太频繁被临时封禁
- 光猫的会话数限制
Q3:多拨会不会被运营商封号?
有可能,取决于运营商政策。
风险提示:部分运营商的服务条款明确禁止多拨。
建议控制在 2-3 个连接,不要长时间跑满。
如果收到运营商通知,立即停止多拨。
Q4:多拨后 IPTV 看不了怎么办?
原因:多拨的流量干扰了 IPTV 的 VLAN。
解决:
- 在 mwan3 里排除 IPTV 接口
- 或者参考 NAS组播转单播方案
Q5:IPv6 会受影响吗?
会。 多拨会导致多个 IPv6 前缀,可能造成路由混乱。
建议:只在 mwan3 里对 IPv4 做负载均衡。
验证工具:IPv6 连接测试
Q6:软路由需要什么配置?
多拨对 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
十、总结
多拨的三个前提
最容易踩的三个坑
- 单线程测速看不到叠加 —— mwan3 是按连接负载均衡的
- mwan3 装错版本 —— iptables 版装在 nftables 系统上不生效
- DDNS 只指向一个 IP —— 多拨后远程访问可能失败
一句实话
多拨不是万能的。 它的效果完全取决于运营商策略:
- 运营商允许 → 可能翻倍
- 运营商限制 → 一个都拨不上
- 运营商默许但共用带宽 → 能拨上但不提速
在花时间配置之前,先用第二节的方法测试一下能不能多拨。
这能帮你省下几个小时。