特定のDNSサーバーにクエリを送信するにはどうすればよいですか?


155

IPアドレスがわかっている特定のDNSサーバーにクエリを発行したいと思います。Windows上にあるか* nix上にあるかは問題ではありません。

Windowsでは、次のようなことができます。

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
Name:    superuser.com
Address:  64.34.119.12

ただし、これはローカルマシンのDNS設定を使用します。代わりに、特定のDNSサーバーにクエリを実行して、クエリに正しく応答するか、まったく応答しないかをテストします。

したがって、次のようになります。

nslookup --dns-ip=8.8.8.8 superuser.com

回答:


201

基本的なAおよびCNAMEレコードの場合は、単に

nslookup somewhere.com some.dns.server

Usage: 
   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'

または、パラメータなしでnslookupと入力するだけで、さらに多くのオプションを実行できます...

Commands:   (identifiers are shown in uppercase, [] means optional)
NAME            - print info about the host/domain NAME using default server
NAME1 NAME2     - as above, but use NAME2 as server
help or ?       - print info on common commands
set OPTION      - set an option
    all                 - print options, current server and host
    [no]debug           - print debugging information
    [no]d2              - print exhaustive debugging information
    [no]defname         - append domain name to each query
    [no]recurse         - ask for recursive answer to query
    [no]search          - use domain search list
    [no]vc              - always use a virtual circuit
    domain=NAME         - set default domain name to NAME
    srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.
    root=NAME           - set root server to NAME
    retry=X             - set number of retries to X
    timeout=X           - set initial time-out interval to X seconds
    type=X              - set query type (ex. A,AAAA,A+AAAA,ANY,CNAME,MX,NS,PTR,SOA,SRV)
    querytype=X         - same as type
    class=X             - set query class (ex. IN (Internet), ANY)
    [no]msxfr           - use MS fast zone transfer
    ixfrver=X           - current version to use in IXFR transfer request
server NAME     - set default server to NAME, using current default server
lserver NAME    - set default server to NAME, using initial server
root            - set current default server to the root
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
    -a          -  list canonical names and aliases
    -d          -  list all records
    -t TYPE     -  list records of the given RFC record type (ex. A,CNAME,MX,NS,PTR etc.)
view FILE           - sort an 'ls' output file and view it with pg
exit            - exit the program

7
マニュアルで「ドメイン名」や「dns-サーバー」のような明確なものではなく、「ホスト」や「サーバー」という用語を使用しているのは残念です。
ClearCrescendo

1
完全に間違っているわけではありません。「ドメイン名」はホスト名の一部にすぎません。ドメインサフィックスを省略して、FQDNの「ホスト」部分のみを検索できます。 NSLOOKUPシステムで設定された検索サフィックスを使用して、一致を取得しようとします。
TheCompWiz 14

1
NSLOOKUPオプションを使用するために完全にアクセスする必要はありません-構文は少し奇妙です。nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5

11

nslookupのオプションを掘り下げるだけで、起動nslookupしたときに表示できhelp、nslookupインタラクティブモードの内部を入力すると、正しい答えが得られました。

C:\Documents and Settings\Anton Daneyko>nslookup help
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

*** DNSs2.Uni-Marburg.DE can't find help: Non-existent domain

C:\Documents and Settings\Anton Daneyko>nslookup
Default Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

> stackoverflow.com 8.8.8.8
Server:  [8.8.8.8]
Address:  8.8.8.8

Non-authoritative answer:
Name:    stackoverflow.com
Address:  64.34.119.12

16
この答えが「ただ掘る ...」で始まるのを見たとき、私は微笑んだ。
ホセイン

7

はい、 C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 独自のDNSサーバーを検索して、superuser.comのIPアドレスを見つけます。IPアドレスまたは別のDNSサーバーの名前をコマンドラインに追加すると、指定されたDNSサーバーでsuperuser.comのIPアドレスを検索します。例:

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 8.8.4.4
Server:  google-public-dns-b.google.com
Address:  8.8.4.4

Non-authoritative answer:
Name:    superuser.com
Addresses:  190.93.245.58
      190.93.246.58
      141.101.114.59
      190.93.247.58
      190.93.244.58

ちなみに、8.8.4.4はGoogle DNSサーバーのIPアドレスです。

ただし、上記の両方は、どちらもSOAであり、superuser.comドメインの権限があるため、「権限のない回答」を提供します。どちらにも、SOAから伝播されたキャッシュコピーがあります。権限のあるサーバーに問い合わせる場合は、最初に次のコマンドを使用して、権限のあるサーバーのIPアドレスの名前を見つけます。

C:\Documents and Settings\Anton Daneyko>nslookup -type=ns superuser.com
Server:  DNSs2.Uni-Marburg.DE
Address:  137.248.21.22

Non-authoritative answer:
superuser.com   nameserver = cf-dns02.superuser.com
superuser.com   nameserver = cf-dns01.superuser.com

