Чи є спосіб запитувати наші внутрішні записи DNS, щоб виявити всі записи CNAME, які вказують на певний сервер?
Редагувати: Ми - середовище Windows, Server 2003.
Чи є спосіб запитувати наші внутрішні записи DNS, щоб виявити всі записи CNAME, які вказують на певний сервер?
Редагувати: Ми - середовище Windows, Server 2003.
Відповіді:
Ви не вказували, що таке ваше середовище, але якщо ви використовуєте 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."."));
}
Кілька балів за повноту:
Якщо у вас є доступ до вашої конфігурації DNS, виявити ці дані досить тривіально. Однак будь-хто може мати CNAME, що вказує на ваш сервер. Ви не зможете їх простежити.
Як @wombie вказав, ви не можете робити зворотний пошук для CNAMES. Немає еквіваленту PTR для CNAMES, і навіть якщо там, ймовірно, існують лише деякі записи. Швидка перевірка випадкового вибору доменів показала б, що записи PTR часто не вказують на запис A. Крім того, роблячи зворотний пошук записів PTR для випадкових адрес, часто не знаходить відповідного запису A.
EDIT: CNAME - не єдиний спосіб псевдоніму системи. DNS дозволяє декільком записам A вказувати одну і ту ж адресу. Функціонально це те саме, що додавати CNAME, але метод інший. Такі ж проблеми стосуються і вашого домену. Для пошуку різних записів A ви б шукали IP-адреси відповідної системи.
використовувати повноваження:
перевірте наявність основного імені на сервері 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 | виберіть ім'я власника, прізвище
dnscmd
експорту даних про зону використовуйте для кожної зони :dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
CNAME
записи ресурсів, які вказують на цільове доменне ім’я.