目標:用一條寬頻撥出多個 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 —— 多撥後遠端存取可能失敗
一句實話
多撥不是萬能的。 它的效果完全取決於電信商策略:
- 電信商允許 → 可能翻倍
- 電信商限制 → 一個都撥不上
- 電信商默許但共用頻寬 → 能撥上但不提速
在花時間設定之前,先用第二節的方法測試一下能不能多撥。
這能幫你省下幾個小時。
