Если у меня настроено несколько хостов на одном компьютере (а-ля VirtualHosts от apache), как я могу выполнить поиск по IP-адресу и найти все домены, настроенные для его доступа?
Например, у меня есть несколько доменов Интернета и электронной почты, подключенных к моему серверу. Как мне найти все домены, которые на него указывают?
Это вообще возможно?
У меня есть записи DNS A для всех моих доменов, плюс я знаю, что домены некоторых друзей указывают на мой сервер. Я бы хотел увидеть, если ребята, я не знать, тоже указывают туда. (Или если кто-то перенаправил свой домен в другом месте, и я могу удалить их «старый» сайт со своего сервера.)
Не на самом деле нет. Это все о разнице между прямым и обратным поиском DNS.
Прямой поиск - это стандартный поиск по имени-> IP. Значит, вам нужно будет знать все имена заранее.
Вы хотите выполнить поиск IP-> имени, но каким-то образом получить все имена, которые вы применили в конфигурации Apache и в DNS, как записи A (или CNAMES или что-то еще).
Что вы, вероятно, обнаружите, так это то, что выполнение обратного поиска (например, dig @nameserver $ ip -x) вернет имя хоста, присвоенное этому IP-адресу людьми, владеющими этим сетевым блоком, которые могут быть вашим интернет-провайдером. У него может быть имя вроде 45-23-45-231.big-isp.com, что не имеет большого значения для вас. И что очень важно, есть только одна обратная запись, но потенциально много прямых.
Полагаю, все сводится к вопросу - откуда обратная зона знает о каких-либо записях в прямой зоне? В большинстве установок прямая зона предоставляется клиенту для внесения изменений, но обратная зона поддерживается владельцами сетевого блока. Для работы двум системам не нужно ничего знать друг о друге.
Это невозможно сделать с помощью самого протокола DNS, потому что обычно есть только один PTR
запись для каждого IP-адреса, даже если их может быть много A
записи, указывающие на этот IP-адрес.
Однако некоторые компании (например, http://www.ip-adress.com/) сумели скомпилировать базы данных, содержащие то, что вам нужно, сохранив результаты всей загрузки DNS-запросов, а затем предложив обратный запрос в свои собственные базы данных.
Однако эти базы данных не могут быть окончательными, они не могут гарантировать, что будут знать все возможные домены, которые мощь указывают на этот IP-адрес - они могут записывать данные DNS только для доменных имен, которые они фактически искали.
Единственный способ сделать это - иметь данные содержимого доменного имени, которое вы хотите проверить.
С этим контентом вы можете разработать рекурсивный сценарий для поиска имени хоста относительно вашего IP (рекурсивный из-за возможной проверки CNAME).
Чтобы получить данные о каком-либо партнере по доменному имени, вы можете попросить быть вторичным и получить ДАННЫЕ с помощью dig -t axfr.
Я думаю, вы идете не в том направлении. Помимо а) опроса каждого существующего DNS-сервера для каждого возможного доменного имени и последующего сохранения результата или б) получения зональных передач от интересующих вас DNS-серверов, с DNS нет никакого способа сделать это.
Что ж, если вы используете vhosts на основе имен Apache, у вас уже есть список доменов, которые будут подключаться к вашему серверу. Помимо виртуального хоста по умолчанию, виртуальный хост на основе имени будет отвечать только за свое имя. Поэтому, если я укажу foobar.com на свой ящик и у меня нет vhost foobar.com, он либо будет обслуживаться по умолчанию, либо не получу ответа (если у вас нет сервера по умолчанию).
Apache имеет несколько очень мощных функций ведения журнала. Определить настраиваемый формат журнала с нужными строками запроса - не проблема. Кроме того, всегда есть поле реферера.
С другой стороны, почта доставляет больше неудобств. Лучшее, что я могу придумать, - это выбрать из журналов сервера то, что можно, и, если вы действительно надо знать, настройте захват пакетов для SMTP.
Вы должны проверить РобТекс Не лучший веб-дизайн, но очень полезный! Вы можете узнать все DNS, связанные с IP.
Конечно, как пояснил Альнитак,
Сделать это с помощью самого протокола DNS невозможно.
Это означает, что этот веб-сайт представляет собой просто огромную базу данных большинства DNS / IP-серверов. Это довольно эффективно, но не на 100% исчерпывающе.