Назад | Перейти на главную страницу

Установка разных NS-записей как авторитетных в авторитетном DNS

У меня есть 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?

Здесь действительно задаются два вопроса, и они прямо противоречат друг другу:

  1. как мне дать указание DNS-серверам продолжить свои запросы к Amazon в качестве уполномоченного для домена, не изменяя записи DNS в регистраторе?
  2. как мне указать 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 вещи:

  1. не используй host только для устранения неполадок dig (но @something и + trace противоречат друг другу)
  2. как сказал @Ward, укажите истинное доменное имя, о котором вы спрашиваете, если вы хотите, чтобы вам помогли