チュートリアル

すべてのDNSレコードをダウンロードする方法

共有

インターネット上のすべてのドメインについて、あらゆるDNSレコードを1つのファイルにまとめる。全体像をつかむということは、結局そういうことです。そして、それを実現するクリーンな方法が1つだけあります。 リゾルバーを1週間叩き続けても、インターネットの半分でタイムアウトするようなスクリプトは必要ありません。必要なのは、数億件のドメイン名について、すでに収集・解析され、すぐにクエリできる状態のA、MX、TXT、NSのエントリです。これこそが、あなたが購入するものです。

DNSレコードとは?

DNSレコードとは、インターネットの住所録に記された1行の情報です。あるドメイン名がどこにあり、どうすればそこにたどり着けるかを世界に伝えます。どのサーバーがWeb上で応答するのか、メールがどこに届くのか、どのネームサーバーが権威を持つのか、といった情報です。稼働しているドメイン名はどれも複数のDNSレコードを持っており、それらをまとめると、そのドメインの運用上の指紋が浮かび上がります。

よく登場するレコードタイプがいくつかあります。

レコード 機能 値の例
A ドメインをIPv4アドレスに紐づける 93.184.216.34
AAAA ドメインをIPv6アドレスに紐づける 2606:2800:220:1::
CNAME ある名前を別の名前のエイリアスにする(ゾーンの頂点では使用不可) cdn.example.com
MX ドメインのメールをルーティングする mail.example.com(優先度10)
TXT 自由形式のテキストで、SPFや検証トークンを保持する v=spf1 include:_spf.google.com ~all
NS ドメインの権威ネームサーバー ns1.cloudflare.com
SOA ゾーンのstart-of-authorityメタデータ primary NS, serial, refresh, retry, expire
CAA 証明書を発行できる認証局 letsencrypt.org

1つのドメイン名についてこれらすべてを取得すれば、そのホスティング方法、メールの運用者、そして設定されているセキュリティがわかります。すべてのドメイン名について一度に取得すれば、インターネット全体のインフラの地図を手にすることになります。価値があるのはこの後者のデータセットであり、それを無料で配ってくれる人は誰もいません。

主役となるレコード

これらのうち、ごく一部のタイプが情報の大半を担っています。Aレコードは多くの人がまず思い浮かべるもので、ドメイン名をIPv4アドレスに対応させ、ブラウザがどのサーバーに接続すべきかを示します。MXレコードはメールについて同じ役割を果たし、メッセージを受け取るサーバーを指定し、優先度によって順位づけします。TXTレコードは、メールセキュリティを支える縁の下の力持ちです。ドメイン自体には、誰が自分の名前でメールを送信できるかを示すSPFレコードが記載されます。対応するDKIM署名鍵とDMARCポリシーは専用のサブネーム(_domainkey_dmarc)に置かれており、この3つを合わせて見ることで、あるアドレスがどの程度保護されているかがわかります。というのも、何かを強制するのはレコードが存在すること自体ではなく、DMARCポリシーだからです。NSレコードはゾーンに応答する権威サーバーを指定するもので、実際に誰がその名前の名前解決を運用しているかを示します。

なぜ自分ですべてのDNSレコードを取得できないのか

理論上は、digをループさせればすべてのドメイン名を解決できます。しかし実際には、その計画はすぐに破綻します。ドメインの数は数億件におよび、すべてのタイプを取得するには1件につき複数回のクエリが必要になるため、合計では数十億回のルックアップが必要になります。パブリックリゾルバーはレート制限をかけ、完了するはるか前にブロックしてきます。権威サーバーもスロットリングを行います。タイムアウト、リトライ、一時的な失敗により、1回のパスが完全になることは決してなく、しかもクロールを実行している間にもデータは変化し続けるため、結果が届く頃にはすでに古くなっています。

さらに、解析という問題もあります。生のレスポンスはワイヤーフォーマットのパケットであり、整った形式のエクスポートではありません。それらを数十億件分、実際にクエリできるクリーンで型付けされたエントリに変換するのは、クロールとは別に、それ自体が1つのエンジニアリングプロジェクトになります。多くのチームはこれに着手し、四半期を丸ごと費やした末に、静かに諦めます。

しかも、この失敗はランダムに起こるものではありません。大手プロバイダーは意図的にバルク解決をスロットリングしているため、クロールを徹底すればするほど、早く遮断されます。GeoDNSを使う権威サーバーは地域ごとに異なる回答を返すため、観測地点が1つだけだと、特定の地域にしか現れないレコードを気づかないまま見逃してしまいます。これらすべてを回避する仕組みを作り終える頃には、出力するものといえば誰かがすでに完成品として販売しているデータだけという、小さな分散システムを構築してしまっていることになります。

