1台のマシンに複数のホストが設定されている場合(ア・ラApache の VirtualHosts を使用する場合、IP を検索して、その IP に到達するように設定されているすべてのドメインを見つけるにはどうすればよいですか?
たとえば、サーバーに複数の Web ドメインと電子メール ドメインが接続されています。そのサーバーを指すすべてのドメインを見つけるにはどうすればよいでしょうか?
それは可能なのでしょうか?
私は所有するすべてのドメインのDNS Aエントリを持っています。さらに、友人のドメインが私のサーバーを指していることも知っています。私が知りたいのは、しない知っている人もそこを指しています。(または、誰かが自分のドメインを別の場所に再ポイントしている場合は、その「古い」Web サイトを自分のサーバーから削除できます。)
答え1
いいえ、そうではありません。これはすべて、DNS のフォワードルックアップとリバースルックアップの違いに関するものです。
前方参照は、標準的な名前 -> IP 参照です。したがって、すべての名前を事前に知っておく必要があります。
必要なのは、IP->名前の検索を行うことですが、何らかの方法で、Apache 構成と DNS で A レコード (または CNAME など) として適用したすべての名前を取得することです。
おそらく、逆引き検索 (例: dig @nameserver $ip -x) を実行すると、そのネットブロックの所有者 (ISP である可能性があります) によってその IP に割り当てられたホスト名が返されることがわかります。45-23-45-231.big-isp.com のような名前になるかもしれませんが、これはあまり意味がありません。そして重要なのは、逆引きレコードは 1 つしかないのに、順引きレコードは多数存在する可能性があることです。
結局のところ、リバース ゾーンはフォワード ゾーンのレコードをどのようにして知るのか、という疑問に行き着くと思います。ほとんどの設定では、フォワード ゾーンは顧客が変更できるように公開されていますが、リバース ゾーンはネットブロックの所有者によって管理されています。2 つのシステムは、機能するために互いについて何も知る必要はありません。
答え2
DNS プロトコル自体ではこれを行うことはできません。通常、 IP アドレスを指すレコードがPTR
多数ある場合でも、各 IP アドレスには1 つのレコードしかないためです。A
しかし、一部の企業(例:http://www.ip-adress.com/) は、大量の DNS ルックアップの結果を格納し、独自のデータベースへの逆クエリを提供することで、必要な情報を含むデータベースをコンパイルすることに成功しました。
しかし、これらのデータベースは決定的なものではなく、あらゆる可能性のあるドメインについて知っていることを保証するものではありません。かもしれないたまたまその IP を指している場合、実際に検索したドメイン名の DNS の詳細のみを記録できます。
答え3
これを行う唯一の方法は、検査するドメイン名のコンテンツ データを用意することです。
このコンテンツを使用すると、IP に関連するホスト名を検索する再帰スクリプトを開発できます (最終的に CNAME をチェックするため再帰的です)。
ドメイン名パートナーのデータを取得するには、セカンダリーになるように要求し、dig -t axfr を使用してデータを取得します。
答え4
確認すべきことロブテックス 最高の Web デザインではありませんが、非常に便利です。IP に関連付けられているすべての DNS を見つけることができます。
もちろん、アルニタクが説明したように、
DNSプロトコル自体では不可能です
つまり、この Web サイトは、ほとんどの DNS/IP サーバーの巨大なデータベースです。これは非常に効率的ですが、100% 網羅的ではありません。