Ответ
DNS в основном использует UDP на порту 53 для стандартных запросов, так как это протокол без установления соединения, что делает запросы быстрее и с меньшими накладными расходами. Однако, в нескольких специфичных случаях используется TCP (также порт 53):
- Когда размер ответа превышает 512 байт (стандартный лимит для UDP).
- При использовании расширений безопасности, таких как DNSSEC, которые увеличивают размер ответа.
- Для операций зонного трансфера (AXFR/IXFR) между primary и secondary DNS-серверами, так как передаются все записи зоны, что обычно составляет большой объем данных.
Практический пример: При развертывании и настройке DNS-серверов (например, BIND или CoreDNS) в инфраструктуре важно убедиться, что в правилах сетевого экрана (firewall) открыт как UDP, так и TCP порт 53 для корректной работы.
# Проверка, какой протокол используется по умолчанию (UDP)
dig @8.8.8.8 example.com A +short
# Принудительное использование TCP для запроса
dig @8.8.8.8 example.com A +tcp
# Запрос, который может вызвать переключение на TCP из-за большого ответа (например, с DNSSEC)
dig @8.8.8.8 example.com DNSKEY +dnssec
Для DevOps-инженера: Понимание этого важно при настройке мониторинга сетевого трафика, диагностике проблем с разрешением имен в контейнеризированных средах (Kubernetes) и обеспечении безопасности DNS-трафика.