それこそ、webatlaがすでに解決している問題です。私たちはローリングスケジュールでネームスペース全体を解決し、すべての回答を構造化されたJSONに解析し、完成したデータセットをお渡しします。クロールも、ブロックも、解析も飛ばして、データそのものに直接アクセスできます。

webatlaがすべてのレコードを収集する方法

自前のクロールとの違いは、分散と忍耐です。webatlaはローリングスケジュールで多数の観測地点からネームスペースを解決するため、特定のリゾルバーだけが叩かれ続けることはなく、すべての回答はエクスポートに含まれる前に検証され、型付けされたエントリへと解析されます。あるパスで失敗したドメイン名は次のパスで再試行されるため、カバレッジは劣化するどころか、時間とともに向上していきます。その結果得られるのは、あなたが最初から本当に欲しかったものです。デバッグが必要なパケットの山ではなく、すべてのドメイン名についてのクリーンで型付けされたエントリです。

すべてのDNSレコードを1つのファイルに

webatla DNSデータセットは、すべてのDNSレコードを一度に取得するための答えです。私たちが追跡しているすべてのドメインについて、A、AAAA、CNAME、MX、TXT、NS、SOA、CAA、そしてDNSSECのエントリを収集・解析し、1つのクリーンなデータセットにまとめています。すべてのTLDを網羅しており、ローリング方式で再構築され、届いた瞬間からクエリできるJSONL形式で提供されます。

リゾルバーファームを運用する必要も、パケットを解析する必要も、ドメインごとのレート制限と戦う必要もありません。一度購入すれば、単一のアカウントからインターネット上のすべてのレコードを取得でき、数か月ではなく数分で分析に取りかかれます。

各行の中身

各行は1つのドメイン名と、その全体像を表しています。値そのものに加えて、各行にはデータが最後にチェックされた日時と、ルックアップが成功したかどうかが記録されているため、それぞれの回答がどれくらい新しいものかを常に把握できます。

{"domain":"example.com","dnsAt":"2026-06-22","dnsStatus":"TRUE","dnsRecords":{"A":["93.184.216.34"],"MX":[{"host":"mail.example.com","priority":10}],"NS":["a.iana-servers.net","b.iana-servers.net"],"TXT":["v=spf1 -all"],"SOA":{"mname":"ns.icann.org","serial":2026062201,"refresh":7200}}}
フィールド 意味
domain レコードが属するドメイン
dnsRecords 名前をキーとするすべてのタイプ(AMXTXTなど)
dnsAt このドメインのDNSが最後にチェックされた日付
dnsStatus ルックアップが成功したかどうか

各ドメインの背後にある登録情報も必要ですか。RDAP and WHOISデータセットを組み合わせてください。DNS、登録情報、テクノロジーを1か所にまとめたいですか。all-dataバンドルがそれらを結合してお届けします。

ファイルの使い方

JSONL形式で1行に1ドメインずつ格納されているため、データはメモリに読み込むことなくjq、DuckDB、pandas、Sparkへとストリーミングできます。いくつか例を挙げます。

すべてのドメイン名とそのメールサーバーを取得する。

jq -c '{domain, mx: .dnsRecords.MX}' dns.jsonl

ネームサーバーがCloudflare上で稼働しているすべてのドメイン名を見つける。

jq -c 'select(.dnsRecords.NS[]? | test("cloudflare"))' dns.jsonl > cloudflare-dns.jsonl

SPFレコードを公開しているドメイン名を、データに対して直接カウントする。

grep -c '"v=spf1' dns.jsonl

この最後の1行だけで、インターネット全体を対象にしたメールセキュリティの問いに、数秒で答えが出ます。私たちは同じデータを使ってネームサーバーとレジストラの集中度をマッピングしましたが、その手法もまったく同じです。1つのファイル、1回のパス、そして本物の答えです。

完全なDNSデータセットが可能にすること

すべてのエントリが1つのクエリ可能なデータセットに収まると、コストのかかる多くの問題が1行のフィルターへと縮小します。価値があるのは、誰でも手作業でできる個々のルックアップではありません。それらすべてを一度に保持していることに価値があり、かつては100万件のドメイン名をクロールすることを意味していた問いが、すでに手元にあるデータセットをスキャンするだけで済むようになります。

