Назад | Перейти на главную страницу

как domaintools.com выполняет обратный поиск IP?

Я пытаюсь улучшить свое понимание системы DNS и не понимаю, как domaintools.com удается разрешить все DN, связанные с IP-адресом.

Поигравшись с копанием, я застрял.

Пример в домене dressupgames.com

используя dig ::

$ dig +short dressupgames.com                                                                                      
173.231.156.28

$ dig +short -x 173.231.156.28                                                                                     
28.24/29.156.231.173.in-addr.arpa.

$ dig +short 28.24/29.156.231.173.in-addr.arpa
67.215.65.132

$ dig +short -x 67.215.65.132                                                                                      
hit-nxdomain.opendns.com.

$ dig +short hit-nxdomain.opendns.com
67.215.65.132

Предположительно 173.231.156.28 - это псевдоним для 67.215.65.132 (?). Теперь с помощью веб-интерфейса DomainTools http://www.domaintools.com/research/reverse-ip/ я получаю обещание 129 результатов.

Как я могу найти эти результаты с помощью инструментов командной строки?

DNS не содержит механизма автоматического поиска IP-адреса для имени хоста. У него есть записи PTR, но они настраиваются вручную и в большинстве случаев не соответствуют записям A. Такие сайты, как domaintools.com, просто имеют большую базу данных всех обнаруженных ими прямых сопоставлений, и они запрашивают ее при поиске IP-адреса. Не гарантируется, что результаты будут полными или актуальными.

Я создатель host.io, который также показывает вам список всех доменов, размещенных на одном IP-адресе (вместе со списком доменов, которые ссылаются на домен, и т. д.). Например, вот список доменов, размещенных на том же IP-адресе, что и stackoverflow.com: https://host.io/stackoverflow.com

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

Для начала нужно получить (или создать) список всех доступных доменных имен. Сейчас их около 250 миллионов. Следующим шагом будет преобразование всех этих доменов в IP-адрес. Затем вам нужно сохранить все эти пары домена и IP в базе данных, а затем вы можете запросить список всех доменов на одном IP. И затем вам нужно делать это регулярно, чтобы быть в курсе последних событий.

Чтобы дать полный пример, давайте создадим файл с 4 доменами и разрешим их по IP-адресам:

$ cat domains.txt
facebook.com
fb.com
stackoverflow.com
stackexchange.com

# Let's resolve the domains to IPs with dig - could use nslookup or similar
$ cat domains.txt | xargs -I% bash -c "dig +short % | tail -n1" > ips.txt
31.13.76.68
31.13.76.68
151.101.129.69
151.101.193.69

# Let's combine the domains and IPs using paste
$ paste domains.txt ips.txt > combined.tsv
$ cat combined.tsv
facebook.com    31.13.76.68
fb.com  31.13.76.68
stackoverflow.com   151.101.129.69
stackexchange.com   151.101.129.69

# Let's create a DB table and import the data, and write a query 
# to find any domains in our dataset that are hosted on the same 
# domain as stackoverflow.com

$ psql $DB_URL

=> create table details (domain text, ip text);
=> \copy details from ~/combined.tsv;

=> select domain from details where ip = (select ip from details where domain = 'stackoverflow.com');
      domain
-------------------
 stackoverflow.com
 stackexchange.com
(2 rows)