在單網卡 Proxmox VE 主機上安裝 OpenWrt
在只有一張實體網卡的 PVE 主機上,你可以選出合適的拓樸:
- 不更動 PVE 管理位址;
- 不會意外在
vmbr0上提供 DHCP; - 使用旁路解析器或內部 LAN 實驗環境;
- 即使路由器 VM 停止,仍可存取主機。
- Proxmox VE 8.x/9.x,一張實體網卡;
vmbr0同時承載 PVE 管理位址與上游閘道。 - 本頁以 PVE 9.2.2、一張 Realtek RTL8111 網卡、
vmbr0 192.168.50.2/24、閘道192.168.50.1編寫。 - 單張網卡無法在實體上分離 WAN 與 LAN。 不要照抄雙網卡指南中的
enp1s0/enp2s0配置。請使用旁路服務或 PVE 內部橋接。 - 第二張網卡或支援 VLAN 的交換器會更容易;該拓樸不在本頁範圍內。
A. 旁路 DNS/閘道(改動最小)
Section titled “A. 旁路 DNS/閘道(改動最小)”OpenWrt 只有一張接在 vmbr0 的 vNIC,LAN 位址為 192.168.50.3/24,且停用 DHCP。用戶端手動將它設為 DNS(或閘道);它透過 192.168.50.1 連上網際網路。
| 實體連接埠 | PVE bridge | 虛擬網路卡 | OpenWrt 介面 | 職責 |
|---|---|---|---|---|
| nic0 | vmbr0 | net0 | lan 192.168.50.3 | 旁路 DNS/閘道 |
適合在不動主路由器 DHCP 的情況下,驗證 DNS、AdGuard Home 或 OpenClash 的 DNS/規則。
B. PVE 內部 LAN 實驗(建議用於路由測試)
Section titled “B. PVE 內部 LAN 實驗(建議用於路由測試)”OpenWrt 有兩張 vNIC:net0 接在 vmbr0 作為 WAN(DHCP),net1 接在 vmbr1 作為 LAN(192.168.1.1/24)。vmbr1 沒有實體連接埠,僅供測試用戶端 VM 使用。
| 實體連接埠 | PVE bridge | 虛擬網路卡 | OpenWrt 介面 | 職責 |
|---|---|---|---|---|
| nic0 | vmbr0 | net0 | wan DHCP | 上游 192.168.50.1 |
| — | vmbr1 | net1 | lan 192.168.1.1 | 內部測試用戶端 |
這可以在不影響實體 LAN 的情況下,驗證路由、NAT、DHCP、DNS,以及「路由器 VM 停止後主機仍可存取」。
ip -br linkip -br addrcat /etc/network/interfacesbridge linkqm listpvesm status記下 vmbr0 的位址、閘道、實體連接埠與 VM 清單。在單網卡主機上,vmbr0 是你唯一的管理路徑;一個失誤就可能把自己鎖在外面。
預期萬一出問題,可以依筆記還原 vmbr0。
使用螢幕/鍵盤、IPMI 或雲端 VNC;不要只依賴 SSH。接著在 PVE 主機上下載 OpenWrt x86_64 映像檔:
cd /var/lib/vz/template/isowget https://downloads.openwrt.org/releases/25.12.6/targets/x86/64/openwrt-25.12.6-x86-64-generic-ext4-combined.img.gzwget https://downloads.openwrt.org/releases/25.12.6/targets/x86/64/sha256sumssha256sum -c sha256sums --ignore-missinggzip -d openwrt-25.12.6-x86-64-generic-ext4-combined.img.gz如果校驗和不符,就不要繼續。請使用 downloads.openwrt.org 上目前的檔名/版本。
預期即使 SSH 中斷,仍可連上 PVE。
先建立暫時性橋接;確認可用後才讓它持久化:
ip link add name vmbr1 type bridgeip link set vmbr1 upip -br link show vmbr1ip -br addr show vmbr0vmbr1 沒有實體連接埠,因此不會把 DHCP 洩漏到家用 LAN。不要在 vmbr0 上執行 DHCP 伺服器。
預期vmbr1 存在且為 up;vmbr0 位址未變。
qm create 200 --name openwrt-lab --memory 512 --cores 2 --ostype l26 \ --scsihw virtio-scsi-pci \ --net0 virtio,bridge=vmbr0 \ --net1 virtio,bridge=vmbr1 \ --serial0 socketqm importdisk 200 /var/lib/vz/template/iso/openwrt-25.12.6-x86-64-generic-ext4-combined.img local-lvmqm set 200 --scsi0 local-lvm:vm-200-disk-0qm set 200 --boot order=scsi0qm start 200請用 pvesm status 查出實際的儲存空間 ID。qm importdisk 之後,請從指令輸出確認磁碟名稱;可能是 vm-200-disk-0。
預期VM 200 有 scsi0 開機磁碟以及 net0/net1。
qm terminal 200如果序列埠沒有輸出,請使用 PVE 的 VNC 主控台。在 OpenWrt 內:
ip link showip addr showuci show networketh0/eth1 的順序不保證與 net0/net1 一致;請以 MAC/連線狀態與 uci show network 確認。不要假設 eth0 就是 WAN。本次實驗中,net0=eth0=WAN、net1=eth1=LAN,但換一台主機請重新確認。
預期知道哪個介面是 WAN、哪個是 LAN。
在 OpenWrt 主控台中,把 eth0/eth1 換成你確認過的介面:
uci set network.wan=interfaceuci set network.wan.proto='dhcp'uci set network.wan.device='eth0'uci set network.lan=interfaceuci set network.lan.proto='static'uci set network.lan.device='eth1'uci set network.lan.ipaddr='192.168.1.1'uci set network.lan.netmask='255.255.255.0'uci set dhcp.wan=dhcpuci set dhcp.wan.interface='wan'uci set dhcp.wan.ignore='1'uci commit networkuci commit dhcp/etc/init.d/network reload請確認 dhcp.wan.ignore='1';否則 OpenWrt 可能在上游的 vmbr0 上提供 DHCP,干擾家用網路。
預期WAN 從 192.168.50.1 取得位址;LAN 為 192.168.1.1;vmbr0 上沒有 DHCP。
在 vmbr1 上建立一台測試 VM(或把它的網卡接到該處),讓它從 OpenWrt LAN 取得租約。然後執行:
ip routeping 192.168.1.1ping 192.168.50.1nslookup openwrt.org如果用戶端取不到租約,請先檢查 OpenWrt 的 dhcp.lan 與 dnsmasq,再考慮更動 vmbr0。
預期用戶端可連到 192.168.1.1、上游閘道與 DNS。

