あなたはずっと前にすでに返事をもらっていましたが、私たちはもっと正確にできると思いますし、フォローアップの質問があります。
それでは、最初から戻りましょう。
ルートサーバーを照会して.COM
委任について学習すると(.NET
両方が同じレジストリで処理されるため、以下のすべてが同じように適用されることに注意してください)、この返信を受け取ります。
$ dig @a.root-servers.net com. NS +noall +auth
; <<>> DiG 9.12.0 <<>> @a.root-servers.net com. NS +noall +auth
; (1 server found)
;; global options: +cmd
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
要約すると、これらのネームサーバーはいずれも権限が.COM
あり、すべて同じデータを持っています(したがって、質問を広げることができます。a.gtld-servers.net
決して特別なことではありません。以下はすべてこれらのネームサーバーに適用されます)。
これらのネームサーバーに.COM/.NET
ドメイン名を照会する場合、要求しているドメイン名に対して権限のあるネームサーバーで権限を持って応答する必要があります。
したがって、定義上、「a.gtld-servers.net(および* .gtld-servers.net)はすべての.comドメインのレコードをローカルに持っているということですか?」「すべて」の周りにいくつかの警告があります。
グルーレコードについて話すことに注意してください。これは特定のケースであり、最も頻繁に起こるケースではありません。通常、上記のネームサーバーのいずれかでドメインを要求すると、1つ以上のNSレコードが返されます。
テキスト内のその他の重要な点に時間を割いてみましょう。
彼らは非常に迅速に応答するので、彼ら自身がさらにクエリを行っているとは思わない。
定義上、権限のあるネームサーバーには、外部リソースに依存することなく、クエリに応答するために必要なデータがあります。そうでない場合、実際には権限がありません。
速度に関しては、これは部分的に主観的であり、テストの内容と方法に大きく依存しますが、いくつかの要因があります:デフォルトでは、DNSはTCPよりも軽いUDPを使用するため高速であり、そのようなネームサーバーはエニーキャストされます。あなたの「近く」に一人います。
私はa.gtld-servers.netがおそらくいくつかのマシンであることを理解しています
"おそらく"を削除できます:-)これらのネームサーバーは非常に多くのクエリを受信するため、どのボックスも耐えられません。
あなたがに行く場合https://stat.ripe.net/192.5.6.30#tabId=routingあなたは、この単一のIP見て、基本的に消化するのは難しいかもしれ多くの情報を表示されますが、a.gtld-servers.net
中に(実際にはブロックをすべてが1つの会社によって制御されている複数のASによって発表されています。これは、ほとんどのDNSで美しく機能するエニーキャストの強力な指標です。
あなたがに行く場合http://www.root-servers.org/あなたはより多くを学ぶことができます。これはルートネームサーバーに関連する.COM
ものであり、もはやではありませんが、技術的にはまったく同じものです。たとえば、13のルートサーバーが930のインスタンスにまたがる12の異なる組織によって管理されていることを発見できます(インスタンスは1つのサーバーだけでなく、場所、オペレーターが通常「ノード」を持つ「ポイントオブプレゼンス」ですルーティングギア、負荷分散/フェールオーバーセットアップの複数サーバー、一部の監視/リモートハンド機能など)。F
たとえば、222か所にあります。
そして、私は最も近いものにルーティングされていること(その新しいone-ip-multiple-machineテクノロジーを介して)が、これは他のいくつかのマシンがすべて.comドメインを持っていることを意味します。
はい、多くのマシンにはすべての.COM
ドメイン名のリストがあります。しかし、最初は正確です。これらのネームサーバーでは、すべての.COMドメイン名のすべてのネームサーバーのリストを取得します。これは複数の場合に発生する可能性があります。
- ドメイン名を登録するときに、ネームサーバーを設定しないか、後で削除するかを選択できます。
- たとえば、支払い紛争のためにレジストラが
clientHold
ドメイン名にステータスを追加し、それがDNSから消える可能性があります
- レジストリは
serverHold
、何らかの理由でドメインを配置できます。
(これらのステータスやその他の詳細については、https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-enをご覧ください)。
「すべて」をどのように定義するか、およびそのようなデータをどのように使用するかによっては、実際にはそれらすべてを完全に取得できない場合があります。
上記のすべてのケースで、ドメインはレジストリDNSサーバーに表示されませんが、whoisクエリを実行すると表示されます。したがって、whoisサーバー(ここでも、単一のボックスではありません)には、すべての.COMドメイン名のリストと、ネームサーバーよりも多くのデータが含まれます。
- 解決されていないため、レジストリネームサーバー上にないものも含めて、本当にすべてのドメイン名があります
- whoisは、連絡先データなど、はるかに多くの情報を提供します
そして、これらは依然として、何らかの方法または一部でドメイン名のリスト(またはその一部)を持っている一般公開のレジストリサービスにすぎません。
フォローアップに関して:
追加の質問:誰かがこれらのマシンの1つに「ハッキング」した場合、すべての.comドメインのリストを取得できませんでしたか?
技術的には、はい。だが:
- これは確かにあなたがオンラインで見つける最も簡単なターゲットではありません
- この特定のケースでは、データはすでに無料で利用可能です。
.COM
はgTLDであり、ICANNとの契約の下にあります。ICANNはすべてのgTLDレジストリにゾーンファイル(基本的にネームサーバーが使用するものであるため、NSレコードとA / AAAAグルー)の公開を少なくとも1日に1回義務付けており、契約に署名する限り誰でも無料でアクセスできますこのデータを「悪い」目的(自分で再公開するなど)に再利用しないようにするためです。
詳細については、https://czds.icann.org/enを参照してください。これにより、何百ものgTLDゾーンファイルにアクセスできます。
質問が「誰かがこれらのマシンの1つにハッキングし、.COMドメイン名を追加または削除するコンテンツを変更した場合...」に拡張される場合、すぐに回答できることに注意してください。
- 1つのボックスのみをハックし、最初に名前で、次にエニーキャストで多数のネームサーバーが存在するため、変更は世界中で見られません。
- DNSSECは、変更をエラーとして表示するため、すぐに発見されます(もちろん、オペレーター自身によるローカル対策に加えて)。
要するに、.COM
ドメイン名を台無しにするためにそれを行うことは最善のアイデアではありません。他の方法もあります。
ドメイン情報は公開されていますが、大量に取得することはまだ困難です。
ICANNプログラムについては上記を参照してください。ccTLDに関しては状況はさまざまですが、多くの場合、リアルタイムではなく、ゾーンファイルへのアクセスを許可しません。
たとえば、「オープンデータ」の移動などにより、しばらくしてからアクセスできる場合があります。一つの例:https://opendata.afnic.fr/en/products-and-services/services/opendata-en.htmlのための.FR
ドメイン名。
* .gtld-servers.netはゾーン転送をサポートしていません(少なくとも数年前は.eduのネームサーバーがサポートしていましたが)。
テストが簡単:
$ for ns in $(dig NS . +noall +ans | grep 'IN NS' | awk '{print $5}') ; do echo $ns ; dig @$ns com. AXFR; done
c.root-servers.net.
; <<>> DiG 9.12.0 <<>> @c.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
m.root-servers.net.
; <<>> DiG 9.12.0 <<>> @m.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
i.root-servers.net.
; <<>> DiG 9.12.0 <<>> @i.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
e.root-servers.net.
; <<>> DiG 9.12.0 <<>> @e.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
j.root-servers.net.
; <<>> DiG 9.12.0 <<>> @j.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
l.root-servers.net.
; <<>> DiG 9.12.0 <<>> @l.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
g.root-servers.net.
; <<>> DiG 9.12.0 <<>> @g.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
k.root-servers.net.
; <<>> DiG 9.12.0 <<>> @k.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
b.root-servers.net.
; <<>> DiG 9.12.0 <<>> @b.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
h.root-servers.net.
; <<>> DiG 9.12.0 <<>> @h.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
d.root-servers.net.
; <<>> DiG 9.12.0 <<>> @d.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
;; QUERY SIZE: 44
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
;; QUERY SIZE: 44
;; connection timed out; no servers could be reached
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
a.root-servers.net.
; <<>> DiG 9.12.0 <<>> @a.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
f.root-servers.net.
; <<>> DiG 9.12.0 <<>> @f.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44
; Transfer failed.
いいえ、現時点では、.COM
権威あるネームサーバーはAXFRクエリを受け入れません。しかし、これは必ずしもどこでも同じではありません。照会した場合f.root-servers.net
、ネームサーバを、あなたは公開されているすべてのTLDを取得するにはAXFRクエリを行うことができます。他の一部のTLDもこれを許可します。
パブリックAXFRクエリの許可に対する「多くの」推奨事項があることに注意してください。事実は、それらが定義により巨大な答えであり、繰り返されるとサーバーに負担をかける可能性があるということです。市民がこの情報を必要とする理由/必要性について、議論を重ねることができます。DNSの最初にネームサーバー間でゾーンをコピーするために使用されました(現在、はるかに優れた代替手段があります)。したがって、AXFRはしばしば無効になっています...ただし、特定の方法(NSEC3バリアントではなくNSEC)で同時にDNSSECを実行する場合は、標準のDNSクエリを介して、AXFRを使用せずに簡単に歩き回ることができますゾーンし、zonefileを再構築します。そのためのツールが存在します。
また、オンラインのさまざまなプロバイダーが、さまざまな手段で取得した多くのTLDのゾーンファイルおよび/またはすべてのドメイン名のリストを販売することに注意してください(特に1つのアイデア:のようなオープンゾーンファイルを取得し、.COM
TLDについては.example
、1つずつクエリを実行します)で見つかったすべての名前.COM
は、もちろん、TLDで最も使用されている言語に基づいて辞書を検索する以外にも、いくつかのアイデアを提供します。