Что такое DNS-резолвер?
DNS-резолвер получает имя, ищет записи и возвращает ответ клиенту. Он может быть локальным, рекурсивным или пересылающим запросы, а результат зависит от источника, кэша и времени.
Как работают DNS-резолверы
Процесс разрешения
Клиент отправляет запрос, резолвер проверяет локальный кэш и при промахе обращается к авторитетным серверам через цепочку DNS.
1. Client → Resolver: "What's the IP for example.com?"
2. Resolver checks cache
→ Cache hit: Return cached result
→ Cache miss: Begin recursion
3. Resolver → Root Server: "Where's .com?"
Root → Resolver: "Ask these .com nameservers"
4. Resolver → .com TLD: "Where's example.com?"
.com → Resolver: "Ask these nameservers"
5. Resolver → Authoritative NS: "What's example.com's IP?"
Auth NS → Resolver: "203.0.113.50"
6. Resolver → Client: "203.0.113.50"
(Also caches result based on TTL)
Рекурсивные и итеративные запросы
Рекурсивный сервер ищет ответ для клиента, итеративный возвращает подсказку следующего сервера. Роли не следует смешивать.
Client: "Give me the final answer for example.com"
Resolver: "Here's the IP: 203.0.113.50"
(Resolver does all the work)
Resolver: "What's example.com?"
Root: "I don't know, ask .com servers"
Resolver: "What's example.com?"
.com: "I don't know, ask ns1.example.com"
Resolver: "What's example.com?"
ns1: "203.0.113.50"
Типы резолверов
Stub-резолвер
Stub работает на устройстве и передаёт запрос настроенному DNS-сервису.
Рекурсивный резолвер
Рекурсивный резолвер кэширует ответы, применяет TTL и может обслуживать множество клиентов.
Forwarding-резолвер
Forwarder пересылает запрос выбранному upstream, сохраняя локальные политики и иногда кэш.
Client → Corporate Resolver (forwarding) → ISP Resolver (recursive) → Internet
Популярные публичные резолверы
Публичные сервисы различаются политикой конфиденциальности, фильтрацией, DNSSEC, DoH/DoT, latency и регионами. Проверяйте актуальные условия.
| Провайдер | IPv4 | IPv6 | Возможности |
|---|---|---|---|
| Cloudflare | 1.1.1.1, 1.0.0.1 | 2606:4700:4700::1111 | Быстрый, ориентирован на приватность, без журналирования |
| 8.8.8.8, 8.8.4.4 | 2001:4860:4860::8888 | Надёжный, глобальный anycast | |
| Quad9 | 9.9.9.9 | 2620:fe::fe | Фильтрация угроз и безопасности |
| OpenDNS | 208.67.222.222 | 2620:119:35::35 | Фильтрация контента, защита от фишинга |
Смена резолвера
Измените настройку устройства, роутера или сети, затем очистите локальный кэш и проверьте новый источник.
Control Panel → Network → Adapter Settings
→ Properties → IPv4 → Use these DNS servers:
Preferred: 1.1.1.1
Alternate: 8.8.8.8
System Preferences → Network → Advanced → DNS
→ Add: 1.1.1.1, 8.8.8.8
nameserver 1.1.1.1
nameserver 8.8.8.8
Возможности резолвера
Кэширование
Кэш снижает нагрузку, но может вернуть старый ответ до истечения TTL.
First query: example.com
→ Full recursion (50ms)
→ Cached for 300s (TTL)
Subsequent queries: example.com
→ Cache hit (1ms)
→ Served until TTL expires
Отрицательное кэширование
NXDOMAIN и NODATA кэшируются по SOA и могут скрывать новую запись.
Query: nonexistent.example.com
Response: NXDOMAIN
Cached: Based on SOA minimum TTL
Минимизация запросов
QNAME minimization ограничивает раскрытие имени по цепочке DNS.
Query to .com: "What's www.blog.example.com?"
→ Exposes full subdomain structure
Query to .com: "What's example.com?"
Query to example.com NS: "What's blog.example.com?"
Query to blog.example.com NS: "What's www.blog.example.com?"
→ Reveals only necessary information at each level
Проверка DNSSEC
Резолвер валидирует подпись и должен сообщать SERVFAIL при нарушении цепочки, а не выдавать неподтверждённый ответ.
Query: example.com (DNSSEC-signed)
→ Resolver validates signatures
→ Returns AD (Authentic Data) flag if valid
→ Returns SERVFAIL if signatures invalid
Функции безопасности резолвера
DNS через HTTPS (DoH)
DoH передаёт DNS через HTTPS, скрывая запрос от локального наблюдателя, но добавляя зависимость от endpoint https://cloudflare-dns.com/dns-query.
Traditional DNS:
Client → Resolver (UDP port 53, plaintext)
DNS over HTTPS:
Client → Resolver (TCP port 443, encrypted)
DNS через TLS (DoT)
DoT шифрует канал TLS и требует проверки hostname и сертификата сервиса.
Client → Resolver (TCP port 853, encrypted)
Фильтрация вредоносных сайтов и фишинга
Фильтр может блокировать известные угрозы, но не доказывает безопасность разрешённого домена.
Ограничение частоты запросов
Rate limiting защищает сервис, но 429 и timeout должны классифицироваться как unknown.
If source IP sends > threshold queries/second:
→ Temporarily rate limit or block
Проверка текущего резолвера
Сверьте адрес DNS-сервера, источник ответа, DNSSEC, TTL, latency и регион с независимым тестом.
ipconfig /all | findstr "DNS Servers"
cat /etc/resolv.conf
dig example.com
# Look at "SERVER:" in output
Производительность резолвера
Важность задержки
Высокая latency ухудшает первый запрос и может замедлить сайт, почту и API.
| Резолвер | Средняя задержка | Влияние |
|---|---|---|
| Локальный ISP | 10–30 мс | Быстрый, но показатели меняются |
| Cloudflare | 10–20 мс | Стабильно быстрый (anycast) |
| 20–40 мс | Надёжный, глобальный | |
| Медленный резолвер | 100–200 мс | Заметная задержка загрузки страниц |
Anycast-маршрутизация
Anycast направляет клиента к ближайшему узлу, но качество зависит от маршрута и региона.
1.1.1.1 anycast IP
→ Routed to nearest Cloudflare datacenter
→ New York query → New York datacenter
→ London query → London datacenter
→ Result: Global low-latency resolution
Измерение производительности
Сравнивайте p50/p95, cache hit, timeout, SERVFAIL и результаты нескольких сетей.
# Tests multiple resolvers with your actual query patterns
namebench
# Test Cloudflare
time dig @1.1.1.1 example.com
# Test Google
time dig @8.8.8.8 example.com
# Test ISP (current)
time dig example.com
Частые проблемы резолвера
Отравление DNS
Подмена кэша направляет клиента на неверный адрес; DNSSEC и обновлённое ПО снижают риск.
Перехват резолвера
Изменение настройки устройства, роутера или сети может перенаправить запросы к чужому сервису.
Устаревший кэш
Старый ответ не означает, что authoritative зона не изменилась.
Блокировка резолвером
Фильтр, политика или ошибка сервиса могут блокировать запрос; 403, 429 и timeout не доказывают отсутствие записи.
Настройка локального резолвера
Использование Unbound
Unbound требует контроля ACL, forwarding, DNSSEC, логов, обновлений и ограничений доступа.
# Install Unbound (Linux)
sudo apt install unbound
# Basic config (/etc/unbound/unbound.conf)
server:
interface: 127.0.0.1
do-ip4: yes
do-udp: yes
do-tcp: yes
# Enable DNSSEC
auto-trust-anchor-file: "/var/lib/unbound/root.key"
# Privacy (query minimization)
qname-minimisation: yes
# Start service
sudo systemctl start unbound
sudo systemctl enable unbound
Использование Pi-hole
Pi-hole объединяет локальный резолвер и списки фильтрации; проверяйте источники, false positive и резервирование.
# Install Pi-hole
curl -sSL https://install.pi-hole.net | bash
# Configure devices to use Pi-hole as resolver
# Set router DHCP to provide Pi-hole IP as DNS
Лучшие практики
Минимизируйте доверие, включите DNSSEC, ограничьте ACL, мониторьте latency и SERVFAIL, документируйте endpoint и не публикуйте секреты.
Резолвер и авторитетный сервер имён
Резолвер ищет и кэширует ответ для клиента, а authoritative NS публикует зону. Ответ резолвера может быть старым и не заменяет прямую проверку источника.
| Характеристика | Резолвер | Авторитетный NS |
|---|---|---|
| Роль | Отвечает на запросы клиентов | Хранит фактические DNS-записи |
| Рекурсия | Да, запрашивает другие серверы | Нет, отвечает только для своих зон |
| Кэширование | Да, кэширует ответы | Нет (авторитетные данные) |
| Используется | Клиентами и конечными пользователями | Резолверами при рекурсии |
| Примеры | 8.8.8.8, 1.1.1.1 | ns1.example.com |