(Dig
を使用して)DNSサーバーにクエリを実行し、キャッシュをバイパスする方法があるかどうか疑問に思っています。多くの場合、DNSサーバーのゾーンを変更し、それが自分のワークステーションから正しく解決されるかどうかを確認したいと思います。しかし、サーバーは解決された要求をキャッシュするため、古い要求を取得することがよくあります。サーバーを再起動またはロードすることは、実際には素晴らしいことではありません。
@
構文を使用して、特定のサーバーからドメインを検索します。 DNSサーバーがそのドメインに対して権限がある場合、応答はキャッシュされた結果にはなりません。
Dig @ns1.example.com example.com
権限のあるサーバーを見つけるには、ドメインのNS
レコードを要求します。
Dig example.com NS
DNSプロトコルには、キャッシュを使用せずにネームサーバーを強制的に応答させるメカニズムはありません。 Dig自体はネームサーバーではなく、標準のDNSリクエストを使用して、設定したネームサーバーにクエリを渡すツールです。 DNS does再帰を使用しないようサーバーに指示する方法が含まれていますが、これはあなたが望むものではありません。これは、信頼できるネームサーバーに直接クエリを送信する場合にのみ役立ちます。
ネームサーバーのキャッシュからの応答を停止したい場合は、構成を変更することによってのみ実行できますネームサーバー上。ただし、ネームサーバーを制御しない場合、これは不可能です。 。
ただし、Digをbypass構成されたネームサーバーに取得し、ルートサーバーに戻る独自の再帰的要求を実行できます。これを行うには、+trace
オプションを使用します。
Dig example.com +trace
実際には、これはローカルキャッシングリゾルバーではなく信頼できるサーバーのみをクエリするため、これらのサーバーが内部キャッシングを採用していても、結果は古くなりません。 +trace
を使用することの追加の利点は、パスに沿って行われた個別の要求をすべて確認できることです。
ここで注意すべき重要な点は、+trace
について話すときに多くの人がこれまでに含めなかったことに気付きますが、+trace
を使用すると、構成で指定されたDNSサーバーではなく、Digクライアントがトレースを実行します( /etc/resolv.conf)。したがって、言い換えれば、Digクライアントは、要求があれば、再帰DNSサーバーのように機能します。しかし、重要なことに、キャッシュがありません。
詳細-すでに[Dig -t mx example.com
]を使用してmx
レコードを要求していて、/ etc/resolv.confが8.8.8.8の場合、TTLゾーンはキャッシュされた結果を返します。ある意味で、自分のゾーンについて何かを探していて、Googleがそれをどのように認識しているのかは、ゾーンのTTLに対するDNSの結果をGoogleで汚染していることになります。あなたが短いTTLを持っているなら悪くない、あなたが1時間のものを持っているならややごみ。
したがって、+trace
は、Googleに初めて問い合わせたときにエントリがキャッシュされていなかった場合に何が表示されるかを確認するのに役立ちますが、Googleが全員に同じことを伝えているという誤った考えを与える可能性がありますあなたの+trace
結果は以前に尋ねたものではなく、長いTTLを持っている場合、キャッシュからTTLが期限切れになるまでサービスを提供するため、結果は提供されません。あなたの+trace
が明らかにしたものと同じです。
詳細なIMOは使用できません。
このbashは、最初にリストされているネームサーバーからexample.comのDNSエントリを掘り出します。
Dig @$(Dig @8.8.8.8 example.com ns +short | head -n1) example.com ANY +noall +answer
これは、.zshrc(およびおそらく.bashrc)のエイリアスと同じです。
# e.g. `checkdns google.com`
checkdns () { Dig @$(Dig @8.8.8.8 $1 ns +short | head -n1) $1 ANY +noall +answer; ping -c1 $1; }
/。の出力は次のとおりです。
☀ checkdns slashdot.org dev
-->Server DNS Query
; <<>> Dig 9.10.3-P4-Ubuntu <<>> @ns1.dnsmadeeasy.com. slashdot.org ANY +noall +answer
; (2 servers found)
;; global options: +cmd
slashdot.org. 21600 IN SOA ns0.dnsmadeeasy.com. hostmaster.slashdotmedia.com. 2016045603 14400 600 604800 300
slashdot.org. 86400 IN NS ns3.dnsmadeeasy.com.
slashdot.org. 86400 IN NS ns4.dnsmadeeasy.com.
slashdot.org. 86400 IN NS ns0.dnsmadeeasy.com.
slashdot.org. 86400 IN NS ns2.dnsmadeeasy.com.
slashdot.org. 86400 IN NS ns1.dnsmadeeasy.com.
slashdot.org. 3600 IN MX 10 mx.sourceforge.net.
slashdot.org. 3600 IN TXT "google-site-verification=mwj5KfwLNG8eetH4m5w1VEUAzUlHotrNwnprxNQN5Io"
slashdot.org. 3600 IN TXT "v=spf1 include:servers.mcsv.net ip4:216.34.181.51 ?all"
slashdot.org. 300 IN A 216.34.181.45
-->Local DNS Query
PING slashdot.org (216.34.181.45) 56(84) bytes of data.
64 bytes from slashdot.org (216.34.181.45): icmp_seq=1 ttl=242 time=33.0 ms
--- slashdot.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 33.026/33.026/33.026/0.000 ms
このソリューションは複雑で覚えにくいほど複雑ですが、問題が修正されないほど単純です。 Dig
は私の専門ではありません-改善を歓迎します:-)