実験を行いたいのですが、インターネット上のすべての DNS エントリの完全なデータベースが必要です。
インターネットをスキャンしてすべての DNS エントリを取得することは実用的ですか? 制限は何ですか: ストレージ、時間、またはネットワーク帯域幅? 最初に何か良いアプローチはありますか?(私はいつでも IP 空間を力ずくでスキャンして逆引き DNS ルックアップを行うことができますが、それは効率的な方法ではないと思います)
実験を行いたいのですが、インターネット上のすべての DNS エントリの完全なデータベースが必要です。
インターネットをスキャンしてすべての DNS エントリを取得することは実用的ですか? 制限は何ですか: ストレージ、時間、またはネットワーク帯域幅? 最初に何か良いアプローチはありますか?(私はいつでも IP 空間を力ずくでスキャンして逆引き DNS ルックアップを行うことができますが、それは効率的な方法ではないと思います)
RIPE や ARIN などのデータベースをダウンロードしても、必要な逆引き DNS エントリは得られません。実際、これらの範囲を解決する自律システムと DNS サーバーのみが得られます。他には何もありません。これをチェックしてください: ftp://ftp.ripe.net/ripe/dbase/ripe.db.gz
逆引き DNS クエリでは、すべての DNS エントリの一部しか得られません。実際、ほとんどのドメイン名は AXFR 要求を受け入れず、一部の国では違法と見なされる可能性があるため、誰もそれらを持つことはできません. .com/.net/.org ドメイン名の完全なリストにアクセスするには、ICANN または ICANN 再販業者である可能性がありますが、公開されていない他の TLD (いくつかの国) を取得することはできません。
次に、考えられる最善の方法は、すべての逆 IP 解決をブルートフォースし、Google のようなインターネットの巨人になって独自のパブリック DNS を設定し、検出できるすべてのドメイン名で AXFR リクエストを実行することです。
これらすべてのオプションを混在させることが、すべての DNS エントリのかなりの部分を取得する唯一の方法ですが、決して 100% ではなく、おそらく 5 から 10% を超えることはありません。ドメイン名のリストを取得するために whois サーバーを総当たり攻撃することは忘れてください。利用規約で禁止されています。
Google でなくても合法的に解決できる唯一の方法であるため、私たちは現在、ipv4 の逆引き解決を力ずくで行っています。2週間前に始めました。
2 週間の調整の後、インターネットの 20% が完成しました。いくつかの異なるノードから /24 範囲を並行してスキャンする何千ものスレッドを起動する Python スクリプトを開発しました。
nmap -sL よりもはるかに高速ですが、nmap ほど信頼性が高くないため、取得したギャップを埋めるために「2 回目のパス」が必要になります (最初の試行で約 85% の IP が解決されました)。完全で一貫性のあるデータベースを取得するには、定期的な再スキャンを実行する必要があります。
現在、すべてのノードで 2 mbps の DNS クエリで実行されている複数のサーバーがあります (すべてのノードで 300 から 4000 クエリ/秒で、主にサーバーとリモート DNS 間の RTT に依存します)。
約 30 日ですべての IPV4 エントリの最初のパスが完了する予定です。
予備結果を保存するテキスト ファイルには、各「A クラス」範囲 (つまり、111.0.0.0/8) に対して平均 300 万のエントリがあります。これらのファイルは単なる「IP\tname\n」であり、解決された IP のみが保存されます。
プロバイダーの DNS サービスに影響を与え、ブロックされたため、すべてのサーバーで DNS を構成する必要がありました。実際、さまざまな DNS サーバーで少しベンチマークを実施しました。バインドは忘れてください。重すぎて、1 秒あたり 300 を超える解像度はほとんど得られません。
スキャンが完了したら、記事を公開してデータベースを共有します :)
Twitterでフォローしてください:@kaperuzito
私たちがすでに得た結論の 1 つは、人々は DNS PTR エントリに入れる名前について二度考えてしまう可能性があるということです。IP に「payroll」、「ldap」、「intranet」、「test」、「sql」、「VPN」などの名前を付けることはできません...何百万もの IP があります :(