パターンはいつも同じです。難しいのは分析ではありませんでした。難しかったのは、そもそも完全で最新の構造化データを手に入れることであり、しかもチームが四半期にわたってクローラーの面倒を見続けることなくそれを実現することでした。そのボトルネックを取り除けば、かつてはプロジェクトと予算が必要だった問いに、午後のうちに答えられるようになります。あなたが対価を払っているのは巧妙なクエリそのものではありません。その巧妙なクエリを些細なものにしてしまう、クリーンで完成された入力データに対してです。

  • 大規模なメールセキュリティ。 すべてのドメイン名についてSPFレコードとメール設定を確認し、なりすまし可能な受信箱を見つけたり、顧客基盤を監査したり、メールプロバイダー別に市場規模を測定したりできます。
  • 攻撃対象領域のマッピング。 A、AAAA、CNAMEレコードをたどり、ドメインとそのサブドメインが実際にどこに解決されているか、どのホストが共有されクラスターを形成しているかを把握できます。それらのAレコードをIPごとにグループ化すれば、このエクスポートはホスティングドメインデータベースになります。
  • プロバイダーインテリジェンス。 NSまたはMXでドメインをグループ化すれば、インターネットのDNSとメールを誰が運用しているかを測定でき、移行が起きた際にはそれを追跡できます。
  • DNSSEC導入状況。 DS、DNSKEY、RRSIGレコードをカウントすれば、どのゾーンが署名済みで、どのゾーンがそうでないかがわかります。
  • 証明書の衛生管理。 CAAレコードは、あるドメイン名がどの認証局に証明書の発行を信頼しているかを示すため、ポートフォリオ全体にわたる設定ミスを1回のパスで洗い出せます。
  • 移行の追跡。 企業がメールやホスティングを移行すると、まずMXとNSのエントリが変化します。そのため、この2つのレコードタイプを継続的に監視すれば、公式発表より先に移行の動きを察知できます。

これらはすべて、同じ出発点を必要とします。手作業で解決したサンプルではなく、ドメインネームスペース全体についての、完全で最新の1つのDNSレコード群です。

常に最新、一度きりのダンプではない

DNSは静的なものではありません。サイトがホストを変更すればAレコードは変わり、メール移行の際にはMXレコードが変わり、誰かがセキュリティポリシーを更新するたびにTXTレコードが変化します。半年前に解決したファイルは、もはや博物館の展示品です。

webatla DNSデータセットはローリングスケジュールで再構築されており、すべてのドメイン名が独自のdnsAtタイムスタンプを持っているため、各エントリがどれだけ新しいかを常に確認できます。業務に必要な頻度で再取得すれば、それぞれのファイルはその時点でのDNSを反映したものになります。

よくある質問

どのDNSレコードタイプが含まれていますか。 A、AAAA、CNAME、MX、TXT、NS、SOA、CAAなど、すべてのドメインが利用する一般的なタイプに加え、存在する場合はDS、DNSKEY、RRSIGといったDNSSECレコードも含まれます。すべて型付けされたJSONに解析されているため、生のパケットに触れることはありません。

カバーしているドメインの数はどれくらいですか。 webatlaが追跡しているすべてのTLDにまたがるドメインのDNSレコードを、数億件分、1つのファイルに収めています。

MXレコードだけ、あるいはTXTレコードだけを取得することはできますか。 はい、できます。ファイルにはドメインごとにすべてのレコードタイプが格納されているため、jqやSQLのフィルターを1つかけるだけで、MXレコードだけ、SPF文字列だけなど、必要な部分だけを取り出せます。これは別購入ではなく、単なるフィルターです。

どのような形式ですか。 1行に1ドメインのクリーンなJSONL形式で、DNSレコードは構造化されたJSONとして格納されています。jq、DuckDB、pandas、BigQueryにそのまま読み込めます。

データはどれくらい新しいですか。 ローリングスケジュールで再構築されており、各ドメインにはdnsAtの日付が記録されているため、レコードがどれくらい新しいかを確認できます。古びた一度きりのダンプになることはありません。

レコードをIPの所有者や所在地と突き合わせることはできますか。 AレコードとAAAAレコードからIPアドレスが得られるため、それをIPインテリジェンスソースと結合することで、ASNは確実に、地理情報はおおよそ特定できます。

レコードはサブドメインもカバーしていますか。 このデータセットは登録ドメイン名をキーとしており、その名前で公開されているエントリを収集しています。

費用はいくらですか。 1つのアカウントで1か月間アクセスできる、単一の定額料金です。最新の金額は料金ページをご確認ください。

すべてのDNSレコードをダウンロードする

完了する前にブロックされてしまうリゾルバーファームの構築は、もうやめましょう。webatla DNSデータセットをダウンロード →すれば、AからDNSSECまで、すべてのドメインのあらゆるDNSレコードを、今日からクエリできるクリーンなJSONLとして手に入れられます。登録情報やテクノロジーデータも一緒に欲しいですか。all-dataバンドルなら、DNSをはじめとするすべてを1か所にまとめて提供します。「すべてのDNSレコードが必要だ」という状態から、実際にそれを手にするまでの、最速の道筋です。

この記事の裏にあるデータを入手

この記事の執筆に使用したものと同じJSONLで、今後は毎日新しいエクスポートが提供されます。対応するデータセットのいずれかをご購入ください。

M
Marina
データライター · webatla

webatlaのデータセットの裏側にあるデータジャーナリズム、ドメインの動向、技術の普及状況、そしてインデックスの構築方法について執筆しています。

続きを読む