Есть ли способ запросить наши внутренние записи DNS, чтобы обнаружить все записи CNAME, которые указывают на определенный сервер?
Изменить: Мы среда Windows, Server 2003.
Есть ли способ запросить наши внутренние записи DNS, чтобы обнаружить все записи CNAME, которые указывают на определенный сервер?
Изменить: Мы среда Windows, Server 2003.
Ответы:
Вы не указали свою среду, но если вы используете Unix, я думаю, что комбинация dig и 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. Для CNAMES нет эквивалента PTR, и даже если там, где это возможно, будут существовать только некоторые записи. Быстрая проверка случайного выбора доменов показала бы, что записи PTR часто не указывают на запись A. Аналогично, обратный поиск записей PTR для случайных адресов часто не находит соответствующей записи A.
РЕДАКТИРОВАТЬ: CNAMEs не единственный способ псевдоним системы. DNS позволяет нескольким записям A указывать на один и тот же адрес. Функционально это то же самое, что и добавление CNAME, но метод другой. Те же проблемы применяются за пределами вашего домена. Для поиска различных записей A вы должны искать IP-адрес (а) рассматриваемой системы.
использовать powershell:
проверьте первичное имя на вашем DNS-сервере Microsoft:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Класс MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername
получить все имена для этого хоста с вашего DNS-сервера Microsoft:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Класс MicrosoftDNS_CNAMEType -Filter "primaryname = 'primaryname из первого запроса, заканчивающегося точкой.'" -ComputerName mydnsservername | выберите имя владельца, имя_процента
dnscmd
для экспорта данных зоны:dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
CNAME
записи ресурсов, которые указывают на имя целевого домена.