Як знайти всі імена хостів у DNS, приєднаних до одного IP?


24

Якщо у мене на одному пристрої налаштовано декілька хостів ( VirtualHosts a la apache), як я можу здійснити пошук в 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

сором - це теж було б корисно
warren

12

Це неможливо зробити із самим протоколом DNS, тому що зазвичай є лише одна PTRзапис на кожну IP-адресу, хоча може бути багато Aзаписів, що вказують на цю IP-адресу.

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

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


ось чого я боявся .. чорт: - |
warren

1
Просто голова про те, що я ще не стикався з такою послугою пошуку, яка обробляє всі TLD. Насправді всі ті, кого я намагався, не змогли перерахувати домени .com.au, навіть коли вони розміщені на тому ж сервері, що і домени .com.
Джон Гарденєр

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

4

Єдиний спосіб зробити це - мати вміст даних доменного імені, який ви хочете перевірити.

За допомогою цього вмісту ви можете розробити рекурсивний скрипт для пошуку імені хоста щодо вашого IP (рекурсивний через можливий CNAME для перевірки).

Щоб отримати дані про партнера доменного імені, ви можете попросити бути вторинними та отримати DATA за допомогою dig -t axfr.


3

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

Що ж, якщо ви використовуєте vhosts на базі імен Apache, у вас уже є список доменів, які дотягнуться до вашого сервера. Крім vhost за замовчуванням, vhost на основі імені відповідатиме лише за його ім'я. Тож якщо я вказую foobar.com на свій ящик, а у нього немає vhost foobar.com, він або буде наданий за замовчуванням, або не отримає відповідь (якщо у вас немає сервера за замовчуванням).

Apache має деякі дуже потужні функції ведення журналу. Визначити нестандартний формат журналу з потрібними рядками запиту не повинно бути проблемою. Також завжди є поле реферала.

З іншого боку, пошта - це трохи біль. Про найкраще, що я можу придумати, - це вибрати те, що ви можете з журналів сервера, і, якщо вам дійсно потрібно знати , встановити захоплення пакетів для SMTP.


з apache vhosts я знаю лише, якими шляхами я роздаю певні домени ... не всі домени, які налаштовані: якщо ви вкажете mynewdomain.tld на мій сервер, оскільки немає запису vhost, apache просто поверне webroot за замовчуванням
warren

1
опробовування журналів могло б спрацювати - не думав про це як про спосіб зробити це на самому сервері.
warren

LogFormat %{Host}i hostnamelog, то CustomLog /path/to/log hostnamelogу вашому стандартному VHost, переконайтесь, що він відокремлений від будь-якого з ваших "справжніх" VHosts. Тоді час 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.