← Назад к вопросам
Какие порты использует 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).