为OpenWrt路由器配置mwan3双WAN负载均衡,实现两条PPPoE宽带的50/50均衡分流。
| 项目 | 说明 |
|---|---|
| 路由器 | OpenWrt (swconfig架构) |
| 物理端口 | 1 WAN + 3 LAN(共4个) |
| WAN1 | eth0,PPPoE账号 2409060119 |
| WAN2 | Port 1(原LAN口),PPPoE账号 2409060120 |
VLAN就像把一栋大楼隔成不同的房间。
想象一下,你有一栋4层的大楼(4个LAN口),所有人默认都在同一个大厅里(VLAN 1)。现在你想把其中1楼改成独立的办公室(VLAN 100),让1楼的人和2-4楼的人互不干扰。
在技术上:
通过在交换机上打标签(tagged),CPU知道哪些数据包属于哪个VLAN。
swconfig像老式电话交换机,DSA像现代智能手机。
你的路由器是swconfig架构,所以需要配置交换机VLAN表。
mwan3就像一个聪明的交通指挥员。
想象你在高速公路入口,有两条车道(WAN1和WAN2)。mwan3站在路口,按照设定的比例(50/50)把车辆(数据包)分配到两条车道上。如果一条车道堵了(断网),它会把所有车都引导到另一条车道。
PPPoE就像你去网吧上网需要刷卡。
光猫是网吧的门,PPPoE账号密码是你的会员卡。每次连接,你都需要"刷卡"(拨号认证),运营商才会给你分配一个临时IP地址(座位号)。
现象:最初尝试在eth0(WAN口)上创建VLAN子接口eth0.3
原因:误解了VLAN的归属
错误做法:
eth0.3 → WAN2 ❌
正确做法:
eth1.100 → WAN2 ✓
原理:
eth0是物理WAN口,直连光猫1。eth1是内置交换机,连接所有LAN口。要让某个LAN口变成WAN2,必须在eth1上创建VLAN子接口,而不是eth0。
解决方案:参考guide.md,确认在eth1上创建VLAN 100。
现象:日志提示
Interface eth0.3 has MTU of 1492 -- should be at least 1500
原因:PPPoE协议需要8字节的头部空间,标准以太网MTU是1500,PPPoE实际数据只有1492字节。但VLAN子接口的MTU应该保持1500。
解决方案:将WAN2接口的MTU设置为1500。
现象:swconfig显示VLAN端口为空
VLAN 1:
vid: 0
ports:
VLAN 100:
vid: 0
ports:
原因:uci配置的端口号与swconfig实际端口号不匹配
关键发现:
swconfig显示: ports: 3 (cpu @ 0)
- Port 0: CPU(端口0)
- Port 1: 物理端口1
- Port 2: 物理端口2
但uci配置使用: 1, 2, 3, 4, 5, 6
解决方案:通过swconfig直接查看端口状态,确认Port 1的pvid已设置为100。
现象:日志显示
br-lan: received packet on eth1 with own address as source address
后果:WAN1和WAN2都断网,路由器无法访问
原因:VLAN配置错误导致数据包在交换机内部循环
打比方:
就像你在房间里装了一面镜子,然后对着镜子说话。声音(数据包)从你嘴里出来,被镜子反射回来,你又听到了自己的声音,然后又说...无限循环。交换机被这种"回声"淹没,无法处理正常数据。
解决方案:正确配置VLAN分离,确保Port 1的流量只走VLAN 100,不回到VLAN 1。
现象:mwan3显示所有接口offline
interface wan_2 is offline and tracking is not enabled
原因:
wan_2wan2解决方案:
uci rename mwan3.wan_2=wan2
uci set mwan3.wan2_member.interface='wan2'
现象:日志显示
iptables-restore: Set 4 doesn't exist
原因:HTTPS规则引用了不存在的ipset
解决方案:
uci set mwan3.https.proto='tcp'
uci delete mwan3.https.ipset
现象:WAN2拨号成功后,过一段时间无法ping通外网
原因:PPPoE会话可能因ISP侧超时或网络波动而失效
解决方案:重启WAN2接口
ifdown wan2
sleep 3
ifup wan2
现象:mwan3显示 "tracking is not enabled"
原因:track_ip配置在接口重命名过程中可能丢失,或reliability设置为0
解决方案:
uci set mwan3.wan.track_ip='223.5.5.5 119.29.29.29'
uci set mwan3.wan2.track_ip='223.5.5.5 119.29.29.29'
uci set mwan3.wan.reliability='1'
uci set mwan3.wan2.reliability='1'
uci commit mwan3
mwan3 restart
# VLAN 1: LAN口(去掉Port 1)
uci set network.@switch_vlan[0].ports='2 3 6'
# VLAN 100: WAN2专用(Port 1 + CPU端口tagged)
uci add network switch_vlan
uci set network.@switch_vlan[-1].device='switch1'
uci set network.@switch_vlan[-1].vlan='100'
uci set network.@switch_vlan[-1].ports='1 6t'
端口说明:
| 端口 | 用途 |
|---|---|
| Port 0 | CPU |
| Port 1 | WAN2(接光猫2) |
| Port 2,3 | LAN(电脑、AP) |
| Port 6 | CPU(带VLAN标签) |
uci set network.wan2_dev=device
uci set network.wan2_dev.name='eth1.100'
uci set network.wan2_dev.type='8021q'
uci set network.wan2_dev.ifname='eth1'
uci set network.wan2_dev.vid='100'
uci set network.wan2=interface
uci set network.wan2.proto='pppoe'
uci set network.wan2.device='eth1.100'
uci set network.wan2.username='2409060120'
uci set network.wan2.password='28677X'
uci set network.wan2.ipv6='0'
uci set network.wan2.metric='20'
uci add_list firewall.@zone[1].network='wan2'
# WAN接口
uci set mwan3.wan.track_ip='223.5.5.5 119.29.29.29'
uci set mwan3.wan.track_method='ping'
uci set mwan3.wan.reliability='1'
# WAN2接口
uci rename mwan3.wan_2=wan2
uci set mwan3.wan2.track_ip='223.5.5.5 119.29.29.29'
uci set mwan3.wan2.track_method='ping'
uci set mwan3.wan2.reliability='1'
# 修正成员接口名
uci delete mwan3.wan2_member.wan2
uci set mwan3.wan2_member.interface='wan2'
# 修正HTTPS规则
uci set mwan3.https.proto='tcp'
uci delete mwan3.https.ipset
# 设置默认规则为仅IPv4
uci set mwan3.default_rule_v4.family='ipv4'
uci commit
pppoe-wan → IP: 10.60.45.17 → 在线
pppoe-wan2 → IP: 10.60.109.78 → 在线
interface wan → online 50%
interface wan2 → online 50%
balanced policy → wan2 (50%) + wan (50%)
WAN1 → ping 223.5.5.5 → 24ms ✓
WAN2 → ping 223.5.5.5 → 6ms ✓
mwan3 statusifdown wan2 && ifup wan2/tmp/mwan3_backup_final/backup/mwan3_final/restore_config.bat| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 无法上网 | mwan3接口offline | 检查track_ip,重启mwan3 |
| WAN2不通 | PPPoE会话失效 | ifdown wan2 && ifup wan2 |
| 网络环路 | VLAN配置错误 | 检查交换机VLAN表 |
| 负载不均 | 权重配置错误 | 检查mwan3 member配置 |
此次配置的核心挑战在于VLAN分离——将一个LAN口物理上变成WAN口。这需要:
最终,通过VLAN 100成功将Port 1分离为独立的WAN2口,实现了双PPPoE负载均衡。