Linux

來自 Linux 發行版的 ping = 20 秒,來自 Windows/Android 的 ping = 即時。為什麼?

  • September 20, 2021

我希望這對 Linux 網路愛好者來說是一個有趣的問題。總之,我有一個新的寬頻調製解調器/路由器連接到一個提供 40Mbit/s 頻寬的 ISP。但是,在 Linux 發行版上使用瀏覽器首次連接到任何網站需要 20 多秒,而在 Android 手機或 Windows 上,網站打開的速度與您預期的一樣快。ping 命令**(帶有域名)**也需要 20 秒才能顯示任何輸出(甚至是 IP 地址)。讓我們專注於ping:

  • 通過ip地址ping時沒有問題。僅在通過域名 ping 時延遲 20 秒
  • 20 秒的 ping 延遲顯示即使我從實時 linux USB 嘗試它 -無論是 Manjaro 還是 Linux Mint
  • 即使我在另一台具有實時啟動 Linux 的電腦上嘗試也會看到延遲
  • 從執行 Windows 的同一台筆記型電腦 ping 幾乎可以立即返回結果 -即使是我以前從未訪問過的域。
  • 從執行 Android 的 Pixel 2XL 手機上的終端 ping 立即返回結果
  • 無論我是通過 wifi 還是通過乙太網電纜將筆記型電腦連接到路由器,問題都存在
  • 同一台筆記型電腦上的同一個 Linux 發行版,當連接到我的移動熱點時沒有問題
  • Ping -4 強制 IPv4 沒有幫助 - 延遲仍然是 20s
  • 正如 Manjaro 論壇的一位高級成員所建議的那樣,我嘗試從 openresolv 遷移到 systemd-resolved,但這會將延遲增加到 2 分鐘以上,我不得不回滾更改。
  • 在描述了 ping 之後,讓我描述一下 Firefox 在 Linux 上的工作原理。第一次訪問任何網站都需要 20 秒,但此後即使我訪問了一個我之前從未訪問過的網站,它也會按預期打開 - 不到幾秒鐘,但是如果我關閉 Firefox 並打開一個新實例,我再次擁有等待我訪問的第一個網站 20 秒 - 即使它是Google。

正如你所意識到的,這不是一個“有趣”的問題,而是一個相當令人困惑的問題,對我來說幾乎是一個令人興奮的問題。問題特別在於 Linux 和這個新路由器的組合,我不知道在哪裡尋找解決方案。當然,我在 Manjaro 論壇上進行了長時間的討論,但我遇到了死胡同。

非常感謝您的閱讀!最佳 - 公羊

網路資訊

路由器內部 LANIPv4 地址:192.168.9.1

主 DNS:125.22.47.125,輔助 DNS 203.145.160.4

(還嘗試將 8.8.8.8 作為主 DNS)

我的筆記型電腦:192.168.9.6

*範例和測試輸出:

在我輸入以下命令後,以“PING”開頭的響應出現 20-30 秒:

[ramkumarr@RR-W520 ~]$ ping www.google.com
PING www.google.com (142.250.192.132) 56(84) bytes of data.
64 bytes from bom12s18-in-f4.1e100.net (142.250.192.132): icmp_seq=1 ttl=118 time=25.1 ms. 
[ramkumarr@RR-W520 ~]$ ping -n www.google.com
PING www.google.com (142.250.192.100) 56(84) bytes of data.
64 bytes from 142.250.192.100: icmp_seq=1 ttl=59 time=29.4 m
---> Again a 20s delay before any output appears.

在 Windows 上,響應幾乎是瞬時的(不到半秒)

Pinging www.google.com [142.250.182.36] with 32 bytes of data:
Reply from 142.250.182.36: bytes=32 time=11ms TTL=118

並且在具有以下 IP 地址但不具有諸如www.google.com之類的域名的 Linux 上是瞬時的:

[ramkumarr@RR-W520 ~]$ ping -W 0.001 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

/etc/nsswitch.conf 的內容

