最近把家裡的網路架構從單純的 USB 無線網卡上網,一路進化到雙線並行 + 策略路由(PBR),踩了不少坑,也累積了不少實戰經驗。把這些筆記整理成文,方便日後重置時快速恢復,也分享給有類似需求的同好。
一、基礎架構:PVE + OpenWRT + USB Wi-Fi 網關
硬體配置
- 底層系統:Proxmox VE(PVE)
- 網關系統:OpenWRT(安裝於 PVE 的 VM 100)
- 對外網路(WAN):TP-Link Archer T2U PLUS(RTL8821AU 晶片,USB 無線網卡)
關鍵硬體解法:USB 延長線的電壓災難
一開始我直接用了一條 5 米 USB 延長線把網卡接到 PVE 主機,結果 PVE 完全認不到網卡(unable to enumerate)。查了一下才發現是長距離 USB 延長線導致嚴重電壓衰減,網卡啟動電流不足。
解法:換成「帶獨立 110V 供電的 USB 擴展器(Hub)」,確保網卡啟動時供電充足。這個硬體成本不高,但解決了最大的穩定性問題。
PVE 開機啟動順序設定
因為 OpenWRT 是所有 LXC / VM 的網路源頭,而 USB 擴展器需要時間初始化,所以開機順序必須嚴格設定:
- VM 100(OpenWRT):
Boot order = 1/Startup delay = 15(等待 USB 擴展器就緒) - 其他 LXC / VM:
Boot order = 2(或更後)/Startup delay = 30~45(等待 OpenWRT 撥接上網)
OpenWRT 自動連網腳本
USB 網卡直通載入速度比 OpenWRT 開機慢,需要延遲執行 Wi-Fi 重載指令。在 OpenWRT 的 /etc/rc.local 中,exit 0 之前加上:
sleep 15
wifi reload
這樣 OpenWRT 開機後會等 15 秒讓網卡穩定,再自動重載 Wi-Fi 連線。
二、日常維護守則:兩種情境的差異
🟢 情境 A:實體停電 / 關閉總電源後重開
狀態:完美自動化,什麼都不用做。
因為總電源斷電,USB 擴展器也會徹底放電重置。復電後 PVE 會完美依序喚醒所有設備。
🔴 情境 B:在 PVE 系統內手動執行 reboot
狀態:極易觸發網卡「殭屍供電狀態(Zombie Power State)」。
原因:PVE 重開機切斷了主機板 USB 訊號,但擴展器的 110V 依然在供電,導致網卡晶片當機卡死,重啟後 lsusb 完全抓不到。
徹底放電 SOP:
- 拔掉擴展器的 110V 電源插頭(最重要!)
- 拔掉擴展器連到 PVE 的 Type-C 線
- 拔掉 USB 網卡連到擴展器的線
- 靜置等待 10 秒鐘
- 依序接回:110V 電源 → Type-C 線 → USB 網卡(PVE 查
lsusb) - 將 OpenWRT reboot(查
iw dev) - 網路將在一至兩分鐘內自動恢復
三、突發斷網故障排除 SOP
如果平時突然斷網,請依序下指令檢查斷點在哪裡:
Step 1:檢查 PVE 底層硬體
於 PVE 終端機執行:
lsusb
- 正常:列表中有
TP-Link Archer T2U PLUS - 異常(沒看到):代表物理斷線或供電異常。請檢查延長線是否鬆脫,或執行上述「情境 B」的徹底放電 SOP
Step 2:檢查 OpenWRT 網卡狀態
於 OpenWRT 終端機執行:
iw dev
- 正常:出現
phy0-sta0且有顯示連線的 SSID - 異常(無輸出):代表 PVE 沒把網卡直通進來。請回 PVE 確認直通設定(
qm config 100)
Step 3:手動重啟網路
如果硬體都在,但就是上不了網,可手動踹它一腳:
wifi reload
ping -c 4 8.8.8.8
四、進階擴充:雙線並行 + PBR 策略路由
為什麼需要雙線?
單線 USB Wi-Fi 雖然穩定,但頻寬有限。後來加了一條 500M 有線網路(無線中繼 AP → 小主機第二網口 enp2s0),想把高速頻寬給全家設備用,同時讓 Ubuntu LXC 繼續走 USB Wi-Fi 的 150M 線路。
目標:Ubuntu LXC(192.168.88.6)獨佔手機 / USB 網路,其餘家庭設備與 PVE 本身依舊走有線 500M 上網。
完整建置 SOP
Step 1:建立網路介面與防火牆設定(不搶佔預設路由)
登入 OpenWRT 終端機,確認實體線路插妥(PVE 底層 enp2s0 狀態為 UP)後執行:
# 建立 wan2 介面並綁定實體網口 eth1
uci set network.wan2=interface
uci set network.wan2.device='eth1'
uci set network.wan2.proto='dhcp'
# 核心設定:禁止 wan2 成為全家預設路由(保障主力線路)
uci set network.wan2.defaultroute='0'
uci commit network
# 將 wan2 加入外網防火牆區域(Zone)
uci add_list firewall.@zone[1].network='wan2'
uci commit firewall
# 重啟網路服務獲取 IP
/etc/init.d/network restart
Step 2:安裝與設定 PBR 策略路由
# 更新套件庫並安裝 PBR 策略路由與繁中介面
opkg update
opkg install pbr luci-app-pbr luci-i18n-pbr-zh-tw
# 啟用 PBR 總開關並建立 Ubuntu 專屬路由規則
uci set pbr.config.enabled='1'
uci add pbr policy
uci set pbr.@policy[-1].name='Ubuntu_to_Phone'
uci set pbr.@policy[-1].src_addr='192.168.88.6'
uci set pbr.@policy[-1].interface='wan2'
uci commit pbr
# 設定開機自啟並立即啟動 PBR
/etc/init.d/pbr enable
/etc/init.d/pbr start
雙線並行狀態驗證
- Ubuntu LXC(
192.168.88.6)終端機:輸入curl ifconfig.me→ 應顯示 USB 網卡的 IP - 其他一般內網設備(如 Windows 筆電):輸入
curl ifconfig.me→ 應顯示 500M 有線網路的 IP
兩個 IP 不同,即代表分流規則已生效。
無痛移除與環境復原
未來若不再需要雙線,想要完全移除並還原至純粹的單線狀態,請登入 OpenWRT 終端機 執行:
# 1. 停止並徹底移除 PBR 策略路由套件與設定檔
/etc/init.d/pbr stop
/etc/init.d/pbr disable
opkg remove pbr luci-app-pbr luci-i18n-pbr-zh-tw
rm -f /etc/config/pbr
# 2. 刪除專為第二條線路建立的 wan2 介面
uci delete network.wan2
uci commit network
# 3. 將 wan2 從防火牆外網區域中抹除
uci del_list firewall.@zone[1].network='wan2'
uci commit firewall
# 4. 重啟網路服務讓設定生效
/etc/init.d/network restart
五、雙線對調:500M 有線主力 + 150M USB 策略路由
後來又把架構對調了——讓 500M 有線網路成為全家主要網路(wan2),USB 網卡(wan,150M)專供 Ubuntu LXC 走 PBR 分流。
CLI 快速重建指令(SOP)
若未來 OpenWRT 或是 PBR 意外重置,登入 OpenWRT 終端機 貼上以下指令,即可一鍵恢復:
# Step 1. 建立介面並將 500M 有線(wan2)設為全家主要預設路由
uci set network.wan2=interface
uci set network.wan2.device='eth1'
uci set network.wan2.proto='dhcp'
uci set network.wan2.defaultroute='1'
uci set network.wan.defaultroute='0'
uci commit network
# Step 2. 將 wan2 加入防火牆外網區域(Zone)
uci add_list firewall.@zone[1].network='wan2'
uci commit firewall
# Step 3. 設定 PBR 策略路由(讓 Ubuntu 走 wan / USB 網卡)
opkg update
opkg install pbr luci-app-pbr luci-i18n-pbr-zh-tw
# 徹底清除舊設定,並手動建立空檔案防呆
rm -f /etc/config/pbr
touch /etc/config/pbr
# 初始化 PBR 並寫入規則
uci set pbr.config=pbr
uci set pbr.config.enabled='1'
uci add pbr policy
uci set pbr.@policy[-1].name='Ubuntu_to_USB_WiFi'
uci set pbr.@policy[-1].src_addr='192.168.88.6'
uci set pbr.@policy[-1].interface='wan'
uci commit pbr
# Step 4. 重啟網路與服務讓設定生效
/etc/init.d/network restart
/etc/init.d/pbr enable
/etc/init.d/pbr start
驗證方法
- 一般內網設備:
curl ifconfig.me→ 應顯示 500M 中繼 AP 的 IP - Ubuntu LXC(
192.168.88.6):curl ifconfig.me→ 應顯示 150M USB 網卡的 IP
完全移除中繼 AP,復原為純單線
如果未來不打算使用中繼 AP,想把全家網路改回只靠 USB 網卡,請登入 OpenWRT 終端機:
# 1. 停止並徹底移除 PBR 策略路由套件與設定
/etc/init.d/pbr stop
/etc/init.d/pbr disable
opkg remove pbr luci-app-pbr luci-i18n-pbr-zh-tw
rm -f /etc/config/pbr
# 2. 將 USB 網卡(wan)重新恢復為全家主要預設路由
uci set network.wan.defaultroute='1'
# 3. 刪除中繼 AP 的 wan2 介面與防火牆規則
uci delete network.wan2
uci del_list firewall.@zone[1].network='wan2'
# 4. 提交設定並重啟網路
uci commit network
uci commit firewall
/etc/init.d/network restart
六、變更設備 IP 時的 PBR 規則更新
當內網特定設備(如 Ubuntu LXC)的虛擬機 IP 發生變動時(例如從 192.168.88.6 變更為 192.168.88.7),只需要更新 OpenWRT 內的 PBR 策略路由規則即可。
方法一:透過 OpenWRT 網頁介面(LuCI)
- 登入 OpenWRT 網頁管理介面
- 前往 「VPN」→「PBR(策略路由)」
- 切換到 「策略(Policies)」 標籤頁
- 找到原本的規則,點擊 「編輯」
- 將 「來源地址」 欄位修改為新 IP
- 點擊 「儲存並應用」
方法二:透過 OpenWRT 終端機(CLI)
# Step 1. 刪除 PBR 設定檔中原有的舊規則
uci -q delete pbr.@policy[0] 2>/dev/null
# Step 2. 重新建立新 IP 的分流規則(此處以 192.168.88.7 為例)
uci add pbr policy
uci set pbr.@policy[-1].name='Ubuntu_to_USB_WiFi'
uci set pbr.@policy[-1].src_addr='192.168.88.7'
uci set pbr.@policy[-1].interface='wan'
uci commit pbr
# Step 3. 重啟 PBR 策略路由服務讓設定立即生效
/etc/init.d/pbr restart
驗證
變更完成後,請登入該台換了新 IP 的 Ubuntu LXC 終端機,執行 curl ifconfig.me:
- 正確結果:顯示的對外 IP 應為 USB 無線網卡的網路出口 IP(與家用其他設備的出口 IP 不同)
七、保留 IP 給 PVE:DHCP 起始位置調整
不想讓 PVE 本身(192.168.88.2)和其他核心設備從 DHCP 領到靠前的 IP 嗎?可以把 DHCP 發放起始位置往後推。
方法 A:透過 OpenWRT 網頁介面(LuCI)
- 登入 OpenWRT 網頁介面
- 前往 「網路」→「介面」
- 找到 LAN,點擊 「編輯」
- 往下拉,找到 「DHCP 伺服器」 區塊:
- 起始位置:輸入
101(從192.168.88.101開始發放) - 客戶端數目:輸入
100(發放 100 個 IP,即發到192.168.88.200為止)
- 起始位置:輸入
- 點擊 「儲存並應用」
方法 B:透過 OpenWRT 終端機(CLI)
uci set dhcp.lan.start='101' # 設定 DHCP 從 101 開始發放
uci set dhcp.lan.limit='100' # 設定最多發放 100 個 IP(即 101 ~ 200)
uci commit dhcp # 提交設定並重啟 DHCP 服務
/etc/init.d/dnsmasq restart
結語
從單線 USB Wi-Fi 到雙線 PBR 策略路由,整套架構的核心在於 啟動順序的把控 和 PBR 規則的精準設定。每次重置 OpenWRT 或新增設備時,只要照著上面的 SOP 執行,基本上一小時內就能恢復到最佳狀態。
如果你也有 PVE + OpenWRT 的家園網關,歡迎交流心得!