DNS в деталях
Тема дорожной карты · Компьютерные сети
DNS (Domain Name System) играет ключевую роль в интернете, обеспечивая соответствие между текстовыми доменными именами и числовыми IP-адресами. Основные функции DNS включают split-horizon DNS (разные ответы в зависимости от сети запрашивающего), балансировку нагрузки на основе DNS с взвешенными записями, anycast-маршрутизацию для авторитетных серверов, Response Policy Zones (RPZ) для блокировки вредоносных доменов, а также DNS over HTTPS (DoH) и DNS over TLS (DoT) для зашифрованного разрешения имён. Эти возможности делают DNS не только инструментом для маппинга доменов, но и важным элементом безопасности и управления сетью.
Как это работает
DNS разрешение начинается с stub resolver на клиентском устройстве, который отправляет запрос к recursive resolver. Если recursive resolver не может найти ответ в своём кеше, он отправляет запрос к root nameserver, который направляет его к соответствующему TLD (top-level domain) nameserver. Затем запрос передается к authoritative nameserver, который отвечает на запрос, предоставляя соответствующий IP-адрес или другую информацию.
DNS поддерживает множество типов записей, включая A (IPv4), AAAA (IPv6), CNAME (alias), MX (mail), TXT (verification, SPF, DKIM), SRV, NS (nameserver), SOA (start of authority), и CAA (certification authority authorization). TTL (time to live) параметр определяет, насколько долго запись будет храниться в кеше; более короткие значения TTL используются для записей, которые могут быстро меняться, такие как записи failover, в то время как более длинные значения TTL используются для записей, которые редко изменяются, такие как записи для стабильных сервисов.
DNSSEC (DNS Security Extensions) добавляет к DNS криптографические подписи, чтобы предотвратить подделку записей. Однако, несмотря на важность DNSSEC, его использование пока остается неполным из-за сложности настройки и потенциальных проблем с совместимостью.
Split-horizon DNS позволяет возвращать разные ответы в зависимости от источника запроса, что особенно полезно для корпоративных сетей, где внутренние и внешние пользователи могут иметь доступ к разным ресурсам.
Когда применять
Правильная настройка SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail), и DMARC (Domain-based Message Authentication, Reporting, and Conformance) TXT записей является ключевым элементом для предотвращения фишинговых атак и улучшения доставки электронной почты. Короткие значения TTL (60-300 секунд) используются для записей, которые могут быстро меняться, такие как записи failover, в то время как более длинные значения TTL (24 часа и более) используются для записей, которые редко изменяются, такие как записи для стабильных сервисов.
Для DNS-основанного failover важно учитывать, что пропагация новых записей может быть медленной, что может привести к тому, что клиенты продолжат использовать старые записи, игнорируя новые значения TTL.
Использование resolvers, таких как 1.1.1.1 или 8.8.8.8, может быть полезным для non-prod сред, где требуется надежное разрешение имен, но не для продакшн-сред, где управление и безопасность DNS должны быть строго контролируемыми.
Типичные ошибки
Типичные ошибки при работе с DNS включают использование CNAME в apex (против спецификации), установку слишком длинных значений TTL при планировании миграции (что может продлить время простоя), отсутствие настройки DMARC (что может позволить спамерам подделывать домен), и игнорирование проверки DNSSEC на resolvers (что может позволить атакам на подделку DNS записей).