したがって、私たちはクラスの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など)。
お気づきのように、 DNSは主にUDPを使用しますが、サービスは実際にはTCPでも提供されます (通常、大きな応答とゾーン転送に使用されます)。
これが、telnet
を試したときに最初に接続を確立できた理由です。 telnet
がTCPを使用しているためではなく、予期した方法でサービスと対話していないため、接続が閉じられました。
重要な違いは、プレーンテキストプロトコルであり、直接操作するのが簡単なHTTPとSMTPとは異なり、 DNSはバイナリプロトコル です。
つまり、妥当な方法でネームサーバーと対話するには、いくつかのDNSクライアントプログラムが必要になります。
Dig
は、非常に長い間DNSトラブルシューティングの事実上の標準であり、クエリの構築とすべての情報のきれいな印刷の両方の点で非常に優れています。簡潔な方法で応答します。 (BINDコードベースの一部であり、ISCからのWindowsビルドに含まれています。)
drill
は、Dig
と同様の機能と基本的に同じ出力フォーマットを備えた別の代替手段です。
nslookup
は、黎明期から存在していることで知られています。これはWindowsを除いてほとんど放棄されており、前述の代替手段と比較して、いくつかの望ましくない奇妙な点と機能が制限されています。デバッグオプション(set debug
)は、出力の完全性を大幅に改善するので、ピンチでのトラブルシューティングに使用できますが、デバッグ出力のフォーマットは多くのことが望まれます。
次のように、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
宜しくお願いします!
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'