ドメイン名の信頼できるネームサーバーを見つけるにはどうすればよいですか?


317

競合するDNSレコードの原因を見つけるにはどうすればよいですか?

回答:


413

特定のドメイン名のSOA(Start of Authority)レコードが必要になります。これは、広く利用可能なnslookupコマンドラインツールを使用してSOA(Author of Authority)レコードを実現する方法です。

command line> nslookup
> set querytype=soa
> stackoverflow.com
Server:         217.30.180.230
Address:        217.30.180.230#53

Non-authoritative answer:
stackoverflow.com
        origin = ns51.domaincontrol.com # ("primary name server" on Windows)
        mail addr = dns.jomax.net       # ("responsible mail addr" on Windows)
        serial = 2008041300
        refresh = 28800
        retry = 7200
        expire = 604800
        minimum = 86400
Authoritative answers can be found from:
stackoverflow.com       nameserver = ns52.domaincontrol.com.
stackoverflow.com       nameserver = ns51.domaincontrol.com.

起源(またはプライマリネームサーバラインWindows上で)ことを示していますns51.domaincontrolはのための主要なネームサーバであるstackoverflow.com

出力の最後に、指定されたドメインのバックアップサーバーを含むすべての権限のあるサーバーが一覧表示されます。


158
nslookup -type = soa stackoverflow.com
Ben Amada '14

6
ただし、Windowsでは「権威ある回答」の応答が表示されません。私はWindows 8とUbuntu 12を並べて使用していますが、同じドメインの同じコマンドがUbuntuでは正しく機能しますが、Windowsでは機能しません。
Mario Awad

1
これは必ずしもDNS構成の最近の変更を示しているとは限らないことに注意してください。ただし、使用しているdigように見えました(以下の回答を参照)
rogerdpack '29

6
信頼できる回答はないが、信頼できない回答で問題ないというのはどういう意味ですか?
9:31にオーバーマインド

6
nslookup -type=soa stackoverflow.com今日(2019年2月)にLinuxで実行する場合、権限のあるセクションは空です。
simpleuser

174

質問で単数形を使用しましたが、通常は権威のあるネームサーバーがいくつかありますが、RFC 1034では少なくとも2つを推奨しています。

「権限のあるネームサーバー」ではなく、「プライマリネームサーバー」を意味する場合を除きます。セカンダリネームサーバーに権限があります。

UNIX上のドメインのネームサーバーを見つけるには:

  % dig +short NS stackoverflow.com
 ns52.domaincontrol.com.
 ns51.domaincontrol.com.

プライマリとしてリストされているサーバーを見つけるには(「プライマリ」の概念は最近非常にあいまいであり、通常は適切な答えがありません):

% dig +short  SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.

ネームサーバー間の不一致をチェックするために、私の好みはcheck_soaLiu&Albitzの「DNS&BIND」の本(O'Reillyエディター)で説明されている古いツールを使用します。ソースコードはhttp://examples.oreilly.com/dns5/で入手できます

% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300

ここでは、2つの信頼できるネームサーバーのシリアル番号が同じです。良い。


5
dig + shortは、いつも期待する答えを与えるとは限りません。たとえばwww.pressero.com、別のサイトのCNAMEであるとして定義されたサイト-dig + short SOAは、CNAMEターゲットを返すだけです。
ロスプレッサー、2015年

どのようにしてNSを信頼できるものにしますか?
オーバーマインド

1
@OvermindあなたはNSを「権限のある」ものにしないでください。ネームサーバーが一部のドメインに対して信頼できるものとして構成されている場合は、これらのドメインに対してローカルにゾーンファイル(通常はフラットなテキストファイルですが、別の方法で実行することもできます)があり、それらのクエリに応答します。役立つためには、権限のある各ドメインの親ゾーンにNSレコードとしてリストする必要があります。そうしないと、デフォルトで誰もクエリを実行しません。
Patrick Mevzek 2018年

@RossPresser答えはNS / SOAレコードについて話していましたがwww.pressero.com、私がそうすることを疑っています。おそらくAレコード(これをdig指定しない場合のデフォルトのレコードタイプ)について考えていたでしょう。ただし、必要に応じて、tail -1最終結果を取得するためにを追加するだけです。
Patrick Mevzek 2018年

@PatrickMevzekコメントで述べたように、を使用しましたdig +short SOA www.pressero.com。これは、CNAMEターゲットのみを返しますpressero.com。ドメインのSOAレコードは返されません。 tail -1問題を助けません。dig +short SOA1行だけを放出しています。
ロスプレッサー2018年

40

* nixの場合:

$ dig -t ns <domain name>

3
彼はIPv4アドレスではなくネームサーバーを求めました。だから、タイプ(-t)NS、ないA.する必要があります
bortzmeyer

1
SOA @bortzmeyerと入力しないのはなぜですか?
ランディL

ええと、NSの結果ではなくSOAが返されるからですか?
tripleee

17

この種の質問に答えるように設計されたDNS伝播ツールがあります

ソースはAGPLv3の下でリリースされています。

(はい、現時点ではインターフェースはかなり基本的です:))

