web-dev-qa-db-ja.com

コマンドラインインターフェースを介したDNSサーバーへの接続

したがって、私たちはクラスのDNSの章にいます。SMTPやHTTPの場合のように、コマンドラインインターフェイス(つまり、Telnetまたはnetcat)を介してポート53でDNSサーバーに接続する方法はないかと考えていました。または特定のポートでのPOP。私は試した:

> telnet 8.8.8.8 53

しかし、接続は確立されるとすぐに閉じられました。後で気づいたのは、DNSがUDPを使用しているときにtelnetがTCPを使用しているためです。

次に、netcatでも同じことを試しました。

> nc -u 8.8.8.8 53

なだ! DNSの動作を透過的に表示したいだけです(http、SMTPなど)。

4
Jarwin

お気づきのように、 DNSは主にUDPを使用しますが、サービスは実際にはTCPでも提供されます (通常、大きな応答とゾーン転送に使用されます)。
これが、telnetを試したときに最初に接続を確立できた理由です。 telnetがTCPを使用しているためではなく、予期した方法でサービスと対話していないため、接続が閉じられました。

重要な違いは、プレーンテキストプロトコルであり、直接操作するのが簡単なHTTPとSMTPとは異なり、 DNSはバイナリプロトコル です。

つまり、妥当な方法でネームサーバーと対話するには、いくつかのDNSクライアントプログラムが必要になります。

Dig は、非常に長い間DNSトラブルシューティングの事実上の標準であり、クエリの構築とすべての情報のきれいな印刷の両方の点で非常に優れています。簡潔な方法で応答します。 (BINDコードベースの一部であり、ISCからのWindowsビルドに含まれています。)

drill は、Digと同様の機能と基本的に同じ出力フォーマットを備えた別の代替手段です。

nslookupは、黎明期から存在していることで知られています。これはWindowsを除いてほとんど放棄されており、前述の代替手段と比較して、いくつかの望ましくない奇妙な点と機能が制限されています。デバッグオプション(set debug)は、出力の完全性を大幅に改善するので、ピンチでのトラブルシューティングに使用できますが、デバッグ出力のフォーマットは多くのことが望まれます。

15

次のように、Digユーティリティを使用できます。

Dig @your.dns.server www.foo.bar

例:

Dig @8.8.8.8 www.google.com

段階的な名前解決を確認したい場合は、次のようにします。

Dig +add +trace @8.8.8.8 www.google.com

宜しくお願いします!

7
Stefano Martins

Windowsの場合、NSlookupを使用できます

   nslookup [-opt ...]             # interactive mode using default server
   nslookup [-opt ...] - server    # interactive mode using 'server'
   nslookup [-opt ...] Host        # just look up 'Host' using default server
   nslookup [-opt ...] Host server # just look up 'Host' using 'server'
3
Mass Nerder