Linux

當連接到 Wifi 時,我無法 ping 直接連接的電腦

  • August 30, 2021

我正在執行最新版本的 Pop!奧斯。

我有一台筆記型電腦通過乙太網電纜連接到我的主電腦。

筆記型電腦 IP 是 169.254.83.40,我的主機 IP 是 169.254.83.50 在連接的介面上。我的wifi介面在主電腦上是192.168.0.20。

當我連接到 wifi 並嘗試從我的主電腦 ping 我的筆記型電腦時,我得到以下資訊。

   PING 169.254.83.40 (169.254.83.40) 56(84) bytes of data.
   From 192.168.0.20 icmp_seq=1 Destination Host Unreachable
   From 192.168.0.20 icmp_seq=2 Destination Host Unreachable
   From 192.168.0.20 icmp_seq=3 Destination Host Unreachable

從wifi斷開連接後,我可以成功ping通。下面是我的 ifconfig 輸出。

   enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
   inet 192.168.0.20  netmask 255.255.255.0  broadcast 192.168.0.255
   ether e8:4e:06:7d:d7:8f  txqueuelen 1000  (Ethernet)
   RX packets 38305  bytes 36156135 (36.1 MB)
   RX errors 0  dropped 1  overruns 0  frame 0
   TX packets 26255  bytes 3680006 (3.6 MB)
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

   enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
   inet 169.254.83.50  netmask 255.0.0.0  broadcast 169.255.255.255
   ether a8:a1:59:2b:6c:ee  txqueuelen 1000  (Ethernet)
   RX packets 1294  bytes 87685 (87.6 KB)
   RX errors 0  dropped 0  overruns 0  frame 0
   TX packets 1818  bytes 121833 (121.8 KB)
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

   lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
   inet 127.0.0.1  netmask 255.0.0.0
   inet6 ::1  prefixlen 128  scopeid 0x10<host>
   loop  txqueuelen 1000  (Local Loopback)
   RX packets 12029  bytes 1257930 (1.2 MB)
   RX errors 0  dropped 0  overruns 0  frame 0
   TX packets 12029  bytes 1257930 (1.2 MB)
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

netstat -nr
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 enp3s0
0.0.0.0         169.254.83.50   0.0.0.0         UG        0 0          0 enp4s0
169.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 enp4s0
169.0.0.0       169.254.83.50   255.0.0.0       UG        0 0          0 enp4s0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 enp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp3s0

您看到這一點的原因是 wifi 連接添加了一條比有線連接上的路線更具體的路線(我已用星號標註了重要的內容):

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 enp3s0
0.0.0.0         169.254.83.50   0.0.0.0         UG        0 0          0 enp4s0
**169.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 enp4s0
169.0.0.0       169.254.83.50   255.0.0.0       UG        0 0          0 enp4s0
**169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 enp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp3s0

enp4s0是有線的,enp3s0是無線的)

您的有線網路到達 169.254.83.40 的路由是169.0.0.0/255.0.0.0(aka /8),而 wifi 網路添加的路由是169.254.0.0/255.255.0.0(aka /16)。被/16認為更具體,因為它指的是較小的網路,因此它優先於有線網路。

至於如何解決這個問題,我會檢查無線網路配置或 DHCP 伺服器,看看為什麼會推送額外的路由。同時,您可以手動刪除錯誤路線

ip route del 192.254.0.0/16 dev enp3s0

但這不是一個真正的解決方案,只是一個創可貼。

引用自:https://unix.stackexchange.com/questions/666878