resolv.confの変更を適切に処理するためにLinuxサーバーを再起動する必要があるのはなぜですか?


8

私はこれが私の理解の欠如である必要があることを知っていますが、ここに問題があります。

最近DNSサーバーを192.168.1.1から.2に変更したため、8つのLinuxサーバーすべてに移動し、/ etc / resolv.confを変更して変更を反映させました。これらはすべて静的であり、DHCPが関与していないことに注意してください。

変更を加えたら、nslookupとdigを使用して結果をすぐにテストできます。念のため、/ etc / init.d / networking restartを実行して-ネットワークサブシステムを再起動し、各サーバーでapacheとpostfixを再起動しました。

数日後、私たちのウェブサイトがメールを送信していないという報告を受けました。ログを調べたところ、mod_phpプロセスがメールを送信するためのDNSエントリを解決できないことがわかりました。約30分間頭を殴った後、サーバーを再起動するとすべてが正常に戻りました。

翌日、別のサーバー(通常のUbuntuではなくCentOSを使用)で、電子メールが通過していないというレポートが届きました。ログを確認すると、Postfixが名前を解決できないことがわかります。再起動すると、キューに入れられたすべてのメールがほぼ瞬時に配信されます。

ここで何が欠けているのですか?このプロセスのどの部分を正しく理解できなかったのですか?

回答:


11

あなたはおそらくnscdに噛まれました:http//linux.die.net/man/8/nscd

乾杯


ありがとう!これが問題を引き起こしていた可能性が高いようです。ローカルDNSキャッシングが一般的なLinuxシステムの一部であることに気付いていませんでした。
グレー

実際にテストしましたか?ジェイソンの仮説は可能ですが、確実ではありません。
bortzmeyer

@bortzmeyer-はい、同意します。あなた自身の答えは私が与えたであろうものと同じです(そして実際、最近2つの関連する質問をしなければなりません)。nscdよりもキャッシュされたres_init()状態である可能性がはるかに高くなります。
アルニタク

8

ほとんどのアプリケーションは、起動時に(を使用してres_init)リゾルバーを1回初期化し、その後は二度と初期化しません。これは、pingのような短期間のアプリケーションでは問題ではありませんが、長時間実行されるデーモンではより深刻です。

Apacheプロセス(mod_phpを実行する)は、おそらくそのケースでした。Apacheを再起動するだけで十分です。


3

resolv.confはリゾルバーに名前を探す場所を指示します。ほとんどの場合、これはlibcリゾルバーになりますが、SPFルックアップにPython DNSリゾルバーライブラリを使用するvPostMasterなど、他の場合もあります。

だから、それはCOULDリゾルバが長時間実行中のプロセスのためのresolv.confの情報をキャッシュしていることも、それはそれは新鮮なresolv.confファイルを使用して起動させている必要があります再起動後置、のように聞こえました。

/etc/nsswitch.confをチェックして、「ホスト」で発生した特別なことが指定されているかどうかを確認します。たとえば、私のラップトップのデフォルトのFedora 11行は次のとおりです。

ホスト:ファイルmdns4_minimal [NOTFOUND = return] dns

したがって、この場合は/ etc / hostsおよびDNSと同様にmdnsを使用します。この場合、DNSの変更が反映されていなかった場合、それを引き起こしているのはmdnsであったのかと思います。

ショーン


1

おそらくいくつかのキャッシュが行われています。同様の問題がsendmailあり、サービスを再起動するだけで修正されました。

場合によっては、サーバーをリブートし、システム内の任意の場所にあるすべてのキャッシュをクリアする方が、キャッシュするサービスが長すぎることを特定するよりもずっと簡単な場合があります。一方、それが再び発生し、再起動するサービスがわかっている場合は、投資になる可能性があります。


私は同意しますが、再起動が最も簡単な方法ですが、サーバーが重要な場合、再起動する時間を見つけるのは難しい場合があります。ご協力いただきありがとうございます!
グレー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.