Linux で DNS キャッシュをクリアする

Linux で DNS キャッシュをクリアする

私はラップトップで Linux を使っていますが、URL を使用して特定の Web サイトにアクセスできなかったため、sudo /etc/init.d/nscd restartDNS キャッシュをクリアするために を使用しましたが、Firefox では URL に「サーバーが見つかりません」というメッセージが表示されます。Chrome も試しましたが、まだ機能しません。他の友人は Web ページを見ることができますが、私には見ることができません。では、この問題の主な原因は何でしょうか? 他のサイトは問題なく閲覧できます。

奇妙なことに、その特定の URL の IP アドレスを入力しても、他の人が見るページとは異なるページが表示されます。

この件に関してご助力いただければ幸いです。

答え1

bind誤って実行していない限り、nscdにある構成ファイルを確認する必要があります/etc/nscd.conf

保存されているキャッシュがリストされます。

 enable-cache            hosts           yes
 positive-time-to-live   hosts           3600
 .......

# nscd -?

-g, --statistics Print current configuration statistics

-i, --invalidate=TABLE Invalidate the specified cache

nscd -g

    hosts cache:

        yes  cache is enabled
         no  cache is persistent
        yes  cache is shared
        211  suggested size
     216064  total data pool size
        384  used data pool size
        600  seconds time to live for positive entries
          0  seconds time to live for negative entries
          0  cache hits on positive entries
          0  cache hits on negative entries
        128  cache misses on positive entries
          0  cache misses on negative entries
          0% cache hit rate
          3  current number of cached values
          7  maximum number of cached values
          2  maximum chain length searched
          0  number of delays on rdlock
          0  number of delays on wrlock
          0  memory allocations failed
        yes  check /etc/{hosts,resolv.conf} for changes

# nscd -i hosts

これによりキャッシュが無効になります。

nscd -g しかし、それを実行した後、再起動後にnscdフラッシュされたホストのエントリには変更がありませんでした。

service nscd restart

    hosts cache:

        yes  cache is enabled
         no  cache is persistent
        yes  cache is shared
        211  suggested size
     216064  total data pool size
          0  used data pool size
        600  seconds time to live for positive entries
          0  seconds time to live for negative entries
          0  cache hits on positive entries
          0  cache hits on negative entries
          0  cache misses on positive entries
          0  cache misses on negative entries
          0% cache hit rate
          0  current number of cached values
          0  maximum number of cached values
          0  maximum chain length searched
          0  number of delays on rdlock
          0  number of delays on wrlock
          0  memory allocations failed
        yes  check /etc/{hosts,resolv.conf} for changes

bind を実行している場合を除き、これはデータベースを見つけて削除する以外にキャッシュをクリアする唯一の方法ですnscd。データベースを見つけて削除すると、他の問題が発生する可能性があります。IP 解決のトラブルシューティング手順に従うことをお勧めします。質問に対するコメントにいくつか概要を記載しました。

これはLinux Journalの非常に良い記事へのリンクですネットワークの問題のトラブルシューティング

答え2

これは古い質問だとはわかっていますが、誰かが再びこの問題に直面した場合に備えてこれを追加します。

今朝、同様の DNS クライアント キャッシュの問題に直面したとき、 によって保存されたキャッシュをクリアするための通常の手順をすべて実行しnscd、最初の回答で述べたように を再起動しました。OS キャッシュも削除しましたが、特定のホスト名は依然として古い IP アドレスに解決されていました。resolv.confから行nscdを削除した後でのみ、解決が開始されました。nameserver 127.0.0.1

関連情報