DNSキャッシュをクリアするにはどうすればよいですか?


191

私は、DNSレコードを(更新ns1ns2ns3.myhostingcompany.com私がホスティングされてしまったサイトのために)、私はまだ、ドメインレジストラ駐車ページを取得します。

問題がUbuntuのキャッシュDNSレコードにあるかどうかを確認したいと思います。UbuntuのDNSキャッシュをクリアする方法はありますか?(そのようなものが存在する場合?)


1
また、を確認してください/etc/hosts。私はドメインの古いIPアドレスがキャッシュされていることを確認しましたが、DNS伝播に対する忍耐力がないために少し前に追加したレコードstrace ping example.comを削除するのを忘れたことを明らかにしただけ/etc/hostsです。
ulidtko 14

2
これらの回答の多くは、キャッシュがデフォルトで無効になっていることを示唆していますが、古いバージョンも参照しています。私のマシン(18.04)でデフォルトでオンになっているように見えます。以下のさまざまな答えが、フラッシュする方法を示しています。下にスクロールするだけ
です-Madivad

回答:


64

18.04以降の場合

マイク・シュルツの答えを見てください。

11.10以下の場合

Ubuntuはデフォルトでdnsレコードをキャッシュしません。したがって、dnsキャッシュをインストールしていない限り、クリアするものはありません。

DNSレコードはプロバイダーのDNSサーバーによってキャッシュされる可能性が高いため、DNSの変更が成功したかどうかを確認する場合は、digを使用してドメインホスティングサービスからDNSサーバーに問い合わせることができます。

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

UbuntuでDNSのキャッシュを開始したい場合は、pdnsdと共にインストールすることをお勧めしresolvconfます。nscdバギーであり、お勧めできません。


14
nscdにバグがある理由に関する参照はありますか?今日(2012-10)まだバグがありますか?
-jjmontes

3
回答を更新できますか?ATMは、Ubuntuバージョン11.10以降がDNSレコードをキャッシュするようです。
マーティンコネクニー

70

Ubuntu 17.04以降(18.04)

Ubuntu 17.04以降では、systemd-resolveがDNSに使用されます。systemdのキャッシュは次のようにフラッシュできます。

sudo systemd-resolve --flush-caches

2
OMG、結婚してくれませんか?18.04の問題も解決しました\ o /
NiKo

5
これは16.04 LTSでは機能しませんでしたが、キャッシュされている可能性のある別の方法を見ると便利でした。sudo systemd-resolve --statistics
Phil

あなたは日を救った
ダニーロ・ゴメス

1
18.04
LnxSlck

1
私にとっては、systemctl restart systemd-resolved.service18.04でも動作しました。
ジャスティン・セイン

69

12.04

Ubuntu 12.04 dnsmasqはに組み込まれているを使用しますがnetwork-manager、DNSをキャッシュしないため、フラッシュする必要はありません。syslogその点を証明するための私のサンプル行は次のとおりです。

dnsmasq[2980]: started, version 2.59 cache disabled

の設定も不要ですdnsmasq。ストック設定で実行している場合、DNSをキャッシュしません。そのため、このUbuntuの記事で説明されているように明示的に設定する必要があります。

設定を更新する場合は、ネットワークを無効にしてから有効にするか、実行します

sudo service network-manager restart

dnsmasq組み込まれているため、これは再起動しnetwork-managerます。syslogこの証拠を確認してください。

dhcpで有線接続を使用している場合network manager、ルーターから直接設定が取得され、Ubuntuにログインすると接続が自動的に確立されます。Webインターフェイス経由でアクセスできる場合は、ルーターの設定が正しいことを確認し、必要に応じて再起動できます。DNSの一般的な問題である場合は、isp dnsの代わりにGoogle dnsを使用してみてください。詳細については、こちらをご覧ください


sudo service network-manager restartDebianで私のためにトリックをやった
Pierre de LESPINAY 14年