"host"コマンドでドメインのネームサーバーを見つけることもできます:

[davidp @ supernova:〜] $ host -t ns stackoverflow.com
stackoverflow.comネームサーバーns51.domaincontrol.com。
stackoverflow.comネームサーバーns52.domaincontrol.com。

@cachoその通りです。機会があれば追加します。
David Precious

1
壊れています、「502 Bad Gateway nginx / 1.14.2」を示しています
Marco Demaio

8

+ traceオプションを常に追加する最善の方法であることがわかりました。

dig SOA +trace stackoverflow.com

異なるプロバイダーでホストされている再帰的なCNAMEでも動作します。+ traceトレースは+ norecurseを意味するため、結果は指定したドメインのみのものになります。


dnsmasq + traceなどのローカルNSサーバーを実行している場合、何も返されません...
Daniel Sokolowski

このコマンドは、53行、3652バイトの出力を提供します。その多くはランダムな値です。信頼できるネームサーバーが何かを判断するために、出力をどのように解釈すべきですか?
theferrit32

下から上に読んでいきます。SOAレコードは検索対象です。SOAに対してgrepを実行すると、データが少なくなります。
アレックス、

6

あなたがググリングするべきであるという用語は「信頼できる」であり、「決定的な」ものではありません。

LinuxやMacでは、あなたはコマンドを使用することができwhoisdighostnslookupまたは他のいくつか。nslookupWindowsでも動作する可能性があります。

例:

$ whois stackoverflow.com
[...]
   Domain servers in listed order:
      NS51.DOMAINCONTROL.COM
      NS52.DOMAINCONTROL.COM

追加クレジットについて:はい、可能です。


aryehは間違いなく間違いです。彼の提案は通常、ホスト名のIPアドレスしか提供しないためです。を使用する場合はdig、次のようにNSレコードを検索する必要があります。

dig ns stackoverflow.com

これはローカルDNSサーバーに要求する可能性があり、そのため、キャッシュにある間違ったまたは古い回答を返す可能性があることに注意してください。


6
これらのコマンドは同等ではありません。whoisによって提供される情報が最新のものであるとは何も言われていません。レジストリやレジストラに通知せずにゾーンファイルのNSレコードを更新することが原因ではない場合がよくあります。
bortzmeyer 2008

親ゾーンが更新されていない限り、何も変更されない限り、ゾーン内のNSレコードを自由に変更できます。また、親ゾーンの更新は、通常、whoisデータの更新(少なくとも私のプロバイダーでは)と連動しています。

5

ドメインの信頼できるネームサーバーとその一般的なDNSレコードを1つのリクエストで提供するDNSルックアップツールを構築しました。

例:https : //www.misk.com/tools/#dns/stackoverflow.com

私たちのツールは、ルートネームサーバーでリアルタイム(キャッシュされていない)DNSルックアップを実行し、信頼できるネームサーバーに到達するまでネームサーバーの紹介をたどることによって、信頼できるネームサーバーを見つけます。これは、DNSリゾルバが信頼できる回答を取得するために使用するのと同じロジックです。各クエリでランダムな権威ネームサーバーが選択(および識別)され、複数の要求を実行することで、競合するDNSレコードを見つけることができます。

上記の例のDNSルックアップ結果の下部にある「権威ネームサーバー」をクリックして、ネームサーバー委任パスを表示することもできます。

例:https : //www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net


2

whoisサービスを使用できます。UNIXのようなオペレーティングシステムでは、次のコマンドを実行します。または、http://www.internic.net/whois.htmlのWebでも実行できます

whois stackoverflow.com

次の応答が返されます。

...ここでテキストを削除しました...

リストされた順序でのドメインサーバー:NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

nslookupまたはdigを使用して、特定のドメインのレコードに関する詳細情報を見つけることができます。これは、説明した競合を解決するのに役立ちます。


2
whoisによって提供される情報が最新のものであるとは何も言われていません。レジストリやレジストラに通知せずにゾーンファイルのNSレコードを更新することが原因ではない場合がよくあります。
bortzmeyer 2008

