/etc/resolv.conf
内のサーバーの1つに到達できない場合は常に、Linux/glibc/whateverはしばらく再試行しないほど賢くありません。これにより、多くのサービスが利用できなくなります。これは、多くのサービスがすべての着信接続(SSHなど)で逆ルックアップを実行し、最初のDNSサーバークエリのタイムアウトのためにハングするためです。
Ubuntuボックスが使用するDNSサーバーについてスマートにするにはどうすればよいですか? Digクエリに応答しないサーバーのiptablesにREJECTルールを挿入する毎分実行されるbashスクリプトをハックすることはできますが、そのようにはしたくありません...
ところで、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
それを除けば、あなたdoは、ローカルマシンでキャッシングDNSサービスを使用するか、 ネームサーバーキャッシングデーモン)を有効にするオプションもあります。 (nscd)。これは、信頼性の低いDNSリゾルバーに伴う遅延を緩和するのに役立ちます。
うーん。私のシステムでこれと同じ問題に遭遇しました。プライマリDNSサーバーがオフラインになると、システム全体がせいぜい信じられないほど遅くなります。
実際、私はかなり前にこれについて同様の質問をしました: プライマリDNSサーバー障害のDNS/resolve.conf設定? 。そこには本当に良い答えがいくつかありました。
編集するだけで終わりました/etc/resolv.conf
タイムアウト値が低くなります。 (options timeout:1
)主に、最も効果的ではなく、最も簡単な回避策だったためです。この変更は、サーバーがデッドリゾルバーを待つ時間を短縮することを意味します。ルックアップには10秒ではなく2秒かかります。バッチ以外のことを行おうとすると、これはひどいことですが、少なくともサービス障害はほとんど発生しません。