旁路閘道:停用 DHCP、設定用戶端閘道/DNS,以及切換回去
選擇模式:單臂旁路 vs 具備 WAN 的閘道
Section titled “選擇模式:單臂旁路 vs 具備 WAN 的閘道”| 模式 | OpenWrt 介面 | 誰提供 DHCP | 用戶端閘道/DNS | 本頁是否測試 |
|---|---|---|---|---|
| 單臂旁路 | 僅 LAN,無 WAN | 上游主路由器 | 旁路的 LAN IP | 否(E1 步驟) |
| 具備 WAN 的閘道 | LAN + WAN | 上游或旁路 | 旁路的 LAN IP | E2 |
兩者都能「讓用戶端經過 OpenWrt」,但故障點不同:
- 單臂旁路:沒有 DHCP/NAT 時,主路由器必須知道回程路由,或旁路必須做 NAT;
- 具備 WAN:OpenWrt 取得自己的 WAN 位址並對 LAN 用戶端做 NAT;這就是本次實驗的模式。
沒有說明是否具備 WAN、由誰提供 DHCP,就不要說「旁路可用」。
Upstream 192.168.50.1 │ WAN eth1 (DHCP 192.168.50.5/24) │ OpenWrt VM 200 │ LAN br-lan 192.168.1.2/24 │ DHCP disabled Client 192.168.1.100/24 gateway/DNS = 192.168.1.2- 此 LAN 上沒有
.1,以避免與上游/主路由器衝突; - 用戶端必須使用靜態設定;
- DHCP 關閉後,DHCP 請求不會得到回應,這是預期行為。
路由器 Shell備份並記錄 LAN/WAN 狀態
uci show network.lanuci show network.wanuci show dhcp.lancp /etc/config/network /etc/config/network.bak.$(date +%F)cp /etc/config/dhcp /etc/config/dhcp.bak.$(date +%F)請保留主控台存取;舊的 LAN IP 會立即失效。
預期知道 LAN IP、WAN 協定與 DHCP 狀態。
LuCI修改 LAN IP 並停用 DHCP
網路 → 介面 → LAN → 編輯:
- IPv4 位址:
192.168.1.2/24; - DHCP 伺服器 → 一般設定 → 忽略介面;
- 儲存並套用。
等效的 CLI 指令:
uci set network.lan.ipaddr='192.168.1.2/24'uci set dhcp.lan.ignore='1'uci commit networkuci commit dhcp/etc/init.d/network reload/etc/init.d/dnsmasq restart然後以 192.168.1.2 重新開啟 LuCI/SSH。
預期LAN 為 192.168.1.2/24,且 DHCP 不再發放位址。
路由器 Shell保留 WAN 與 NAT(具備 WAN 模式)
ubus call network.interface.wan statusip -4 addr show eth1ip routeuci show firewall | grep -E 'zone|masquerade|forward'本次實驗使用 WAN 192.168.50.5/24、閘道 192.168.50.1;LAN 用戶端透過 OpenWrt 做 NAT。
預期WAN 有位址,且 LAN→WAN 轉送/NAT 正常。
電腦讓用戶端指向旁路
# Linux exampleip addr add 192.168.1.100/24 dev eth0ip route add default via 192.168.1.2echo 'nameserver 192.168.1.2' > /etc/resolv.confping -c 2 192.168.1.2ping -c 2 1.1.1.1nslookup openwrt.org 192.168.1.2Windows:手動設定 IP、閘道與 DNS;不要保留舊的 DHCP 位址。
預期用戶端閘道/DNS 為 192.168.1.2;公網 IP 與 DNS 正常。
電腦確認 DHCP 確實已關閉
# Linux exampleudhcpc -i eth0 -f -q -n -t 3本次實驗印出 no lease, failing;靜態位址仍可 ping/解析。如果仍取得租約,表示還有第二台 DHCP 伺服器,或 ignore 沒有生效。
預期DHCP 收不到 offer;靜態設定仍可運作。
電腦切換 DNS/閘道作為對照
# public DNSnslookup openwrt.org 1.1.1.1# dead gatewayip route replace default via 192.168.1.250ping -c 2 1.1.1.1# restoreip route replace default via 192.168.1.2本次實驗:公共 DNS 可用;.250 造成 100% 封包遺失;恢復 .2 後復原。
預期區分 DNS 故障與閘道故障。
單臂旁路(E1,本頁未測試)
Section titled “單臂旁路(E1,本頁未測試)”僅 LAN、無 WAN:
- 旁路 LAN 為
192.168.1.2/24,閘道指向主路由器192.168.1.1; - 停用旁路的 DHCP;
- 用戶端閘道/DNS 為
.2; - 啟用轉送;主路由器需要回程路由,或由旁路對 LAN 流量做 NAT;
- 主路由器的防火牆必須允許用戶端→網際網路的轉送。
沒有可用的主路由器實驗環境,因此這部分是 E1,不是 E2;請對照你自己的路由器/防火牆驗證。
修改 LAN 後連不上旁路
Section titled “修改 LAN 後連不上旁路”- 仍在使用舊的 IP;
- 用戶端不在
192.168.1.0/24; - ARP 過期:
ip neigh flush dev <iface>; - 使用主控台:
ip -4 addr show br-lan。
用戶端取不到位址
Section titled “用戶端取不到位址”- 旁路的 DHCP 已關閉;這是預期行為;請設定靜態位址;
- 如果想用 DHCP,只保留一台伺服器(旁路或主路由器);
- 檢查
dhcp.lan.ignore以及是否有第二台 DHCP。
用戶端有位址但無法上網
Section titled “用戶端有位址但無法上網”- 閘道/DNS 沒有指向旁路;
- 旁路沒有預設路由/上游;
- 防火牆轉送/NAT;
- 主路由器缺少回程路由(單臂);
- 子網路衝突/雙重 NAT。
DNS 失敗
Section titled “DNS 失敗”- 用戶端仍使用舊閘道做 DNS;
- 旁路的 dnsmasq 沒有在 LAN 上監聽;
- 上游 DNS 被封鎖;
- 應用程式層的 DoH/私人 DNS。
錄製示範(009 實驗)
Section titled “錄製示範(009 實驗)”009 實驗:旁路閘道、DHCP 關閉、靜態閘道/DNS下載 cast
E2 實驗紀錄(2026-10-20)
Section titled “E2 實驗紀錄(2026-10-20)”- 環境:OpenWrt 25.12.6 x86 VM 200;LAN
192.168.1.2/24;DHCP ignore=1;WAN DHCP192.168.50.5/24;netns 用戶端192.168.1.100/24。 - DHCP 關閉:
udhcpc收不到 offer(no lease, failing);靜態位址可用。 - 靜態閘道/DNS
.2:閘道 ping、1.1.1.1與nslookup都可用。 - DNS
1.1.1.1可用;失效閘道.250使公網存取中斷;恢復.2後復原。 - 未測試:純單臂旁路、主路由器回程路由、真實 Wi-Fi/Windows 用戶端、IPv6/RA。
- 錄製檔:
public/casts/009-bypass.cast;測試配方:tests/recipes/bypass-gateway-25.12.md。
- 這是 E2 部分驗證:已測試具備 WAN 的旁路;單臂路徑僅有 E1 步驟。
- 沒有獨立審閱者;結論僅限於此 VM/netns 環境。
- 「旁路閘道」不是單一固定設定;請確認誰提供 DHCP、誰做 NAT,以及是否有回程路由。