← Назад к вопросам

Какие порты использует DNS-протокол

1.8 Middle🔥 191 комментариев
#Веб-тестирование#Клиент-серверная архитектура#Тестирование API

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Использование портов в DNS-протоколе

DNS (Domain Name System) использует **два основных порта** для своей работы: **порт 53 по UDP** и **порт 53 по TCP**. Выбор порта зависит от типа и размера DNS-запроса или ответа.

Порт 53/UDP — основной для стандартных запросов

Большинство DNS-запросов (например, преобразование google.com в IP-адрес) используют UDP (User Datagram Protocol) на порту 53. Это обусловлено требованиями к производительности и низкими накладными расходами:

  • Скорость и эффективность: UDP не требует установления соединения (handshake), что делает запросы быстрее.
  • Маленький размер пакетов: Стандартные DNS-запросы и ответы обычно умещаются в один UDP-пакет (ограничение в 512 байт для традиционных запросов, если не используется механизм расширения EDNS0).
  • Широкое использование: Все простые запросы типа A, AAAA, CNAME, MX и т.д. по умолчанию используют UDP.

Пример типичного UDP-запроса (в псевдокоде):

Клиент (резолвер) -> [UDP пакет, порт 53] -> Сервер DNS
Сервер DNS -> [UDP пакет, порт 53] -> Клиент (резолвер)

Порт 53/TCP — для особых случаев

TCP (Transmission Control Protocol) на том же порту 53 используется в специфических сценариях, где надежность и передача больших объемов данных важнее скорости:

  • Большие ответы (DNS Response > 512 байт): Если ответ не помещается в один UDP-пакет, сервер усекает его и устанавливает флаг TC (Truncated). Клиент, увидев этот флаг, обязан повторить запрос, используя TCP. Это часто происходит при запросе DNS-записей типа AXFR (зона трансфера) или при использовании DNSSEC, где подписи значительно увеличивают размер ответа.
  • Зонный трансфер (Zone Transfer): Механизм полной синхронизации DNS-зон между первичным (master) и вторичными (slave) серверами всегда использует TCP из-за большого объема передаваемых данных. Для этого используются специальные типы запросов: AXFR (полный трансфер) и IXFR (инкрементальный трансфер).
  • Требования надежности: TCP гарантирует доставку и целостность данных, что критически важно для операций вроде трансфера зон.
  • Предотвращение амплификации в DDoS-атаках: Некоторые современные практики и стандарты (например, обязательное использование TCP для запросов большего размера) помогают бороться с уязвимостями.

Пример сценария перехода на TCP:

1. Клиент отправляет запрос о примере.com через UDP.
2. Сервер отвечает по UDP, но устанавливает флаг TC=1 (Truncated), так как ответ слишком велик (например, содержит множество записей или DNSSEC-подписи).
3. Клиент получает усеченный ответ, повторяет ТОТ ЖЕ запрос, но на этот раз устанавливает TCP-соединение на порт 53.
4. Происходит "рукопожатие" TCP (SYN, SYN-ACK, ACK).
5. Клиент отправляет запрос по установленному TCP-соединению.
6. Сервер отправляет полный ответ по TCP.
7. Соединение закрывается.

Другие важные аспекты и современные тенденции

  • DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT): Это современные протоколы, направленные на шифрование и повышение конфиденциальности DNS-трафика. Они используют совершенно другие порты:
    *   **DoT** использует **порт 853/TCP**.
    *   **DoH** инкапсулирует DNS-запросы в HTTPS-сессии и использует стандартный **порт 443/TCP**.
  • Безопасность (Firewall правила): При настройке сетевых экранов для DNS-серверов необходимо разрешать входящие соединения на порт 53 по UDP и TCP с доверенных источников (клиентских сетей, вышестоящих резолверов, серверов-сателлитов). Исходящие соединения также должны быть разрешены для получения ответов от корневых и внешних DNS-серверов.

Резюме для QA Engineer

Понимание различий в использовании портов критически важно для тестирования:

  • Тестирование функциональности: Необходимо проверять, как система ведет себя при получении усеченного (TC=1) ответа — переходит ли она на TCP корректно.
  • Тестирование производительности и нагрузки: UDP-запросы создают иную нагрузку на сервер (stateless), чем TCP-соединения (требующие поддержания состояния). Это важно для нагрузочного тестирования DNS-серверов или балансировщиков.
  • Сетевое тестирование и безопасность: Нужно убедиться, что конфигурация брандмауэра и сетевых ACL (Access Control Lists) корректно пропускает трафик на порт 53 по обоим протоколам. Распространенная ошибка — разрешить только UDP 53, что ломает зонные трансферы и обработку больших ответов.
  • Тестирование новых протоколов: При валидации поддержки DoH/DoT фокус смещается на порты 853 и 443, а также на корректность TLS-рукопожатий и обработку HTTP/2-фреймов (для DoH).
Какие порты использует DNS-протокол | PrepBro