У меня действительно странная проблема с моим DNS. Мое доменное имя (strugee.net
) невозможно разрешить в одних сетях и разрешить в других.
Например, в моей домашней сети (той же сети, в которой находится сервер):
% dig strugee.net
; <<>> DiG 9.10.3-P4 <<>> strugee.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10086
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;strugee.net. IN A
;; ANSWER SECTION:
strugee.net. 1800 IN A 216.160.72.225
;; Query time: 186 msec
;; SERVER: 205.171.3.65#53(205.171.3.65)
;; WHEN: Sat Apr 16 15:42:36 PDT 2016
;; MSG SIZE rcvd: 56
Однако, если я вхожу на сервер, который у меня есть в Digital Ocean, домен не может разрешить:
% dig strugee.net
; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> strugee.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 58551
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;strugee.net. IN A
;; Query time: 110 msec
;; SERVER: 2001:4860:4860::8844#53(2001:4860:4860::8844)
;; WHEN: Sat Apr 16 18:44:25 EDT 2016
;; MSG SIZE rcvd: 40
Но, переход напрямую к авторитетным серверам имен работает нормально:
% dig @dns1.registrar-servers.com strugee.net
; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> @dns1.registrar-servers.com strugee.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30856
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;strugee.net. IN A
;; ANSWER SECTION:
strugee.net. 1800 IN A 216.160.72.225
;; AUTHORITY SECTION:
strugee.net. 1800 IN NS dns3.registrar-servers.com.
strugee.net. 1800 IN NS dns4.registrar-servers.com.
strugee.net. 1800 IN NS dns2.registrar-servers.com.
strugee.net. 1800 IN NS dns1.registrar-servers.com.
strugee.net. 1800 IN NS dns5.registrar-servers.com.
;; Query time: 3 msec
;; SERVER: 216.87.155.33#53(216.87.155.33)
;; WHEN: Sat Apr 16 18:46:36 EDT 2016
;; MSG SIZE rcvd: 172
Совершенно ясно, что где-то есть проблема с какой-то большой сетью, которая не может разрешить мой домен, но я не могу понять, где. Я просмотрел dig
manpage для опций, которые могут помочь, но не нашел ничего особенно полезного.
Я использую Namecheap и как регистратор доменов, и как DNS-хостинг. У меня включена опция DNSSEC. В последнее время я не вносил никаких изменений в настройки DNS.
Как мне отладить эту проблему и найти проблемный сервер имен?
Как я могу отладить эту проблему и найти проблемный сервер имен?
daxd5 дал несколько хороших советов для начала, но единственный реальный ответ здесь заключается в том, что вам нужно уметь думать как рекурсивный DNS-сервер. Поскольку на авторитетном уровне существует множество неправильных конфигураций, которые могут привести к несогласованности SERVFAIL
, вам нужен профессиональный DNS-сервер или онлайн-инструменты для проверки.
В любом случае, цель не в том, чтобы перестать помогать вам, но я хотел убедиться, что вы понимаете, что на этот вопрос нет однозначного ответа.
В вашем конкретном случае я заметил, что strugee.net
выглядит как зона, подписанная с помощью DNSSEC. Это видно по наличию DS
и RRSIG
записи в реферальной цепочке:
# dig +trace +additional strugee.net
<snip>
strugee.net. 172800 IN NS dns2.registrar-servers.com.
strugee.net. 172800 IN NS dns1.registrar-servers.com.
strugee.net. 172800 IN NS dns3.registrar-servers.com.
strugee.net. 172800 IN NS dns4.registrar-servers.com.
strugee.net. 172800 IN NS dns5.registrar-servers.com.
strugee.net. 86400 IN DS 16517 8 1 B08CDBF73B89CCEB2FD3280087D880F062A454C2
strugee.net. 86400 IN RRSIG DS 8 2 86400 20160423051619 20160416040619 50762 net. w76PbsjxgmKAIzJmklqKN2rofq1e+TfzorN+LBQVO4+1Qs9Gadu1OrPf XXgt/AmelameSMkEOQTVqzriGSB21azTjY/lLXBa553C7fSgNNaEXVaZ xyQ1W/K5OALXzkDLmjcljyEt4GLfcA+M3VsQyuWI4tJOng184rGuVvJO RuI=
dns2.registrar-servers.com. 172800 IN A 216.87.152.33
dns1.registrar-servers.com. 172800 IN A 216.87.155.33
dns3.registrar-servers.com. 172800 IN A 216.87.155.33
dns4.registrar-servers.com. 172800 IN A 216.87.152.33
dns5.registrar-servers.com. 172800 IN A 216.87.155.33
;; Received 435 bytes from 192.41.162.30#53(l.gtld-servers.net) in 30 ms
Прежде чем мы пойдем дальше, нам нужно проверить, действительна ли подпись. DNSViz инструмент, часто используемый для этой цели, и он подтверждает, что действительно есть проблемы. Ярко-красный на картинке предполагает, что у вас есть проблема, но вместо того, чтобы навести указатель мыши на все, мы можем просто расширить Уведомления на левой боковой панели:
RRSIG strugee.net/A alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
RRSIG strugee.net/DNSKEY alg 8, id 16517: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
RRSIG strugee.net/DNSKEY alg 8, id 16517: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
RRSIG strugee.net/MX alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
RRSIG strugee.net/NS alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
RRSIG strugee.net/SOA alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
RRSIG strugee.net/TXT alg 8, id 10636: The Signature Expiration field of the RRSIG RR (2016-04-14 00:00:00+00:00) is 2 days in the past.
net to strugee.net: No valid RRSIGs made by a key corresponding to a DS RR were found covering the DNSKEY RRset, resulting in no secure entry point (SEP) into the zone. (216.87.152.33, 216.87.155.33, UDP_0_EDNS0_32768_4096)
Проблема очевидна: срок действия подписи в вашей зоне истек, и ключи необходимо обновить. Причина, по которой вы видите несогласованные результаты, заключается в том, что не на всех рекурсивных серверах включена проверка DNSSEC. Те, кто проверяет, удаляют ваш домен, а те, которые этого не делают, - это обычная работа.
Редактировать: Инфраструктура DNS Comcast, как известно, реализует проверку DNSSEC, и как один из их клиентов я могу подтвердить, что вижу SERVFAIL
также.
$ dig @75.75.75.75 strugee.net | grep status
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 2011
Хотя вы действительно видите, что официальные серверы имен отвечают правильно, вам необходимо проследить всю цепочку разрешения DNS. То есть пройти всю иерархию DNS от корневых серверов вверх.
$ dig net NS
;; ANSWER SECTION:
net. 172800 IN NS c.gtld-servers.net.
net. 172800 IN NS f.gtld-servers.net.
net. 172800 IN NS k.gtld-servers.net.
;; snipped extra servers given
$ dig @c.gtld-servers.net strugee.net NS
;; AUTHORITY SECTION:
strugee.net. 172800 IN NS dns2.registrar-servers.com.
strugee.net. 172800 IN NS dns1.registrar-servers.com.
;; snipped extra servers again
Это в основном проверяет, работают ли общедоступные DNS-серверы, и вы делаете то же самое, что и ваш DNS-преобразователь. Таким образом, вы должны получать те же ответы, что и выше, на своем сервере Digital Ocean, если только что-то не случилось с их преобразователем DNS:
$ dig net NS
$ dig strugee.net NS
$ dig strugee.net
Если первые два запроса терпят неудачу, это означает отказ DNS на стороне Digital Ocean. Проверьте свои /etc/resolv.conf
и попробуйте запросить вторичный DNS-сервер. Если вторичный работает, просто поменяйте порядок резолверов и попробуйте снова.