# Name Service Switch configuration file.
# See nsswitch.conf(5) for details.

passwd: files mymachines systemd
group: files [SUCCESS=merge] mymachines systemd
shadow: files

publickey: files

hosts: files mymachines mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns mdns4 myhostname
networks: files

protocols: files
services: files
ethers: files
rpc: files

netgroup: files

nslookup www.google.com的輸出- 在 Linux 和 Windows 上都以超時結束。在 Linux 上,輸出是瞬時的,直到“地址:142.250.192.132”這一行,然後是延遲,然後是超時消息。

[ramkumarr@RR-W520 ~]$ nslookup www.google.com
Server:         192.168.9.1
Address:        192.168.9.1#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.192.132
;; connection timed out; no servers could be reached

[ramkumarr@RR-W520 ~]$ 

…在 Windows 上

C:\Users\ramku>nslookup www.google.com
Server:  TJ2100N.Home
Address:  192.168.9.1

DNS request timed out.
   timeout was 2 seconds.
Non-authoritative answer:
DNS request timed out.
   timeout was 2 seconds.
Name:    www.google.com
Address:  142.250.195.100

/etc/resolv.conf 的內容

# Generated by NetworkManager
search Home
nameserver 192.168.9.1

在 Windows 上

C:\Users\ramku>ipconfig /all | find /i "dns servers"
  DNS Servers . . . . . . . . . . . : 192.168.9.1

C:\Users\ramku>

在 Linux 上:

[ramkumarr@RR-W520 ~]$ sudo iptables -nvL
[sudo] password for ramkumarr: 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
[ramkumarr@RR-W520 ~]$ 
[ramkumarr@RR-W520 ~]$ ip route get 192.168.9.1
192.168.9.1 dev wlp3s0 src 192.168.9.10 uid 1000 
   cache 
[ramkumarr@RR-W520 ~]$
--> 192.168.9.10 is my laptop ip address

**解決方法/解決方案?**正如以下答案之一所建議的,在 wifi 首選項選項卡中的客戶端設置 DNS 會強製筆記型電腦訪問 Google DNS,但如果沒有,筆記型電腦將 192.168.9.1 報告為 DNS,如下所示:

使用“自動(僅限地址)”在 wifi 首選項中設置 DNS

[ramkumarr@RR-W520 ~]$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             8.8.4.4

客戶端處於“自動”且未指定 DNS

[ramkumarr@RR-W520 ~]$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
IP4.DNS[1]:                             192.168.9.1

`For an ordinary testing scenario, we will try to force your Linux Mint to use Google Public DNS:

  • Primary DNS resolver: 8.8.8.8 (IPv4)
  • Secondary DNS resolver: 8.8.4.4 (IPv4)

You can do that relatively simple, like this:

  1. Left click on your Wifi/LAN icon:

enter image description here 2. From the menu click on Network Connections:

enter image description here 3. Double click on the corresponding WiFi/LAN:

enter image description here 4. In the connection settings, go to the IPv4 Settings tab:

enter image description here 5. Change the Method to DHCP Addresses only, and fill in the mentioned DNS servers:

enter image description here 6. Hit Save, and turn off/on your WiFi/LAN link.


Finally, just to confirm our little experiment has been completed successfully, copy-paste to your terminal:

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

to show which DNS you are using now:

IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             8.8.4.4

Now try to ping some domain name.


Disclaimer

I hereby directly recommended the use of a Google product, which I do not use myself or recommend to others.

This answer is only for testing purposes. I do not recommend these DNS resolvers to my colleagues. If need be said one example for all, I would recommend 1.1.1.1 Cloudflare DNS service with addresses:

IPv4

  • Primary:
1.1.1.1
  • Secondary:
1.0.0.1

IPv6

  • Primary:
2606:4700:4700::1111
  • Secondary:
2606:4700:4700::1001

Cloudflare DNS resolvers are privacy-focused and even more secure in a sense. More information here.

I further decline that there would be any affiliation between me and mentioned companies.`

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