特定のネームサーバーを照会するときの「dig」と「host」の違いは何ですか?


11

このコマンドを使用して、DNSプロバイダーで正しく設定したかどうかを確認していました。

host hostname.example.com ns1.example-nameserver.com

私が知る限り、これはns1.example-nameserver.com検索を求めhostname.example.com、その答えを報告します。host-not-found応答を受け取っていたので、間違っていると思った。しかし、自分のネームサーバを指定せずに(したがって、それを見て私のISPのネームサーバを許可する)私は正しい応答が(持っhostnameているCNAMEことが重要な場合)。私はこれを推測できなかったので、周りを検索してdigコマンドを見つけました:

dig @ns1.example-nameserver.com hostname.example.com

私が知る限り、これはhostコマンドと同じことを行います-特定のネームサーバーにホストを検索するように要求します。したがって、彼らは何らかの方法でそれを行う必要があり、ネームサーバーのキャッシングはと同じ方法を使用する必要があると結論付けますdig

私の結論は、正しいか間違っているかのどちらかです。

これら2つのルックアップ方法の違いは何ですか?

間違っている場合:

DNSとについての私の誤解どのようなものですhostし、digこの結論に私を導いてきたコマンドは?

出力例:

$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases: 

Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)

$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org

; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;cardiff.tzmchapters.org.   IN  A

;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600   IN  CNAME   ghs.google.com.

;; AUTHORITY SECTION:
google.com.     3600    IN  SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600

;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE  rcvd: 128

この場合、両方のコマンドは同じように機能するはずです。各コマンドの完全な出力を表示できますか?
レナン

digとの両方のhostレポートに注意してくださいNXDOMAIN。ではdig、あなたは、ヘッダ(出力の第5回非空白行)にし、それを見ることができるhost、それがより明らかです。NXDOMAINドメインが存在しないことを意味します。それでもCNAME、回答セクションにa が返されます!DNSサーバーのバグだと思います!
セラダ

したがって、その場合、まったく同じクエリパケットを送信しdighost両方ともまったく同じ応答パケットを取得します(タイムスタンプを除く)が、異なる解釈をしますか?んhostとすぐに、それは見ているよう救済NXDOMAIN
ジャボット

FWIW特定のサブドメインで正反対の問題があります。この特定のサブドメインでホストを使用すると、この特定のサブドメインが予想される標準的なホスト名に解決されることを示す予想レコードが提供されます。ただし、この特定のサブドメインでdigを使用すると、レコードが存在しないという応答を受け取ります。さらに、ブラウザでこのサブドメインに移動することはできません。スペルミスなどをチェックして何度も試しました。コマンドは明らかに同じように機能していません。
user12345

回答:


13

hostdig、およびnslookupすべての共有と同じ機能のほとんど。ケースでは、(特定のネームサーバに特定のDNS質問をする)について尋ね、されているdighost(実際とnslookup)まったく同じに動作します。

DNSのトラブルシューティングにdigは、出力形式が「生」であるため推奨されます。出力では、DNS応答の4つのフィールドすべての内容を直接表示します:質問、回答、権限、および追加セクション(およびヘッダーのフラグ) 、さらに多くのオプションがあります。host一方、より使いやすい出力形式を使用しています。

コマンドの1つが持つオプションと他のコマンドが必要としないオプション、またはコマンドの1つが出力し、他のコマンドが必要としない情報が必要ない場合は、好みの問題になります。


2
ネットワーク側で同じことを行う場合(実際のクエリ)、使用中にホストが見つからず、使用中hostに正しい答えを取得するにはどうすればよいdigですか?サーバーが特定の設定を使用して(選択または偶然に)これを引き起こすように構成されている場合でも、要求を区別できる必要があります。
ジャボット

いや!質問で指定する2つのコマンドは同等であり、同じ答えを生成するはずです!追加または権限セクションの記録ではなくdig、実際の回答が得られたと確信していますか?以下のようルナンが示唆、それが出力を表示するために役立つかもしれません。
セラダ

OK、出力例をいくつか追加しました。自宅でも職場でも同じ結果が得られます。使用するネームサーバーを指定せず、ISPがクエリを処理する場合、host正常に動作します。自分で試してみて、結果を教えてください。
ジャボット

これを確認するだけで-ISPは最終的に、サーバーは直接クライアントクエリに応答せず、情報転送を要求する他のネームサーバーにのみ応答するように設定されていると私に言った- digネームサーバーとは異なる方法でクエリを実行しますか?
ジャボット14年

1
DIGは、両方の定期的な質問(すべてのタイプAXFRを除く)とゾーン転送(タイプAXFR)を行うことができますが、あなたはおそらく定期的な質問を使用したいので、DNSのオペレータは、通常、許可スレーブにゾーン転送を制限する
Celada

0

FQDN以外のホスト名hostを使用している場合、デフォルトでは使用されないがresolv.conf、の検索ドメインを使用するため、結果が異なるdig場合があります。

使用する(または追加する)+search場合は、オプションを使用する必要があります。digresolv.conf~/.digrc

例えば:

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

$ dig +short +search foo
10.1.2.3
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.