61

Ubuntuは17.04以降のsystemd-resolveを使用しているため、この回答は最近のUbuntuバージョンには適用されません。Ubuntu 17.04以降(18.04)でDNSキャッシュをフラッシュする」を参照してください。

デフォルトでは、DNSはUbuntu <17.04にキャッシュされません(ただし、ネットワークまたはアプリケーションにキャッシュされる場合があります)

dnsmasqキャッシングかどうかを確認するにps ax | grep dnsmasqは、実行中のコマンドを実行して確認します。これが私のデフォルトの13.10マシンの内訳です。

/ usr / sbin / dnsmasq \
  --no-resolv \
  -フォアグラウンドに保持\
  --no-hosts \
  --bind-interfaces \
  --pid-file = / var / run / NetworkManager / dnsmasq.pid \
  --listen-address = 127.0.1.1 \
  --conf-file = / var / run / NetworkManager / dnsmasq.conf \
  --cache-size = 0 \
  --proxy-dnssec \
  --enable-dbus = org.freedesktop.NetworkManager.dnsmasq \
  --conf-dir = / etc / NetworkManager / dnsmasq.d

/etc/NetworkManager/dnsmasq.dデフォルトでは空です。したがって、オーバーライドはありません。チェック--cache-size=0するだけで、無制限のキャッシュではなく、それが意味するものを意味していることがわかりますman dnsmasq

-c, --cache-size=<cachesize>
  Set the size of dnsmasq's cache. The default is 150 names. 
  Setting the cache size to zero disables caching.

したがって、DNSをキャッシュすることはdnsmasq できますが、そのままではありません。マシンとさまざまな構成ディレクトリをチェックして、同じページにいることを確認できます。

