Почему корневые серверы DNS не отвечают?
Если я пытаюсь запросить корневой сервер с dig
Я никогда не получаю ответ.
Например, вывод для dig @b.root-servers.net www.ubuntu.com
является
; << >> DiG 9.8.1-P1 << >> @ b.root-servers.net www.ubuntu.com
; (Найден 1 сервер)
;; глобальные параметры: + cmd
;; время соединения истекло; серверы недоступны
Но если я запрашиваю другие серверы (один из моего провайдера, или 8.8.8.8), они отвечают правильно. Зачем?
PS Используя Wireshark, я могу видеть исходящие запросы на правильный IP-адрес корневого сервера, но нет входящих пакетов с того же IP.
2 ответа
Похоже, ваш интернет-провайдер должен блокировать доступ к корневым серверам имен. Очевидно, они не блокируют доступ к своим собственным распознавателям и, вероятно, освобождают пару других популярных внешних преобразователей, таких как Google Public DNS, но могут блокировать все domain
-порт доступа в противном случае.
Это распространено? Это зависит. Я думаю, что такие блоки довольно часто присутствуют в университетских и корпоративных сетях, но я бы сказал, что это не должно быть особенно распространенным явлением среди постоянных поставщиков жилья. (Большинство провайдеров блокируют исходящие smtp
-порт, однако.)
Зачем кому-то блокировать внешние серверы имен? Это, вероятно, связано с различными атаками типа "человек посередине", которые возможны, если законные серверы имен заменяют скомпрометированные. Чтобы избежать подобных атак и уменьшить количество жалоб пользователей, большинство провайдеров обычно перенаправляют все domain
- переносить запросы на свои собственные серверы: когда они это делают, вы больше не можете запускать свой собственный рекурсивный сервер или делать dig +trace
устранение неполадок, но по крайней мере вам не пришлось бы менять настройки DNS в противном случае.
В любом случае, в самой вашей команде нет ничего плохого: вы должны получить ответ, как показано ниже, который позволит вам сделать еще один запрос на ручном рекурсивном пути к разрешению данного имени.
# dig @b.root-servers.net www.ubuntu.com
; <<>> DiG 9.7.3 <<>> @b.root-servers.net www.ubuntu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20828
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 14
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.ubuntu.com. IN A
;; AUTHORITY SECTION:
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
;; ADDITIONAL SECTION:
a.gtld-servers.net. 172800 IN A 192.5.6.30
b.gtld-servers.net. 172800 IN A 192.33.14.30
c.gtld-servers.net. 172800 IN A 192.26.92.30
d.gtld-servers.net. 172800 IN A 192.31.80.30
e.gtld-servers.net. 172800 IN A 192.12.94.30
f.gtld-servers.net. 172800 IN A 192.35.51.30
g.gtld-servers.net. 172800 IN A 192.42.93.30
h.gtld-servers.net. 172800 IN A 192.54.112.30
i.gtld-servers.net. 172800 IN A 192.43.172.30
j.gtld-servers.net. 172800 IN A 192.48.79.30
k.gtld-servers.net. 172800 IN A 192.52.178.30
l.gtld-servers.net. 172800 IN A 192.41.162.30
m.gtld-servers.net. 172800 IN A 192.55.83.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
;; Query time: 12 msec
;; SERVER: 192.228.79.201#53(192.228.79.201)
;; WHEN: Sat Jan 12 22:52:12 2013
;; MSG SIZE rcvd: 492
Корневые серверы должны ответить на ваш вопрос для раскопок с ответом, где вы можете найти.com. b.root-servers.net не отвечает, возможно, причина в том, что ваш файл корневых ссылок устарел. Попробуйте обновить этот файл.