У меня есть DNS-серверы для домена, настроенного на один набор авторитетных DNS-серверов на регистраторе. Однако этот файл зоны DNS-серверов для домена имеет другой набор NS-записей. Некоторые DNS-серверы успешно передают запрос на NS-серверы, указанные в файле зоны; однако некоторые другие (например, общедоступные DNS-серверы Google, уровня 3 и OpenDNS) не разрешают записи должным образом. Они возвращают правильные NS-записи, но запросы на A-записи на суб-делегированном DNS-сервере не возвращаются. Ниже я привел множество выводов; но суть в том, что запросы не относятся к записям NS, которые я установил на QUICKROUTEDNS.COM для домена, которые являются записями NS, указывающими на облачный DNS Amazon. Вместо этого запросы останавливаются на QUICKROUTEDNS.COM. Итак, как мне дать указание DNS-серверам продолжить свои запросы к Amazon в качестве уполномоченного для домена, не изменяя записи DNS в регистраторе?
Вот пример:
DNS-записи домена у регистратора:
Name Server: NS1.QUICKROUTEDNS.COM
Name Server: NS2.QUICKROUTEDNS.COM
Name Server: NS3.QUICKROUTEDNS.COM
Получение записей NS для домена (авторитетный DNS, QUICKROUTEDNS.COM, установил эти серверы как запись NS):
$ host -t NS domain.com
domain.com name server ns-1622.awsdns-10.co.uk.
domain.com name server ns-1387.awsdns-45.org.
domain.com name server ns-774.awsdns-32.net.
domain.com name server ns-48.awsdns-06.com.
Запись A с серверов Amazon DNS, на которых размещен домен:
$ host www.domain.com ns-1387.awsdns-45.org
Using domain server:
Name: ns-1387.awsdns-45.org.
Address: 205.251.197.107#53
Aliases:
www.domain.com has address 201.201.201.201
Тем не менее, когда я запрашиваю его с любого сервера имен:
$ host www.domain.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:
Host www.domain.com not found: 3(NXDOMAIN)
Это согласуется практически с каждым DNS-сервером, хотя есть несколько серверов, которые сообщают A-запись, как ожидалось.
Вот вывод dig + trace при попытке извлечь запись A:
$ dig @8.8.8.8 www.domain.com A +trace
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 www.domain.com A +trace
; (1 server found)
;; global options: +cmd
. 1341 IN NS m.root-servers.net.
. 1341 IN NS j.root-servers.net.
. 1341 IN NS a.root-servers.net.
. 1341 IN NS d.root-servers.net.
. 1341 IN NS f.root-servers.net.
. 1341 IN NS c.root-servers.net.
. 1341 IN NS b.root-servers.net.
. 1341 IN NS e.root-servers.net.
. 1341 IN NS i.root-servers.net.
. 1341 IN NS h.root-servers.net.
. 1341 IN NS g.root-servers.net.
. 1341 IN NS l.root-servers.net.
. 1341 IN NS k.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 58 ms
net. 172800 IN NS a.gtld-servers.net.
net. 172800 IN NS e.gtld-servers.net.
net. 172800 IN NS c.gtld-servers.net.
net. 172800 IN NS b.gtld-servers.net.
net. 172800 IN NS g.gtld-servers.net.
net. 172800 IN NS i.gtld-servers.net.
net. 172800 IN NS j.gtld-servers.net.
net. 172800 IN NS k.gtld-servers.net.
net. 172800 IN NS h.gtld-servers.net.
net. 172800 IN NS f.gtld-servers.net.
net. 172800 IN NS d.gtld-servers.net.
net. 172800 IN NS m.gtld-servers.net.
net. 172800 IN NS l.gtld-servers.net.
;; Received 503 bytes from 192.36.148.17#53(192.36.148.17) in 586 ms
domain.com. 172800 IN NS ns1.quickroutedns.com.
domain.com. 172800 IN NS ns2.quickroutedns.com.
domain.com. 172800 IN NS ns3.quickroutedns.com.
;; Received 153 bytes from 192.55.83.30#53(192.55.83.30) in 790 ms
domain.com. 3600 IN SOA cns1.atlantic.net. noc.atlantic.net. 2016033004 28800 7200 604800 3600
;; Received 88 bytes from 69.16.156.227#53(69.16.156.227) in 712 ms
Как мы видим, он попадает только на серверы имен QUICKROUTEDNS.COM и не будет запрашивать с серверов имен Amazon. Итак, как мне сказать DNS-серверам получать запросы с серверов Amazon и НЕ останавливаться на QuickRouteDNS.COM?
Здесь действительно задаются два вопроса, и они прямо противоречат друг другу:
Каждое делегирование в иерархии DNS должно быть более конкретным, чем предыдущее. Другими словами, вы можете делегировать поддомены, но не можете повторно делегировать точно такое же имя, которое было делегировано вашему серверу. Правильное решение - изменить конфигурацию на уровне регистратора, чего вы пытаетесь избежать.
То, что у вас сейчас есть, - это распространенная неверная конфигурация, известная как несоответствие записей NS, которая создает неверное впечатление, что такая конструкция достижима. Ниже приводится объяснение того, что происходит, но будет сложно проследить его без хорошего понимания концепций DNS. Если я потеряю вас, примите как должное, что исправление данных регистратора - это правильный способ решения вашей проблемы.
Для иллюстрации вот два примера фрагментов зоны:
$ORIGIN example.com
@ 2941 IN SOA ns1.example.com. someone.example.com. (
2015071001 ; serial
7200 ; refresh (2 hours)
900 ; retry (15 minutes)
7200000 ; expire (11 weeks 6 days 8 hours)
3600 ; minimum (1 hour)
)
@ IN NS ns1
@ IN NS ns2
sub IN NS ns1.contoso.com.
sub IN NS ns2.contoso.com.
На серверах имен contoso.com:
$ORIGIN sub.example.com.
@ 2941 IN SOA ns1.sub.example.com. someone.contoso.com. (
2015071001 ; serial
7200 ; refresh (2 hours)
900 ; retry (15 minutes)
7200000 ; expire (11 weeks 6 days 8 hours)
3600 ; minimum (1 hour)
)
@ IN NS bagel.contoso.com.
@ IN NS bacon.contoso.com.
Какие записи NS в двух указанных выше зонах являются авторитетными для sub.example.com
? Если бы вы думали, что это было ns1
и ns2.contoso.com
, вы ошибаетесь. Вопреки распространенному мнению, сервер имен, выполняющий делегирование, не считается авторитетным для NS
записи, используемые для определения этого делегирования. Авторитетное определение: вместо принадлежит зоне на принимающей стороне делегации.
Мы установили, что bacon
и bagel
авторитетны. Что здесь не так очевидно, так это то, что именователи не обязательно поймут это сразу. За делегированием следят добросовестно, и первоначально предполагается, что серверы, получающие делегирование, являются авторитетными. Только когда те NS
обновляются записи о повреждении головного мозга. Обновления могут быть вызваны любым количеством вещей, начиная с TTL делегирования NS
записи, срок действия которых истекает из-за явного запроса стоимости тех NS
записи. Однажды NS
записи перезаписываются, используются новые серверы.
Собирая все вместе, есть начальный период, когда используются серверы имен, определенные вашим регистратором, за которым следует период, когда используется второй набор серверов имен. В течение первого периода любые записи, существующие только на втором наборе серверов, не будут работать. Во время второго периода любые записи, существующие только на первом наборе серверов, не будут работать.
Может показаться, что проблема в конечном итоге решится сама собой (просто подождите, пока все обновится), но этого никогда не произойдет. Люди перезапустят свои серверы имен, очистят кеш или установят новые серверы имен. Ваш домен будет существовать в нестабильном состоянии до тех пор, пока NS
записи становятся согласованными. Гуру DNS могут делать с этим некоторые интересные вещи, но допустимые варианты использования для этого типа конфигурации немногочисленны. Обычному пользователю следует любой ценой избегать противоречивых определений серверов имен.
Сказать: «У меня есть DNS-серверы для домена, настроенные на один набор авторитетных DNS-серверов на регистраторе. Однако в файле зоны DNS-серверов для домена есть другой набор NS-записей для него». означает, что вы создали хромую делегацию. Вы можете остановиться на этом, так как при такой настройке ничего не будет работать правильно, поэтому не делайте этого!
Полезные инструменты для устранения неполадок: http://dnsviz.net/ и https://www.zonemaster.net/
Еще 2 вещи:
host
только для устранения неполадок dig
(но @something и + trace противоречат друг другу)