キャッシュの問題が発生している場合、これはいくつかの場所のいずれかで発生している可能性があります。

  • コンピューターの上流。一部のルーターはキャッシュします。多くの企業ネットワークはDNSをキャッシュします。ISPが実行する多くのDNSサーバーは、独自のキャッシュを使用します。ネットワークキャッシュに対して保証する唯一の方法は、手動で更新できるキャッシュを使用することです。これがOpenDNSが好きな理由です。
  • クライアントアプリケーション(特にブラウザー)。アプリケーションは、Ubuntuが影響を及ぼさないあらゆる種類の独自のキャッシュを実行できます。FirefoxがDNSをキャッシュする方法ChromeのDNSキャッシュをクリアする方法。他のブラウザー(およびアプリケーション)には、独自のメカニズムがある場合があります。
  • ここでバレルを削っていますが、おそらく、キャッシュをオンにする代わりに、Ubuntuに非標準のDNSサーバーをインストールしたのでしょうdnsmasq。:そこに多くは nscddjbdnsを、dnscache(別名tinydnsが)、 pdnspdnsd、BIND9(およびその変種)、そしてより多くの私も覚えていないことができます。これらはおそらく証明されます/etc/resolv.conf(/ etc / resolvconf / `の設定でそのファイルを自動生成します)。以下は、ローカルでインターセプトされたDNSクエリを示しています。

    $ nslookup askubuntu.com
    Server:     127.0.1.1
    Address:    127.0.1.1#53
    
    Non-authoritative answer:
    Name:   askubuntu.com
    Address: 198.252.206.24
    

    8.8.8.8(またはDNSサーバーが期待するもの)をヒットしていない場合は、代わりにヒットしているものを確認します。私の場合、これはdnsmasqLXCのDNSクエリをミラーリングするように設定されていることがわかりますが、あなたの場合、悪いキャッシュ処理を行っている可能性があります。

    リストされたキャッシュを完了した場合、それぞれをクリアするプロセスは異なります。

    sudo /etc/init.d/nscd reload    # nscd
    sudo /etc/init.d/named restart  # bind9
    

少し関連する注意事項については、これを参照してキャッシュを有効dnsmasqにしてください


1
ps aux | grepからの私の出力はあなたのものと同じですが、間違いなく何かが私のマシンにDNSをキャッシュしています。dnsmasqでない場合は、別のものです。証明:サーバーにサブドメインを作成しましたが、pingできませんでした。ホストに到達できません。downforeveryoneorjustme.comで確認しましたが、稼働していたため、伝播の問題は破棄されました。GoogleのDNS 8.8.8.8を使用しているため、ルーターでもISPでもありません。その後、コンピューター(ルーターではなく)を再起動すると、ドメインにアクセスできました。再起動する前に何十回も再試行しましたが、運がありませんでした。再起動後に最初に試してみてください。
マッテオ14年

ところで、これは私が同じことを経験したのは初めてではありませんでした。数か月前にも同じことが起こり、ドメインにアクセスする唯一の方法はコンピューターを再起動することでしたが、その後、古いUbuntuバージョンを使用しました。
マッテオ14年

@matteoブラウザ?
オリ

いいえ、私はpingでテストしたと言ったように、ブラウザだけではありません。
マッテオ14年

@matteoさらに追加しましたが、アイデアが足りません。誰か DNSをキャッシュできる場所はこれだけではありません:)
オリ

39

12.04の場合:

Ubuntu 12.04はdnsmasqを使用してDNSをキャッシュします(を参照man dnsmasq)。以下を使用してキャッシュをクリアします。

sudo kill -HUP $(pgrep dnsmasq)

ありがとうございました!12.04のデフォルトのキャッシングについて言及しているのはあなたが初めてです!
タルカ

6
12.04はデフォルトではDNSをキャッシュしません。ネットワークマネージャーを再起動した後にsyslogを確認してください。dnsmasqがcache-disabledで始まることを示すエントリがあります。

1
キャッシュがデフォルトで有効になっているかどうかはわかりませんが、この答えはうまくいきました。
jeyk

どうしてsudo killall -HUP dnsmasq
ジェームスヘイ14

1
使用pkillの代わりに、killpgrep
ロバートSiemer

15

sudo /etc/init.d/nscd restart

http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

また、メモとして、digを使用してDNSの変更が反映されているかどうかを確認し、デフォルトのDNSサーバー以外の誰かと照合することもできます。この場合、Google DNS。

dig @8.8.8.8 example.com


12
nscdはデフォルトではインストールされないことに注意してください。
スケイン

11

個人的には、OpenDNSを使用し、キャッシュチェック機能を使用して、変更が機能することを確認するために強制的に更新を行いますが、48時間以内にユーザーの更新を保証することはできませ

DNSは遅い獣です。忍耐は正気を保ちます。


+1 OpenDNSを使用し、キャッシュのクリアも非常に便利です。
マークデビッドソン

私はOpenDNSを疑っています。最初はそれで満足でしたが、それから私は不審になり始めました。ISPとOpenDNSのどちらかを選択する場合は、OpenDNSを使用したほうが良いと思いますが、正しいですか?
城野

2
OpenDNSのほうが悪さは少ないと思います。彼らはあなたのトラフィックを収益化したいが、悪いドメインヒットに対してのみ。
オリ

@Oliリンクがダウンしています。まだ使用している場合は、リンクを更新してください。
シャヤン

7

nscdを使用している場合:

sudo /etc/init.d/nscd restart

それをキャッシュしているのはOSではないかもしれないことに言及する価値があります。誰もがDNSをキャッシュすることが好きです...いくつかのテスト:

新しいIPか古いIPかを確認してください。ほとんどのブラウザはDNSもキャッシュするため、Chromiumを再起動していない場合や、最新のものが表示されない場合があります。

ping yourdomain.com

/etc/resolv.conf内のローカルネームサーバーを別のプロバイダーgoogleまたはlevelに切り替えます。例:

nameserver 8.8.8.8
nameserver 4.2.2.2

そして、再びpingを実行します。

ルーターがどのような形式でもDNSをキャッシュしていないことを確認してください。(ルーター/ファームウェア/などによって異なります)

最後に、忍耐。DNSがインターネット全体に伝播するには少し時間がかかる場合があります。


2
NetworkManagerとDHCPを使用すると、DHCPリースの期限が切れたときに/etc/resolve.confがフラッシュされるため、NetworkManagerで静的IPを設定して、これを長時間にわたって動作させる必要があります。
ラッセポールセン

+1 FirefoxがDNSをキャッシュしていることに気づきませんでした。これは大いに役立ちました。
波モード14

ローカルネームサーバを切り替えるための+1が働いGoogleに
Bibekシャルマを

5

上記のすべての答えは、名前解決で1つの重要なことを忘れました。一般に、名前解決を要求するDNSサーバーは、レコード自体を保持するDNSサーバー(権限のあるサーバー)ではありません。各DNSレコードにはTime To Live値が付属しているため、この値で指定された秒数の間、解決チェーン内の各DNSサーバーがキャッシュを行う必要があります。そのため、マシンにキャッシュできるだけでなく、名前のルックアップの結果は、制御していないサーバーのどこかにキャッシュされます。

名前レコードの変更をすぐに通知する唯一の解決策は、権限のあるネームサーバーでエントリを作成/更新するときに0のTTL値を使用することです。ただし、これは、名前解決ごとにサーバーがヒットすることを意味します。通常、これはレジストラによって許可されていません。たとえば、選択可能な事前定義のTTL値のリストを提供できます。

さまざまなドメイン名を管理し、権限のあるネームサーバーに変更が確実に適用されるようにdnstracer、DNSルートから各サーバーの検索結果を表示できるというツールを使用しています。

結論として、DNSキャッシュソリューションが導入されていなくても、DNSレコードを変更してからPCに変更が反映されるまでに遅延が発生します。この遅延は、レコードのTTLと、PCと権限のあるネームサーバーとの間のDNSサーバーの数に大きく依存します。


もちろん、それが問題である場合、コンピューターを再起動しても修正されません。
マッテオ

2

ubuntu 14.04の場合、次のコマンドを推奨します。

sudo service dns-clean

デフォルトのサーバーにはインストールされません。14.04以下でのみ動作します。
RJ

1

次のコマンドを使用して、12.10 ubuntuボックスのDNSキャッシュをフラッシュしましたが、非常にうまく機能しました。

sudo kill -HUP $(pgrep dnsmasq)

もう1つの有用なシグナルはSIGUSR1です。これは、syslogに少しの統計をダンプするか、以下のメモですman dnsmasq

--no-daemonモードまたはフルロギングが有効(-q)の場合、キャッシュの内容の完全なダンプが作成されます。


使用pkillの代わりに、killpgrep
ロバートSiemer

1

Ubuntu 16.04では、次のようにしない限り、キャッシュをクリアできませんでした。

sudo service dnsmasq restart

0

私も矛盾を見つけましたが、これ:https : //superuser.com/a/521562は私にとっては問題ありません(Ubuntu 13.10には最新のアップデートがあり、特別なネットワークパッケージはインストールされていません)。
要するに、これを使うだけです
sudo /etc/init.d/dns-clean


0

リモートDNSサーバーでは特にopenDNSをお勧めします。

どうやるか?まあ...

cd /etc/dhcp
sudo nano dhclient.conf

「request subnet-mask ...」行の前にこれを挿入します

supersede domain-name-servers 208.67.222.222,208.67.220.220;

これにより、インターフェイスが非常に高速に再起動されるため、SSH接続を失うこともありません。

sudo ifdown eth0 && sudo ifup eth0

新しいopenDNSが正しくインストールされているかどうかを確認してください

cat /etc/resolv.conf

それは間違いなく質問への答えではありません。
-blafasel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.