主路由器連線:分別驗證 WAN DHCP 與 PPPoE
- 判斷 WAN 使用 DHCP 還是 PPPoE,以及該檢查哪個狀態;
- 驗證 WAN 位址/閘道/DNS,而不是只相信「已連線」;
- 驗證 LAN 用戶端的位址、閘道與 DNS;
- 判斷「WAN 正常、LAN 不通」是轉送/NAT 問題還是 DNS 問題;
- 了解 PPPoE 需要什麼,以及為什麼沒有實際線路就不能稱為已測試。
Upstream router/ONT 192.168.50.1 │ WAN eth1 (DHCP 192.168.50.166/24) │ OpenWrt VM 200 │ LAN br-lan 192.168.10.1/24 │ LAN client 192.168.10.191/24- WAN 與 LAN 必須位於不同子網路;不要與上游重疊。
- 主路由器必須執行 NAT/轉送;旁路/AP 的驗證方式不同。
- 請保留主控台存取;變更 WAN 時,不要只依賴單一網頁連線。
辨識 WAN 協定
Section titled “辨識 WAN 協定”路由器 Shell讀取目前的 WAN/LAN 設定
uci show network.wanuci show network.wan6 2>/dev/nulluci show network.lanip -4 addr showip routeWAN 的 proto 決定要檢查什麼:dhcp → udhcpc,pppoe → pppd/pppoe-wan。
預期你知道 WAN 是 dhcp、pppoe 還是 static。
WAN DHCP
Section titled “WAN DHCP”LuCI將 WAN 設為 DHCP 用戶端
開啟 網路 → 介面 → WAN → 編輯:
- 協定:
DHCP 用戶端; - 儲存並套用;
- 在介面頁面確認 WAN 有 IPv4 位址,而不只是顯示「已連線」。
CLI 對應做法:
uci set network.wan.proto='dhcp'uci commit network/etc/init.d/network reload預期WAN 取得位址、閘道與 DNS。
路由器 Shell驗證 WAN 位址/閘道/DNS
ubus call network.interface.wan statusip -4 addr show eth1ip routecat /tmp/resolv.conf.d/resolv.conf.autonslookup openwrt.org 192.168.50.1本次實驗取得:
- WAN
192.168.50.166/24; - 閘道/DNS
192.168.50.1; - WAN 裝置
eth1。
若 ubus 顯示 up: false 或沒有 ipv4-address,請先檢查 logread -e udhcpc,再去動 LAN。
預期WAN 有位址,預設路由指向上游,且 DNS 可用。
電腦驗證 LAN 用戶端
ip addr showip routecat /etc/resolv.confping 192.168.10.1本次實驗中,LAN 的 DHCP 用戶端取得 192.168.10.191/24,閘道 192.168.10.1。
測試路由器以外的連線:
ping -c 3 1.1.1.1nslookup openwrt.org本次 E2 測試重新檢查了 WAN DHCP 與 LAN DHCP;LAN 用戶端經 NAT/DNS 連到公共網際網路的完整路徑並未重新執行,因此「用戶端可以瀏覽網頁」並未標示為已測試。
預期用戶端取得 LAN 位址、閘道與 DNS。
路由器 ShellWAN 正常但 LAN 不通
uci show firewallnft list ruleset 2>/dev/null | head -80logread | grep -i firewall | tail -20檢查:
- LAN/WAN 是否位於正確的防火牆區域;
- WAN 區域是否啟用 masquerade;
- 轉送是否允許 LAN→WAN;
- 用戶端的閘道/DNS 是否指向 OpenWrt;
- 是否有第二個 DHCP 或子網路衝突。
預期區分轉送/NAT 與 DNS。
PPPoE(E1,需要實際線路)
Section titled “PPPoE(E1,需要實際線路)”電腦確認你擁有哪些資訊
PPPoE 通常需要:
- ISP 帳號/密碼(切勿貼到聊天、程式庫或螢幕截圖);
- 部分地區需要 VLAN ID;
- 部分地區需要服務名稱/AC 名稱;
- ONT 是否已經撥號(橋接與路由模式);
- MTU/MSS 與 IPv6 的需求。
沒有這些資訊時,不要稱 PPPoE 已測試;切勿使用他人的帳號測試。
預期帳號、密碼、VLAN/服務名稱皆已取得,且來源合法。
LuCI在 LuCI 設定 PPPoE(範例,不含真實密碼)
網路 → 介面 → WAN → 編輯 → 協定:PPPoE:
- 使用者名稱/密碼:你的 ISP 憑證;
- 如有需要,在裝置/介面層設定 VLAN;
- Keepalive 可先從
5 3開始; - 儲存並套用。
CLI 的寫法(不要把真實密碼放進 shell 歷史記錄或程式庫):
uci set network.wan.proto='pppoe'uci set network.wan.username='<your-account>'uci set network.wan.password='<your-password>'uci set network.wan.keepalive='5 3'uci commit network/etc/init.d/network reload預期WAN 協定變為 PPPoE;憑證只保留在裝置上。
路由器 Shell驗證 PPPoE 狀態
ubus call network.interface.wan statusip -4 addr show pppoe-wanip routelogread | grep -Ei 'pppd|pppoe' | tail -30檢查:
pppoe-wan上的 IPv4;- 預設路由經由
pppoe-wan; - DNS 可用;
- MTU 約為 1492(PPPoE 常見值);
- 記錄中的驗證失敗/逾時/服務名稱錯誤。
本頁沒有真實的 ISP 帳號,因此 PPPoE 維持 E1,也不宣稱「撥號成功」。
預期pppoe-wan 有位址、預設路由與 DNS。
WAN DHCP 取不到位址
Section titled “WAN DHCP 取不到位址”- 接錯連接埠(WAN 與 LAN);
- 上游 DHCP 已停用;
- 上游的 MAC 綁定/驗證;
- 需要 VLAN;
- 檢查
logread -e udhcpc中的 discover/offer; - 不要用靜態 IP 去猜測上游子網路。
PPPoE 驗證失敗
Section titled “PPPoE 驗證失敗”- 帳號/密碼錯誤(大小寫/後綴);
- 需要 VLAN/服務名稱;
- ONT 仍在撥號(重複撥號);
- 帳號綁定 MAC/連接埠;
- 反覆重試可能觸發 ISP 的限制;請閱讀記錄,不要狂按重試。
WAN 有位址,LAN 卻無法上網
Section titled “WAN 有位址,LAN 卻無法上網”- 防火牆區域/轉送/masquerade;
- 用戶端的閘道/DNS;
- 上游只允許一個裝置/MAC;
- 子網路衝突/雙重 NAT;
- IPv6 與 IPv4 的差異。
DNS 失敗
Section titled “DNS 失敗”- 測試 WAN 端的 DNS(
nslookup ... 192.168.50.1); - 再測試路由器本身(
nslookup ... 127.0.0.1); - 然後測試 LAN 用戶端(
cat /etc/resolv.conf); - 不要把每一次 DNS 失敗都歸咎於 WAN。
E2/E1 記錄
Section titled “E2/E1 記錄”WAN DHCP(E2)
Section titled “WAN DHCP(E2)”- 環境:OpenWrt 25.12.6 x86 VM 200;WAN
eth1;上游192.168.50.1。 - 結果:WAN
192.168.50.166/24,閘道/DNS192.168.50.1;LAN192.168.10.1/24。 - LAN DHCP:netns 用戶端
192.168.10.191/24,閘道192.168.10.1。 - 未重新執行:LAN 用戶端 → 公共網際網路的 NAT/DNS 端對端、IPv6、實體 WAN。
PPPoE(E1)
Section titled “PPPoE(E1)”- 沒有真實的 ISP 帳號/線路;沒有撥號、驗證、MTU 或 DNS 驗證。
- 讀者必須使用自己合法的帳號與裝置/ISP 文件測試;切勿公開憑證。
- WAN DHCP 為 E2;PPPoE 為 E1。不要把它們合併成「主路由器已完整測試」。
- 測試配方:
tests/recipes/wan-dhcp-pppoe-25.12.md。 - 沒有獨立審閱者;結論僅限於這個 VM/上游環境。