Linux

CentOS 極慢的 DNS 查詢

  • April 16, 2019

出於某種原因,我的兩台機器開始遭受極其緩慢的 DNS 查找。

“主機”命令的範例定時輸出:

[root@ns507403 ~]# time host www.google.com
www.google.com has address 172.217.5.4
www.google.com has IPv6 address 2607:f8b0:4006:80d::2004

real    0m3.050s
user    0m0.000s
sys     0m0.004s

無論使用哪個地址或進行多少次查找,查找似乎至少需要 3 秒。我見過的最高時間是 9 秒查找 www.paypal.com

我已經排除了 DNS 伺服器速度較慢的可能性,因為我在位於同一數據中心的 4 台其他伺服器上使用相同的 DNS 解析器,所有這些伺服器都執行良好。(< 1ms 查找)

我已經嘗試過的事情沒有成功:

  • 添加options single-request到 /etc/resolv.conf
  • 添加options single-request-reopen到 /etc/resolv.conf
  • 使用禁用 IPv6sysctl -w net.ipv6.conf.all.disable_ipv6=1
  • 禁用 NetworkManager(我的伺服器上沒有安裝它)

這是我目前的 /etc/resolv.conf 文件:

nameserver 127.0.0.1
nameserver 213.186.33.99
search ovh.net

dig命令似乎工作得很好,顯示查詢時間 0ms。

有什麼想法可能導致這種情況嗎?我在兩台機器上都使用 CentOS 6。

127.0.0.1是您的本地主機環回介面,這意味著您正在訪問自己的伺服器。由於各種原因,您的伺服器首先使用它來查找 DNS,並且由於您的伺服器不知道如何回答 DNS 查詢,因此您必須等到查詢超時並轉到第二個名稱伺服器。

只需使用真實的 DNS 名稱伺服器作為唯一條目:

nameserver 213.186.33.99

為什麼你甚至有 127.0.0.1 作為名稱伺服器?

顛倒名稱伺服器的順序,它會加快速度。

nameserver 213.186.33.99
nameserver 127.0.0.1

引用自:https://serverfault.com/questions/791911