Linux

Linux不斷重試失敗的DNS伺服器

  • July 8, 2016

每當其中一台伺服器/etc/resolv.conf無法訪問時,Linux/glibc/whatever 都不夠聰明,不會重試一段時間。這會導致許多服務變得不可用,因為其中許多服務對所有傳入連接(如 SSH)進行反向查找,這將在第一個 DNS 伺服器查詢超時時掛起。

我怎樣才能讓我的 Ubuntu 機器對它使用的 DNS 伺服器變得聰明?我可以破解一個每分鐘執行的 bash 腳本,該腳本將 REJECT 規則插入到不響應探勘查詢的伺服器的 iptables 中,但我不想那樣做……

有人告訴我,Windows 可以正確執行此操作,順便說一句。

編輯:我通過將其放入/etc/resolv.conf(或/etc/resolvconf/resolv.conf.d/base)中來解決它:

options timeout:2 rotate

仍然不完美,但更可行。

為什麼 DNS 伺服器變得不可用?這是我們應該重點解決的問題…

rotate如果你想要一個確定的重試順序,你應該省略該指令。rotate基本上為您提供循環查找,這可能會在您的情況下產生不良結果。

我的 DNS/etc/resolv.conf看起來像:

search blah.net client.blah.net
options timeout 1
nameserver 172.16.2.14
nameserver 172.16.2.18

除此之外,您可以選擇在本地電腦上使用記憶體 DNS 服務,甚至啟用名稱伺服器記憶體守護程序(nscd)。這將有助於緩沖不可靠的 DNS 解析器帶來的延遲。

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