Компьютерные сети
DNS: телефонная книга интернета
Цели урока
- Понимать модель DNS: распределённая иерархическая БД, кешируемая всем интернетом
- Знать роли: stub resolver, recursive resolver, root, TLD, authoritative
- Различать рекурсивный и итеративный resolve, понимать кто куда ходит
- Знать структуру корневых серверов: 13 имён A-M, anycast, тысячи физических инстансов
- Использовать dig/nslookup для диагностики DNS и читать TTL
Набирается google.com - и через долю секунды появляется страница. Но компьютер не знает, что такое «google» - ему нужен IP-адрес. За кулисами DNS мгновенно спрашивает серверы по всему миру: «Кто знает google.com?» - и получает ответ.
- **Веб-разработка:** настройка DNS для своего домена, понимание TTL при деплое
- **DevOps:** DNS-based load balancing, failover, service discovery
- **Безопасность:** DNS-атаки (spoofing, hijacking), мониторинг DNS-трафика
Предварительные знания
Зачем нужен DNS
**DNS** (Domain Name System) - распределённая система, переводящая доменные имена (google.com) в IP-адреса (142.250.74.14). Люди запоминают слова, компьютеры работают с числами - DNS связывает оба мира.
DNS - не просто таблица. Это **распределённая иерархическая база данных** с миллионами серверов по всему миру. Нет единой точки отказа - если один сервер недоступен, запрос пойдёт к другому.
**История:** До DNS был файл HOSTS.TXT, который вручную копировали на все компьютеры. К 1983 году это стало невозможно - сеть росла слишком быстро. Paul Mockapetris изобрёл DNS (RFC 1034, 1035).
Какую главную задачу решает DNS?
Иерархия доменов
Домен - это иерархическая структура, читаемая справа налево. **www.example.com.** (точка в конце!) означает: root → com → example → www. Каждый уровень управляется отдельно.
**Trailing dot:** Полное доменное имя (FQDN) заканчивается точкой: `google.com.` Точка означает root. Обычно браузеры добавляют её автоматически, но в DNS-конфигах это важно!
В имени www.example.com, что такое «com»?
DNS-запрос и ответ
DNS использует UDP порт 53 (TCP для больших ответов). Запрос содержит имя и тип записи (A, AAAA, MX...). Ответ содержит одну или несколько записей с данными и TTL.
**Почему UDP?** DNS-запрос и ответ обычно умещаются в один пакет (<512 байт). TCP handshake удвоил бы задержку. Для больших ответов (DNSSEC, много записей) используется TCP или EDNS с бóльшим буфером.
На каком порту работает DNS?
DNS Resolver - посредник
**DNS Resolver** (рекурсивный резолвер) - сервер, который делает всю работу за клиента. Получает запрос, обходит иерархию DNS, кеширует результаты. Клиентский компьютер обычно знает только адрес резолвера.
**Зачем менять DNS?** 1) Скорость - Cloudflare быстрее провайдера. 2) Приватность - провайдер видит все запросы. 3) Безопасность - Quad9 блокирует вредоносные домены. 4) Обход блокировок - DNS-блокировки легко обходятся.
DNS - это один центральный сервер
DNS - распределённая система из миллионов серверов с иерархией и кешированием
Централизованный сервер не выдержал бы нагрузку (триллионы запросов в день) и стал бы единой точкой отказа. Иерархия и кеширование распределяют нагрузку.
Кто выполняет рекурсивные DNS-запросы?
Ключевые идеи
- **DNS** - переводит доменные имена в IP-адреса
- **Иерархия:** root → TLD (.com) → SLD (example) → subdomain (www)
- **UDP порт 53** - быстрые запросы-ответы
- **Resolver** - рекурсивный сервер, делающий всю работу за клиента
Связанные темы
DNS - основа работы интернета:
- DNS записи — Типы записей: A, AAAA, CNAME, MX, TXT
- DNS резолвинг — Как именно работает рекурсия и кеширование
- DNSSEC — Криптографическая защита DNS
Вопросы для размышления
- Что произойдёт, если все DNS-серверы станут недоступны?
- Почему файл /etc/hosts до сих пор существует?
- Как провайдер может блокировать сайты через DNS?