По какому протоколу работает DNS?

«По какому протоколу работает DNS?» — вопрос из категории Сети, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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-трафика.