Я занимаюсь настройкой мониторинга DNS-серверов нескольких крупных веб-хостов. Моя цель состоит в том, чтобы сравнить время отклика их серверов DNS, отслеживая их реакцию на пинг.
В процессе я обнаружил, что серверы имен Bluehost не отвечают на ping. Я попытался получить больше информации, запустив Pingdom DNS Check на bluehost.com, и он выдал следующую ошибку:
Сервер имен ns1.bluehost.com (74.220.195.31) не отвечает на запросы через TCP.
Сервер имен не смог ответить на запросы, отправленные через TCP. Вероятно, это связано с неправильной настройкой сервера имен или с неправильной настройкой фильтрации в брандмауэре. Это довольно распространенное заблуждение, что DNS не нуждается в TCP, если они не обеспечивают передачу зон - возможно, администратор сервера имен не знает, что TCP обычно является требованием.
Я хотел бы знать следующее:
- Насколько верно приведенное выше утверждение?
- Каковы последствия того, что сервер имен не отвечает на запросы по TCP?
источник
он должен поддерживать TCP и UDP - TCP предназначен для ответов размером> 512 байт (что включает передачу зон) (в любом случае, в зависимости от того, что я прочитал. Обычно я включаю TCP и UDP для NS, которые я запускаю ...)
источник
Хорошо знать, что RFC говорят по этому вопросу, и у нас уже есть хороший авторитетный ответ на этот вопрос, но для практических целей я нахожу совет профессора Даниэля Дж. Бернштейна, доктора философии, автора DJBDNS, весьма интересным.
http://cr.yp.to/djbdns/tcp.html#why (2003-01-16)
Обратите внимание, что он опускает явное упоминание DNSSEC; причина в том, что, согласно DJB, DNSSEC подпадает под категорию «всегда ошибка». См. Https://cr.yp.to/djbdns/forgery.html для получения более подробной информации. У DJB есть альтернативный стандарт, называемый DNSCurve - http://dnscurve.org/, который уже был независимо принят некоторыми провайдерами (например, OpenDNS). Интересно: /security/45770/if-dnssec-is-so-questionable-why-is-it-ahead-of-dnscurve-in-adoption .
Обратите внимание, что если в приведенной выше документации по настройке DJBDNS есть какие-либо указания на его функции, то кажется, что он поддерживает только AXFR для TCP. Поскольку многие провайдеры все еще используют DJBDNS, они вряд ли будут поддерживать DNS через TCP без дополнительных усилий.
PS Обратите внимание, что на самом деле DJB практикует то, что проповедует. Его собственные серверы (1) запускают DNSCurve, (2) неправильно отвечают на TCP. Только то, что
+notcp
будет успешно (по умолчанию):тогда как a
+tcp
потерпит неудачу (очевидно, с другим сообщением об ошибке, в зависимости от того, какой из его серверов выбран):источник
TCP требуется только и обычно используется только тогда, когда требуется длинный ответ. Там могут быть негативные последствия. Зональные передачи выполняются по TCP, поскольку они большие и должны быть надежными. Запрет TCP с ненадежных серверов - это один из способов обеспечить получение только небольших ответов.
С введением подписанных ответов DNS возникла потребность в ослаблении ограничения в 512 байт для ответов UPD. EDNS0 предоставляет механизм для более длинных ответов UDP. Неспособность разрешить DNS через TCP с большой вероятностью нарушит безопасную реализацию DNS.
Вполне возможно запустить DNS-сервер, который имеет только UDP-порт 53, открытый для Интернета. Требуется TCP-доступ к узлам DNS, но это небольшой список хостов.
Существует более новый RFC596, который теперь требует TCP для полной реализации DNS. Это нацелено на разработчиков. Документы конкретно не касаются операторов, но предупреждают, что недопущение TCP может привести к ряду сценариев сбоя. В нем подробно описывается множество сбоев, которые могут возникнуть, если DNS через TCP не поддерживается.
Были обсуждения использования TCP для предотвращения атак усиления DNS. У TCP есть свои риски отказа в обслуживании, но распространение сложнее.
источник