Определите, является ли DNS-сервер главным или подчиненным с DiG
Есть ли способ использовать DiG или nslookup, чтобы определить, установлен ли сервер на Master или Slave? А если сервер является подчиненным, вернуть IP-адрес Мастера?
4 ответа
Насколько я знаю, ответ - нет, конечно, нет стандартного пути, поскольку существует миллиард различных вариантов DNS-серверов. Одним из вариантов может быть запись masterdns.mydomain.com, гарантированно содержащая IP-адрес мастера (даже не раскрывайте его, не нужно) - тогда все, что вам нужно сделать, это сравнить IP-адрес DNS-сервер на IP, он дает вам для мастера, и все готово. Это также несовершенно из-за псевдонимов / множественного возвращения / чего бы то ни было (вы не можете гарантировать, что это другой сервер), но..
... вы, похоже, намекаете, что настраиваете все это самостоятельно, и в этом случае у вас должна быть просто запись masterdns.mydomain.com.
Нет, нет пути. Протокол DNS не предоставляет ничего, чтобы узнать отношения хозяин / ведомый извне.
Кроме того, это различие часто исчезает сегодня. Многие домены имеют только мастеров, синхронизированных по общей базе данных.
Вы можете использовать эвристику (см. Предложения Maas или использовать увеличение серийных номеров, главным сервером имен будет главный сервер имен), но они явно не надежны.
Во-первых, технически DNS-сервер не обязательно является главным или подчиненным. Это может отличаться в зависимости от домена. Это может быть ведущим для некоторых доменов и ведомым для других.
Если DNS-зона доменного имени настроена правильно - вы можете запросить SOA-запись зоны, которая (помимо прочего) содержит имя хоста основного DNS-сервера (главного).
Например:
C:\>nslookup
Default Server: UnKnown
Address: 192.168.1.1
> set type=SOA
> google.com.
Server: UnKnown
Address: 192.168.1.1
Non-authoritative answer:
google.com
primary name server = ns1.google.com
responsible mail addr = dns-admin.google.com
serial = 1396486
refresh = 7200 (2 hours)
retry = 1800 (30 mins)
expire = 1209600 (14 days)
default TTL = 300 (5 mins)
Теперь вы можете выполнить другой поиск по имени основного сервера (из SOA-записи - в данном случае "ns1.google.com"), чтобы получить IP-адрес мастера:
C:\nslookup ns1.google.com.
Server: UnKnown
Address: 192.168.1.1
Non-authoritative answer:
Name: ns1.google.com
Address: 216.239.32.10
Ответ в этом случае 216.239.32.10
Командаdig -t SOA your-url
вернет авторский сервер в разделе ОТВЕТ, а затем, если хотите, вы можетеdig authoritative-server-url
иметь ИП. Или вы можете использоватьhost -t SOA your-url
иhost authoritative-server-url
для более краткого ответа.