web-dev-qa-db-ja.com

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

ホストしたサイトのDNSレコード(ns1ns2ns3.myhostingcompany.com)を更新しましたが、ドメインレジストラーのパーキングページが表示されます。

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

192
Jono

18.04以降の場合

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

11.10以下の場合

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

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

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

UbuntuでDNSのキャッシュを開始したい場合は、pdnsdresolvconfとともにインストールすることをお勧めします。 nscdはバグが多いためお勧めできません。

64
Li Lo

12.04

Ubuntu 12.04はnetwork-managerに組み込まれている dnsmasq を使用しますが、does n'tキャッシュDNSがないため、フラッシュする必要があります。以下は、そのことを証明するためのsyslogのサンプル行です。

dnsmasq[2980]: started, version 2.59 cache disabled

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

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

Sudo service network-manager restart

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

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

70
user76204

Ubuntu 17.04以降(18.04)

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

Sudo systemd-resolve --flush-caches
66
Mike Shultz

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

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

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

/ usr/sbin/dnsmasq\
 --no-resolv\
 --keep-in-foreground\
 --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が意味することを意味する(unlimitedキャッシュの代わりに)、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.

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

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

  • コンピューターの上流。一部のルーターはキャッシュします。多くの企業ネットワークはDNSをキャッシュします。 ISPが実行する多くのDNSサーバーは、独自のキャッシュを使用します。ネットワークキャッシュに対して保証する唯一の方法は、手動で更新できるキャッシュを使用することです。これがOpenDNSが好きな理由です。
  • クライアントアプリケーション(特にブラウザー)。アプリケーションは、Ubuntuが影響を及ぼさないあらゆる種類の独自のキャッシングを実行できます。 FirefoxがDNSをキャッシュする方法ChromeのDNSキャッシュをクリアする方法 。他のブラウザー(およびアプリケーション)には、独自のメカニズムがある場合があります。
  • ここでバレルを削っていますが、おそらくdnsmasqでキャッシュをオンにする代わりに、Ubuntuに非標準のDNSサーバーをインストールしたのでしょう。 nscd、DJBDNS 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サーバーが期待するもの)をヒットしていない場合は、代わりにヒットしているものを確認します。私の場合、これはdnsmasqがLXCのDNSクエリをミラーリングするように設定されていることがわかりますが、あなたの場合、悪いキャッシュ処理を行っている可能性があります。

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

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

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

62
Oli

12.04の場合:

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

Sudo kill -HUP $(pgrep dnsmasq)
39
zechariah

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

15
Mark Davidson

個人的には、 OpenDNSを使用 を使用し、 キャッシュチェック機能 を使用して、変更が機能することを確認するためだけに更新を強制しますが、できませんguarantee48時間以内にユーザーに対して更新されます。

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

11
Oli

Nscdを使用している場合:

Sudo /etc/init.d/nscd restart

それをキャッシュしているのはOSではないかもしれないことに言及する価値があります。 Everyone 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がインターネット全体に伝播するには少し時間がかかる場合があります。

7
bikesandcode

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

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

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

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

5
Benoit

Ubuntu 14.04の場合、次のコマンドをお勧めします。

Sudo service dns-clean
2
alphayax

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

Sudo kill -HUP $(pgrep dnsmasq)

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

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

1
j0inty

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

0
Nitz

Ubuntu 16.04では、以下を実行しない限り、キャッシュをクリアできませんでした。

Sudo service dnsmasq restart
0
Volomike

リモート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
0
D.Snap