Как найти все имена хостов в DNS, привязанные к одному IP?


24

Если я несколько хостов , настроенные на одном компьютере ( а - ля апач VirtualHosts), как я могу сделать поиск по IP и найти все домены , настроенные достичь?

Например, у меня есть несколько веб-адресов и доменов электронной почты, подключенных к моему серверу. Как я могу найти все домены, которые указывают на это?

Это вообще возможно?

У меня есть записи DNS A для всех моих доменов, плюс я знаю, что домены некоторых друзей указывают на мой сервер. Что я хотел бы увидеть, так это то, что люди, о которых я не знаю, тоже указывают на это. (Или, если кто-то переназначил свой домен в другом месте, и я могу удалить его «старый» сайт со своего сервера.)

Ответы:


30

Не на самом деле нет. Это все о разнице между прямым и обратным поиском DNS.

Прямой поиск - это стандартное имя-> IP-поиск. Таким образом, вы должны знать все имена заранее.

Вам нужно выполнить поиск по IP-> имени, но каким-то образом получить все имена, которые вы применили в вашей конфигурации Apache и в DNS, в виде записей A (или CNAMES или чего-либо еще).

Вероятно, вы обнаружите, что обратный поиск (например, dig @nameserver $ ip -x) вернет имя хоста, присвоенное этому IP людьми, которые владеют этим сетевым блоком, которым может быть ваш провайдер. У него может быть имя, например, 45-23-45-231.big-isp.com, которое мало что значит для вас. И что особенно важно, есть только одна обратная запись, но потенциально много форвардных.

Я предполагаю, что это сводится к вопросу - как обратная зона узнает о какой-либо записи в прямой зоне? В большинстве установок передняя зона предоставляется клиенту для внесения изменений, но обратная зона поддерживается владельцами сетевого блока. Эти две системы не должны знать что-либо друг о друге, чтобы функционировать.


2
Звучит прямо на меня.
einstiien

позор - это было бы очень удобно, тоже
Уоррен

12

Это невозможно сделать с помощью самого протокола DNS, поскольку обычно PTRдля каждого IP-адреса существует только одна запись, хотя может быть много Aзаписей, указывающих на этот IP-адрес.

Однако некоторым компаниям (например, http://www.ip-adress.com/ ) удалось скомпилировать базы данных, содержащие информацию о том, что вам нужно, сохранив результаты всей загрузки DNS-запросов, а затем предложив обратный запрос в свои собственные. базы данных.

Однако эти базы данных не могут быть окончательными, они не могут гарантировать, что знают о каждом возможном домене, который может указывать на этот IP-адрес, - они могут записывать только данные DNS для доменных имен, которые они действительно искали.


это то, чего я боялся .. штопать: - |
Уоррен

1
Просто напомнить, что мне еще не приходилось сталкиваться с такой поисковой службой, которая обрабатывает все TLD. Фактически все те, которые я пробовал, не смогли перечислить домены .com.au, даже если они размещены на том же сервере, что и домены .com.
Джон Гарденье

1
странно - нет причины, по которой такая служба должна заботиться о том, какой домен верхнего уровня находится на сайте. Тем не менее, как я уже говорил, базы данных знают только о сайтах, о которых спрашивают люди - я думаю, мало людей заботятся о доменах .com.au ;-)
Alnitak

4

Единственный способ сделать это, это иметь данные содержимого доменного имени, которое вы хотите проверить.

С этим содержимым вы можете разработать рекурсивный скрипт для поиска имени хоста относительно вашего IP (рекурсивный из-за возможной проверки CNAME).

Чтобы получить данные какого-либо партнера по доменному имени, вы можете попросить быть второстепенным и получить DATA с помощью dig -t axfr.


3

Я думаю, что вы пришли к этому с неправильной стороны. Помимо а) запроса каждого существующего DNS-сервера для каждого возможного доменного имени с последующим сохранением результата или б) получения зонных передач от DNS-серверов, которые вас интересуют, это невозможно сделать с помощью DNS.

Что ж, если вы используете vhosts на основе имен Apache, у вас уже есть список доменов, которые попадут на ваш сервер. Помимо vhost по умолчанию, vhost на основе имени будет отвечать только за свое имя. Поэтому, если я укажу foobar.com на свой ящик и у меня не будет хоста foobar.com, он будет обслуживаться по умолчанию или не получит ответа (если у вас нет сервера по умолчанию).

Apache имеет несколько очень мощных функций ведения журналов. Это не должно быть проблемой, чтобы определить пользовательский формат журнала со строками запроса, которые вы хотите. Также всегда есть поле реферера.

Почта, с другой стороны, немного больше боли. Самое лучшее, что я могу придумать, - это выбрать то, что вы можете из журналов сервера, и, если вам действительно нужно это знать , настроить захват пакетов для SMTP.


с apache vhosts я знаю только, какие пути я раздаю в определенные домены ... не все настроенные домены: если вы укажете mynewdomain.tld на мой сервер, так как нет записи vhost, apache просто вернет По умолчанию webroot
Уоррен

1
хотя просмотр журналов может сработать - не думал об этом как о способе сделать это на самом сервере.
Уоррен

LogFormat %{Host}i hostnamelogзатем CustomLog /path/to/log hostnamelogв вашем VHost по умолчанию, убедившись, что он отделен от любого из ваших «настоящих» VHost. Тогда иногда sort /path/to/log | uniq -c | sort -nдля понимания того, что поражает вас.
BMDan

2

Вы должны проверить на RobTex Не лучший веб-дизайн, но очень полезный! Вы можете узнать все DNS, связанные с IP.

Конечно, как объяснил Альнитак,

Это невозможно сделать с помощью самого протокола DNS.

Это означает, что этот веб-сайт представляет собой огромную базу данных большинства серверов DNS / IP. Это довольно эффективно, но не на 100%.


Ссылка, похоже, неработающая или имеет очень плохой SSL
Адам Нофсингер,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.