cf-dns02.superuser.com  internet address = 173.245.59.4
cf-dns02.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3b04
cf-dns01.superuser.com  AAAA IPv6 address = 2400:cb00:2049:1::adf5:3a35
cf-dns01.superuser.com  internet address = 173.245.58.53

これにより、ローカルDNSサーバー、Marburg Uniから権限のない回答が返され、superuser.comのすべての権限のあるサーバーに名前が付けられます。次に、前に使用したコマンドを使用して、次のように4つの権限のあるサーバーのいずれかを確認できます。

C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 173.245.59.4
Server:  cf-173-245-59-4.cloudflare.com
Address:  173.245.59.4

Name:    superuser.com
Addresses:  141.101.114.59
      190.93.246.58
      190.93.245.58
      190.93.247.58
      190.93.244.58

ご覧のとおり、今回は権限のあるSOAサーバーがIPアドレスを返したため、「権限のない回答」というコメントはもう表示されません。これは、新しいドメイン名を作成したり、ホスティングプロバイダーを変更したり、別のドメインレジストラーに移管したり、24時間経っても新しいIPアドレスが伝達されないため、Webサイトにアクセスできない場合に特に便利です。次に、SOAから始めて、DNSサーバーから正しいIPアドレスが与えられていることを確認し、さらにツリーをたどっていきます。Google DNSサーバーが変更を受信したかどうかを確認し、最後にローカルDNSサーバーがドメイン名を正しいIPアドレスに解決できるかどうかを確認してください。


1

nslookupでデフォルトのDNSサーバーを変更するには、サーバーNAMEまたはIPofDNSを入力するだけでサーバーを変更できます。以下のこの例では、デフォルトのDNSサーバー(192.168.50.21)を新しいサーバー(4.2.2.3)に変更しました。

C:\ Windows \ system32> nslookup

デフォルトサーバー:不明

アドレス:192.168.50.21

サーバー4.2.2.3

デフォルトサーバー:c.resolvers.level3.net

住所:4.2.2.3

>

これで、4.2.2.3対192.168.50.21に対してクエリを実行する準備ができました。


これは別の回答を複製し、新しいコンテンツを追加しません。実際に何か貢献できるものがない限り、回答を投稿しないでください。
DavidPostill

多分新しいコンテンツはないが、価値がある。私は長い間よりもこの答えを好む:)
パウエルシオック

0

接続で使用するプライマリDNSを構成できます。
接続プロパティ=>インターネットプロトコル(TCP / IP)に移動します。(静的IPを設定できる場所)
ここで、各接続に使用するDNSを手動で定義できます。
テスト後、いつでも以前の値に戻すことができます。


3
DNSサーバーを照会する「直接的な」方法だとは思いません。
-lepe

0

1つのコマンドで指定されたDNSサーバーから特定のレコードタイプを取得する

指定したDNSサーバーを使用して、nslookupによって返されるデフォルトのAおよびAAAA(およびCNAME)レコード以外のレコードタイプを検索するには:

nslookup -q=<record type> <host> <DNS server>

たとえば、stackexchange.comDNSサーバーを使用してドメインのMXレコードを返すに8.8.4.4は、コマンドは次のようになります。

nslookup -q=MX stackexchange.com 8.8.4.4

0

私はOpenwrt 18.06.1 ARMv6 Raspberry piに取り組んでおり、torns dnsとdnscrypt-proxyをセットアップしているため、非常によく似た問題がありました。根本的な原因は、ローカルispがroot-servers.netからの安全でない応答、サイトが見つからなかったという応答をインターセプトし、独自のWebサイトにリダイレクトしていることです。これはセキュリティ上の大きな欠陥ではありませんが、特に有用ではありません。

特定のアドレスを照会するときに最初に行うテストは、実際には無効なアドレスを試して、サーバー、ポート、およびホストパラメーターを使用するときに適切なnull応答を取得することです。多くのガイドとバージョンがあり、考えるのは簡単ですキャッシュされた結果またはデフォルトサーバーから実際に応答しているときにポートテストを実行しています。null応答を取得した後、アクティブなサーバーのアドレスとポートを操作します。netstat -plntを使用すると、openwrtにアクティブポートを表示できますが、最初にいくつかのルーターコマンドをインストールする必要がある場合があることに注意してください。ポート9053で設定したtorサービスはここには表示されませんが、torrcファイルにDNSPort 127.0.0.1:9053を追加した後でも動作します。このプラットフォームのnslookup形式は[host]および[server]パラメータを受け入れ、nslookup cnn.comでtor dnsをテストできます127.0.0.1#9053コマンドnslookup cnnでdnscryptをテストできます。com 127.0.0.1#5353無効なポート番号またはドメインに変更すると、応答が返されます。; 接続がタイムアウトしました; Digはopenwrtでも動作しますが、bind-digパッケージからインストールする必要があります。dig -q 127.0.0.1 -p 9053 www.bbc.comまた、無効なポートに対しては失敗します。私の場合、/ etc / config / networkのエントリを変更し、以前に安全でないDNSエントリを使用していたネットワークに対してオプションdns '127.0.0.1'を設定すると、問題は解決しました。


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