私は、DNSレコードを(更新ns1
、ns2
、ns3.myhostingcompany.com
私がホスティングされてしまったサイトのために)、私はまだ、ドメインレジストラ駐車ページを取得します。
問題がUbuntuのキャッシュDNSレコードにあるかどうかを確認したいと思います。UbuntuのDNSキャッシュをクリアする方法はありますか?(そのようなものが存在する場合?)
私は、DNSレコードを(更新ns1
、ns2
、ns3.myhostingcompany.com
私がホスティングされてしまったサイトのために)、私はまだ、ドメインレジストラ駐車ページを取得します。
問題がUbuntuのキャッシュDNSレコードにあるかどうかを確認したいと思います。UbuntuのDNSキャッシュをクリアする方法はありますか?(そのようなものが存在する場合?)
回答:
マイク・シュルツの答えを見てください。
Ubuntuはデフォルトでdnsレコードをキャッシュしません。したがって、dnsキャッシュをインストールしていない限り、クリアするものはありません。
DNSレコードはプロバイダーのDNSサーバーによってキャッシュされる可能性が高いため、DNSの変更が成功したかどうかを確認する場合は、digを使用してドメインホスティングサービスからDNSサーバーに問い合わせることができます。
dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server
UbuntuでDNSのキャッシュを開始したい場合は、pdnsd
と共にインストールすることをお勧めしresolvconf
ます。nscd
バギーであり、お勧めできません。
Ubuntu 17.04以降では、systemd-resolveがDNSに使用されます。systemdのキャッシュは次のようにフラッシュできます。
sudo systemd-resolve --flush-caches
sudo systemd-resolve --statistics
systemctl restart systemd-resolved.service
18.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 restart
Debianで私のためにトリックをやった
Ubuntuは17.04以降のsystemd-resolveを使用しているため、この回答は最近のUbuntuバージョンには適用されません。「Ubuntu 17.04以降(18.04)でDNSキャッシュをフラッシュする」を参照してください。
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
できますが、そのままではありません。マシンとさまざまな構成ディレクトリをチェックして、同じページにいることを確認できます。
キャッシュの問題が発生している場合、これはいくつかの場所のいずれかで発生している可能性があります。
ここでバレルを削っていますが、おそらく、キャッシュをオンにする代わりに、Ubuntuに非標準のDNSサーバーをインストールしたのでしょうdnsmasq
。:そこに多くは nscd
djbdnsを、dnscache
(別名tinydnsが)、 pdns
、pdnsd
、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
にしてください。
Ubuntu 12.04はdnsmasqを使用してDNSをキャッシュします(を参照man dnsmasq
)。以下を使用してキャッシュをクリアします。
sudo kill -HUP $(pgrep dnsmasq)
sudo killall -HUP dnsmasq
?
pkill
の代わりに、kill
とpgrep
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
個人的には、OpenDNSを使用し、キャッシュチェック機能を使用して、変更が機能することを確認するために強制的に更新を行いますが、48時間以内にユーザーの更新を保証することはできません。
DNSは遅い獣です。忍耐は正気を保ちます。
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がインターネット全体に伝播するには少し時間がかかる場合があります。
上記のすべての答えは、名前解決で1つの重要なことを忘れました。一般に、名前解決を要求するDNSサーバーは、レコード自体を保持するDNSサーバー(権限のあるサーバー)ではありません。各DNSレコードにはTime To Live値が付属しているため、この値で指定された秒数の間、解決チェーン内の各DNSサーバーがキャッシュを行う必要があります。そのため、マシンにキャッシュできるだけでなく、名前のルックアップの結果は、制御していないサーバーのどこかにキャッシュされます。
名前レコードの変更をすぐに通知する唯一の解決策は、権限のあるネームサーバーでエントリを作成/更新するときに0のTTL値を使用することです。ただし、これは、名前解決ごとにサーバーがヒットすることを意味します。通常、これはレジストラによって許可されていません。たとえば、選択可能な事前定義のTTL値のリストを提供できます。
さまざまなドメイン名を管理し、権限のあるネームサーバーに変更が確実に適用されるようにdnstracer
、DNSルートから各サーバーの検索結果を表示できるというツールを使用しています。
結論として、DNSキャッシュソリューションが導入されていなくても、DNSレコードを変更してからPCに変更が反映されるまでに遅延が発生します。この遅延は、レコードのTTLと、PCと権限のあるネームサーバーとの間のDNSサーバーの数に大きく依存します。
次のコマンドを使用して、12.10 ubuntuボックスのDNSキャッシュをフラッシュしましたが、非常にうまく機能しました。
sudo kill -HUP $(pgrep dnsmasq)
もう1つの有用なシグナルはSIGUSR1です。これは、syslogに少しの統計をダンプするか、以下のメモですman dnsmasq
。
--no-daemonモードまたはフルロギングが有効(-q)の場合、キャッシュの内容の完全なダンプが作成されます。
pkill
の代わりに、kill
とpgrep
リモート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
/etc/hosts
。私はドメインの古いIPアドレスがキャッシュされていることを確認しましたが、DNS伝播に対する忍耐力がないために少し前に追加したレコードstrace ping example.com
を削除するのを忘れたことを明らかにしただけ/etc/hosts
です。