Jak znaleźć wszystkie nazwy hostów w DNS dołączone do jednego adresu IP?

24

Jeśli mam wiele hostów skonfigurowanych na jednym komputerze ( VirtualHosts a la apache), jak mogę sprawdzić adres IP i znaleźć wszystkie domeny skonfigurowane, aby do niego dotrzeć?

Na przykład mam kilka domen internetowych i e-mailowych podłączonych do mojego serwera. Jak mogę znaleźć wszystkie domeny, które na to wskazują?

Czy to w ogóle możliwe?

Mam wpisy DNS A dla wszystkich domen, które posiadam, a ponadto wiem, że niektóre domeny znajomych wskazują mój serwer. Chciałbym zobaczyć, czy ludzie, o których nie wiem, też tam wskazują. (Lub jeśli ktoś przeniósł swoją domenę w inne miejsce i mogę usunąć „starą” witrynę z mojego serwera).

królikarnia
źródło

Odpowiedzi:

30

Nie, naprawdę nie. Chodzi o różnicę między wyszukiwaniem DNS do przodu i do tyłu.

Wyszukiwanie do przodu jest standardowym wyszukiwaniem nazwy> IP. Musisz więc znać wszystkie nazwiska z góry.

To, czego chcesz, to sprawdzenie nazwy IP->, ale w jakiś sposób uzyskaj wszystkie nazwy, które zastosowałeś w konfiguracji Apache i DNS jako rekordy A (lub CNAMES lub cokolwiek innego).

Prawdopodobnie przekonasz się, że wykonanie wyszukiwania wstecznego (np. Dig @nameserver $ ip -x) zwróci nazwę hosta podaną dla tego adresu IP przez osoby, które są właścicielami tego bloku sieciowego, którym może być twój dostawca usług internetowych. Może mieć nazwę 45-23-45-231.big-isp.com, co niewiele dla ciebie znaczy. I, co najważniejsze, istnieje tylko jeden rekord do tyłu, ale potencjalnie wiele z nich do przodu.

Przypuszczam, że sprowadza się to do pytania - skąd strefa rewersyjna wie o jakimkolwiek rekordzie w strefie forward? W większości konfiguracji strefa do przodu jest udostępniana klientowi w celu wprowadzania zmian, ale strefa do tyłu jest utrzymywana przez właścicieli bloku sieciowego. Oba systemy nie muszą nic o sobie wiedzieć, aby funkcjonować.

Cawflands
źródło
2
Brzmi prosto na mnie.
einstiien
szkoda - byłoby też bardzo przydatne
ostrzega
12

Nie można tego zrobić z samym protokołem DNS, ponieważ zazwyczaj PTRdla każdego adresu IP jest tylko jeden rekord, chociaż może być wiele Arekordów wskazujących na ten adres IP.

Jednak niektórym firmom (np. Http://www.ip-adress.com/ ) udało się skompilować bazy danych zawierające to, czego szukasz, przechowując wyniki całego zestawu zapytań DNS, a następnie oferując własne zapytanie zwrotne bazy danych.

Te bazy danych nie mogą być jednak ostateczne, nie mogą zagwarantować wiedzy o każdej możliwej domenie, która mogłaby wskazywać na ten adres IP - mogą rejestrować tylko szczegóły DNS dla nazw domen, które faktycznie wyszukali.

Alnitak
źródło
właśnie się tego obawiałem ... cholera: - |
warren
1
Tylko heads-up, że jeszcze nie spotkałem się z taką usługą wyszukiwania, która obsługuje wszystkie TLD. W rzeczywistości wszystkie te, których próbowałem, nie wymieniały domen .com.au, nawet gdy są hostowane na tym samym serwerze, co domeny .com.
John Gardeniers,
1
dziwne - nie ma powodu, aby taka usługa miała nawet dbać o to, która TLD jest na stronie. To powiedziawszy, jak wspomniałem, bazy danych wiedzą tylko o witrynach, o które ludzie pytają - chyba nie dbają o domeny .com.au ;-)
Alnitak
4

Jedynym sposobem na to jest posiadanie danych o nazwie domeny, którą chcesz sprawdzić.

Dzięki tej zawartości możesz opracować skrypt rekurencyjny, aby wyszukać nazwę hosta w odniesieniu do twojego adresu IP (rekurencyjny z powodu ewentualnego sprawdzenia CNAME).

Aby uzyskać dane jakiegoś partnera nazwy domeny, możesz poprosić o bycie wtórnym i uzyskać dane za pomocą dig -t axfr.

profy
źródło
3

Myślę, że podchodzisz do tego ze złego kierunku. Oprócz albo: a) odpytywania każdego istniejącego serwera DNS o każdą możliwą nazwę domeny, a następnie zapisywania wyniku lub b) uzyskiwania transferów stref z serwerów DNS, którymi jesteś zainteresowany, nie ma sposobu, aby to zrobić za pomocą DNS.

Cóż, jeśli korzystasz z vhostów opartych na nazwie Apache, masz już listę domen, które dotrą do twojego serwera. Oprócz domyślnego vhosta, vhost oparty na nazwie będzie odpowiadał tylko za swoją nazwę. Więc jeśli wskażę foobar.com na moje urządzenie i nie mam vhosta foobar.com, zostanie on obsługiwany domyślnie lub nie otrzyma odpowiedzi (jeśli nie masz domyślnego serwera).

Apache ma kilka bardzo zaawansowanych funkcji rejestrowania. Nie powinno być problemu ze zdefiniowaniem niestandardowego formatu dziennika z żądanymi liniami żądań. Ponadto zawsze znajduje się pole strony odsyłającej.

Z drugiej strony poczta jest bardziej uciążliwa. Najlepszą rzeczą, jaką mogę wymyślić, jest wybranie, co możesz, z dzienników serwera i, jeśli naprawdę musisz wiedzieć , skonfigurować przechwytywanie pakietów dla SMTP.

Jason Antman
źródło
z vhostami Apache Wiem tylko, jakie ścieżki przekazuję do określonych domen ... nie wszystkie skonfigurowane domeny: jeśli wskażesz mynewdomain.tld na mój serwer, ponieważ nie ma wpisu vhost, Apache zwróci tylko domyślny webroot
warren
1
przeszukiwanie dzienników może jednak działać - nie myślało o tym jako o sposobie robienia tego na samym serwerze.
warren
LogFormat %{Host}i hostnamelog, a następnie CustomLog /path/to/log hostnamelogw domyślnym VHost, upewniając się, że jest on oddzielony od któregokolwiek z „prawdziwych” VHostów. Od czasu sort /path/to/log | uniq -c | sort -ndo czasu, aby uzyskać wgląd w to, co cię uderza.
BMDan
2

Powinieneś sprawdzić, czy RobTex nie jest najlepszym projektem internetowym, ale bardzo przydatnym! Możesz znaleźć wszystkie DNS związane z adresem IP.

Oczywiście, jak wyjaśniono Alnitak,

Nie można tego zrobić z samym protokołem DNS

Oznacza to, że ta strona internetowa to tylko ogromna baza danych większości serwerów DNS / IP. To całkiem wydajne, ale nie w 100% wyczerpujące.

Bonswouar
źródło
Link wydaje się być zepsuty lub ma naprawdę zły protokół SSL
Adam Nofsinger