qm status 200為 running;qm config 200顯示net0在vmbr0、net1在vmbr1。- 在 OpenWrt 內,
ip addr show顯示 WAN 為192.168.50.x、LAN 為192.168.1.1/24。 - 測試用戶端:預設閘道為
192.168.1.1,可以 ping 到192.168.50.1,並能解析openwrt.org。 - 主機:
ssh [email protected]與 PVE 網頁介面仍可使用。 - 停止路由器 VM(
qm stop 200);主機管理仍可使用;qm start 200即可恢復。
故障分支與復原
Section titled “故障分支與復原”無法 SSH 連到主機
Section titled “無法 SSH 連到主機”停止更動網路。使用螢幕/鍵盤、IPMI 或雲端主控台,並檢查:
ip -br addr show vmbr0cat /etc/network/interfacesbridge link如果你剛編輯過 /etc/network/interfaces,請還原備份並重新載入:
cp /etc/network/interfaces.bak.YYYY-MM-DD /etc/network/interfacesifreload -a如果問題只是暫時性的 vmbr1 造成的,請先確認沒有其他 VM 在使用它:
grep -R "vmbr1" /etc/pve/qemu-server只有當該指令沒有任何輸出時才刪除它:
ip link set vmbr1 downip link del vmbr1OpenWrt 沒有 WAN 位址
Section titled “OpenWrt 沒有 WAN 位址”qm config 200qm terminal 200在 OpenWrt 內,檢查 ip link show、uci show network 與 logread。確認 net0 在 vmbr0 上,且 nic0 為 up;不要在 vmbr0 上新增第二台 DHCP 伺服器。
測試用戶端取不到 192.168.1.x 租約
Section titled “測試用戶端取不到 192.168.1.x 租約”檢查 OpenWrt 的 dhcp.lan,以及 dnsmasq 是否正在執行;確認測試 VM 確實接在 vmbr1 上。不要為了「修正」實驗環境而更動 vmbr0 的位址或閘道。
停止路由器 VM 後還能連到主機嗎?
Section titled “停止路由器 VM 後還能連到主機嗎?”這就是復原關卡:qm stop 200 之後,從另一台機器開啟 https://192.168.50.2:8006 並以 SSH 連線。如果不行,表示你的管理路徑依賴 OpenWrt;請先修正再繼續。
E2 實驗紀錄(2026-10-20)
Section titled “E2 實驗紀錄(2026-10-20)”- 環境:PVE 9.2.2,一張 Realtek RTL8111,
vmbr0 192.168.50.2/24;OpenWrt 25.12.6 x86_64 VM 200,512MB/2 vCPU。 - OpenWrt WAN
eth0透過 DHCP 從192.168.50.1取得192.168.50.77;LANeth1為192.168.1.1/24。 - 內部
vmbr1上的 netns 用戶端透過 DHCP 取得192.168.1.191,以192.168.1.1作為預設路由,成功解析openwrt.org並取得 HTTP 200。 qm stop 200之後,重新建立的 SSH 連線仍能連到 PVE 主機;vmbr0仍為192.168.50.2/24。- 未測試:實體 LAN 用戶端、雙網卡配置、長時間穩定性、PPPoE/IPv6 上游。這些都不在本次 E2 結果範圍內。
- 本頁是 E2 實驗紀錄,不是單純的 E1 草稿;尚未經過獨立審閱,也未在實體 LAN 上測試。
- 測試配方:
tests/recipes/pve-single-nic-25.12.md。其中記錄了映像檔 SHA-256、qm config 200與用戶端結果。 - 單網卡不等於雙網卡:沒有第二張網卡或 VLAN 交換器時,不要把本頁改寫成「實體分離 WAN/LAN」的指南。