DNS-преобразователь

Протоколы и стандарты
Сервис, который преобразует доменное имя в DNS-ответ, находя его через иерархию серверов.
← Вернуться к глоссарию

Что такое 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 и регионами. Проверяйте актуальные условия.

ПровайдерIPv4IPv6Возможности
Cloudflare1.1.1.1, 1.0.0.12606:4700:4700::1111Быстрый, ориентирован на приватность, без журналирования
Google8.8.8.8, 8.8.4.42001:4860:4860::8888Надёжный, глобальный anycast
Quad99.9.9.92620:fe::feФильтрация угроз и безопасности
OpenDNS208.67.222.2222620: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.

РезолверСредняя задержкаВлияние
Локальный ISP10–30 мсБыстрый, но показатели меняются
Cloudflare10–20 мсСтабильно быстрый (anycast)
Google20–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.1ns1.example.com

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.