質問への直接の回答ではありませんが、「whois」は、どこかでネームサーバーになるはずの人を(現在の理由ではなくても)教えてくれるので便利です。
SomeoneElse

1

残念ながら、これらのツールのほとんどは、実際のネームサーバー自体によって提供されるNSレコードのみを返します。ドメインを実際に担当しているネームサーバーをより正確に判断するには、「whois」を使用してそこにリストされているドメインを確認するか、「dig [domain] NS @ [root name server]」を使用して実行する必要がありますネームサーバーのリストを取得するまで再帰的に...

ネームサーバー自体から与えられる結果だけでなく、その結果を確実に一貫した形式で取得するために実行できる簡単なコマンドラインがあればよいのにと思います。これの目的は、管理している約330のドメイン名を照会できるようにすることです。これにより、各ドメインがどのネームサーバーを指しているかを正確に特定できます(レジストラ設定に従って)。

* nixで「dig」や「host」などを使用するコマンドを知っている人はいますか?


2
シンプル。ドメインがexample.orgであるとします。まず、「dig + short NS org。」で「.org」のネームサーバーを見つける必要があります。次に、そのうちの1つをクエリします(誰でも、すべて権威があります)。d0.org.afilias-nst.orgを選択しましょう。「dig @ d0.org.afilias-nst.org NS example.org。」でクエリします。
bortzmeyer、2009

リゾルバーがデフォルトでドメイン自体によってリストされたネームサーバーを返すという事実は良いことです。それが権威ある情報です。親ゾーンの委任には権限がありません。
bortzmeyer

そして、whoisへのポインタは赤いニシンです。多くの場合、whoisネームサーバー情報は古くなっています。信頼できるリソースはDNSです。
tripleee 2016年

1
Whoisは完全に恣意的です。whoisのリストに表示される値は、DNSと技術的な関係はありません。それはしばしば時代遅れであるか、まさしく間違っています。私は、whoisデータはほとんど信頼されるべきではない、と言って限ります。「薄い」レジストリと「厚い」レジストリがあります。よく知られている2つの厚いレジストリは、.c​​omレジストリと.netレジストリです。これらのレジストリにはすべてのDNSデータが含まれており、whoisの応答は信頼できる可能性があります。他のほぼすべてのレジストリは「もの」であり、独自のwhoisレジストリを実行しています。このデータはしばしば間違っています。
マーク

1

SOAレコードは、階層の上位にあるすべてのサーバーに存在し、ドメイン所有者は制御を持ちません。SOAレコードは、事実上、ドメイン所有者の制御下にある1つの権威ネームサーバーを指します。

一方、権限のあるサーバー自体のSOAレコードは、そのドメインを解決するために厳密に必要ではなく、偽の情報(または非表示のプライマリサーバー、またはその他の制限されたサーバー)を含むことができ、権限のあるネームサーバーの決定に依存すべきではありません特定のドメインの。

特定の子ドメインの信頼できるSOA情報を取得するには、トップレベルドメインに対して権限のあるサーバーにクエリを実行する必要があります。

(どのサーバーがどのTLDに対して信頼できるかという情報は、ルートネームサーバーから照会できます)。

TLD権限のあるサーバーからのSOAに関する信頼できる情報がある場合、プライマリネームサーバー自体(gTLDネームサーバーのSOAレコードにあるもの)に権限のある他のNSレコードを照会し、すべてのチェックに進むことができます。 NSレコードのクエリで取得したネームサーバー。これらのサーバーのいずれかで、他の特定のレコードに矛盾がないかどうかを確認します。

これはすべて、nslookup / windowsよりもLinuxおよびdigの方がはるかに優れており、信頼性が高くなります。


0

簡単な方法は、オンラインドメインツールを使用することです。私のお気に入りはドメインツール(以前のwhois.sc)です。ただし、競合するDNSレコードを解決できるかどうかはわかりません。例として、stackoverflow.comのDNSサーバーは

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM

0

一部のドメインでは、上記の回答が機能しないことがわかりました。私が見つけた最も速い方法は、最初にNSレコードをチェックすることです。それが存在しない場合は、SOAレコードを確認してください。それが存在しない場合は、digを使用して名前を再帰的に解決し、最後に返されたNSレコードを取得します。これに当てはまる例はanalyticsdcs.ccs.mcafee.com.

  1. NSレコードを確認する

host -t NS analyticsdcs.ccs.mcafee.com.

  1. NSが見つからない場合は、SOAレコードを確認します

host -t SOA analyticsdcs.ccs.mcafee.com.

  1. NSでもSOAでもない場合は、完全に再帰的に行い、最後に返されたNSを取得します。

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. 返されたネームサーバーが機能することをテストする

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

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