Запит на DNS для CNAME для сервера


Відповіді:


6

Ви не вказували, що таке ваше середовище, але якщо ви використовуєте Unix, я думаю, що комбінація копати та grep має працювати. ns.example.comмає бути ім'ям хоста вашого сервера імен, example.comдомен, до якого належить хост, і HOST - хост, для якого ви хочете знайти всі записи CNAME. Це насправді символ табуляції в команді grep, а не буквально <TAB>(можливо, вам доведеться відрегулювати рядок grep).

Також ваш сервер імен повинен бути налаштований так, щоб дозволити передачу зон, деталі яких залежать від реалізації.

dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'

Або якщо ви працюєте в Windows, ви можете використовувати nslookup :

C:\> nslookup
> name ns.example.com
> ls -a example.com FILE

Це повинно вивести всі записи для домену, example.comякий ns.example.com"знає про" у FILE. Потім ви можете використовувати будь-який інструмент, який хочете сортувати через текстовий файл, шукаючи відповідні CNAMES.

Або з цим неперевіреним (але, здається, правильним) сценарієм Perl :

#!/usr/bin/perl

use Net::DNS;

($target, $zone) = @ARGV;

$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
     print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}

Кілька балів за повноту:

  • Як зазначає @womble, немає жодного еквівалента запису PTR для CNAME. Вам доведеться скористатися деякою контекстуальною інформацією, сортуючи всю інформацію про зону для CNAMES, що відповідає записам A вашого хоста.
  • Це працює лише для вашого DNS-сервера (і якщо у вас є дозвіл на перегляд інформації про зону). Немає способу "простежити" CNAMES для вашого хоста, який належить до інших зон.
  • Як заявляє @BillThor, існують інші способи псевдоніму імені хоста за межами CNAMES. Знову ж, вам знадобиться деяка контекстуальна обізнаність.

Питання оновлено, ми в Windows.
PhilPursglove

4

Якщо у вас є доступ до вашої конфігурації DNS, виявити ці дані досить тривіально. Однак будь-хто може мати CNAME, що вказує на ваш сервер. Ви не зможете їх простежити.

Як @wombie вказав, ви не можете робити зворотний пошук для CNAMES. Немає еквіваленту PTR для CNAMES, і навіть якщо там, ймовірно, існують лише деякі записи. Швидка перевірка випадкового вибору доменів показала б, що записи PTR часто не вказують на запис A. Крім того, роблячи зворотний пошук записів PTR для випадкових адрес, часто не знаходить відповідного запису A.

EDIT: CNAME - не єдиний спосіб псевдоніму системи. DNS дозволяє декільком записам A вказувати одну і ту ж адресу. Функціонально це те саме, що додавати CNAME, але метод інший. Такі ж проблеми стосуються і вашого домену. Для пошуку різних записів A ви б шукали IP-адреси відповідної системи.


3

Протокол DNS не дозволяє вам робити такий тип "зворотного" пошуку. Вам потрібно буде вийти з протоколу, наприклад, використовувати пропозиції grep, надані kce.


2

використовувати повноваження:

перевірте наявність основного імені на сервері Microsoft DNS:

Get-WmiObject -простір імен 'root \ MicrosoftDNS' -класс MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername

отримати всі імена для цього хоста з вашого сервера Microsoft DNS:

Get-WmiObject -простір імен 'root \ MicrosoftDNS' -класс MicrosoftDNS_CNAMEType -Filter "Primaryname = 'первинне ім'я з першого запиту, закінченого крапкою.'" -ComputerName mydnsservername | виберіть ім'я власника, прізвище


1
  1. Знайдіть усі зони, що обслуговуються вашими машинами.
  2. Для dnscmdекспорту даних про зону використовуйте для кожної зони :
    dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
  3. Шукайте в експортованих файлах CNAMEзаписи ресурсів, які вказують на цільове доменне ім’я.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.