乙太網正在禁用 WiFi
我們正在執行 Yocto 4.9.88 版本的 iMX6 板。它同時具有 Wifi 和乙太網連接。當我們單獨連接 WiFi 時,ping 工作正常。如果我們連接乙太網,Ping 就可以工作。當我們斷開乙太網連接時,WiFi 仍然獲得一個 IP 並顯示它已連接,但我們無法 ping。
Wifi 的網路指標為 10,而乙太網的指標為 0。下面是不同實例的路由表。
單獨連接 WiFi 時,
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
當 WiFi + 乙太網連接時,
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 202.83.21.25 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0 202.83.21.43 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
當乙太網斷開,但 WiFi 仍然連接時,
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
為什麼乙太網也在路由表中刪除 wlan0 條目,並且兩個介面都可以在沒有任何限制的情況下工作嗎?
一個快速的解決方法是重新添加到 wlan0 的缺失路由。
更長的故事:
該行為通常是正常且合乎邏輯的(除了一件事,它可能是錯誤或配置錯誤)。
當您使用 WiFi 並連接乙太網時,管理距離會發生變化,因此乙太網具有優先權。這就是這兩行的意思:
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0
指標 0 表示最高優先級。只要 eth0 處於活動狀態且正常工作,Metric 10 就會處於待機狀態。如果您斷開 cable/eth0,那麼 wlan0 將再次成為主連接。
到目前為止一切順利,但是如果您斷開有線和路由時
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 wlan0
消失了,那麼您當然有連接問題,不再有實際路線。您可以通過添加最後的網關來繞過它。
如果您使用 將多個網路配置為候選預設路由
ip default-network command
,則會選擇管理距離最短的網路作為最後網關的網路。如果所有網路具有相同的管理距離,則選擇路由表 ( ) 中首先列出show ip route
的網路作為最後網關的網路。如果同時使用ip default-network
和ip route 0.0.0.0 0.0.0.0
命令來配置候選預設網路,並且該ip default-network
命令使用的網路是靜態已知的,則使用 ip default-network
命令定義的網路具有優先權,並被選作最後的網關。否則,如果ip default-network
命令使用的網路是由路由協議派生的,則ip route 0.0.0.0 0.0.0.0
具有較低管理距離的命令優先,並被選作最後的網關。如果您使用多個ip route 0.0.0.0 0.0.0.0
命令來配置預設路由,則流量將在多個路由上進行負載平衡,並且當其中一個啟動時將在 2 個中的任何一個上工作。您可以選擇最適合您的情況的情況。