- DNS — служба, которая по имени сайта находит его IP-адрес; без неё пришлось бы вводить числа.
- Имена устроены как дерево, а ответ на запрос собирают несколько серверов: резолвер и авторитетные серверы зон.
- Ответы кэшируются на срок TTL, поэтому изменения записей видны не сразу.
- Вручную DNS проверяют командой nslookup или несколькими строками на Python.
Содержание12 разделов ▾
- Зачем нужен DNS
- Как устроена система имён
- Какие бывают DNS-серверы
- Что происходит, когда вы открываете сайт
- Шаг 1. Устройство спрашивает резолвер
- Шаг 2. Резолвер проверяет кэш
- Шаг 3. Резолвер идёт от корня
- Шаг 4. Резолвер спускается по зонам
- Шаг 5. Авторитетный сервер даёт адрес
- Шаг 6. Ответ возвращается и сохраняется
- Кэш и TTL
- Основные типы записей
- Проверяем DNS сами
- Какой DNS использует ваше устройство
- Что делать, если DNS-сервер не отвечает
- Условия и ограничения
- Частые ошибки
- Короткий вывод
DNS-сервер — это служба, которая по имени сайта, например example.com, находит его IP-адрес, чтобы ваше устройство знало, куда обращаться. Статья для тех, кто знает, что такое IP-адрес, и хочет понять, как имя превращается в число и что происходит, когда сайт «не открывается».
Опираемся на стандарты RFC 1034, 1035 и 9499 и на страницу российского сервиса Яндекс DNS. Команды проверены на Windows 11 и Python 3.13, данные на октябрь 2026 года.
Зачем нужен DNS
Сети работают с IP-адресами, а людям удобнее имена. DNS хранит соответствие между ними и отвечает на вопрос «какой адрес у этого имени?». Без него пришлось бы помнить числа для каждого сайта.
Как устроена система имён
Имена в DNS образуют дерево. По RFC 1034, каждый узел дерева имеет метку длиной от нуля до 63 октетов (байтов). Полное имя читается справа налево: www.example.com — это узел www внутри example, который лежит в зоне com.
Отсюда следует, что ни один сервер не должен знать всё. Каждая часть дерева — зона — находится в ведении своих серверов. Корень указывает, где искать серверы зоны com, а те указывают на серверы конкретного домена.
Какие бывают DNS-серверы
В терминологии RFC 9499 выделяют несколько ролей:
| Роль | Что делает |
|---|---|
| Заглушка (stub resolver) | Не выполняет поиск целиком, а обращается к рекурсивному резолверу |
| Рекурсивный резолвер | Выполняет весь поиск за вас и обычно кэширует ответы |
| Авторитетный сервер | Знает содержимое зоны из своих данных и отвечает по ней без обращения к другим серверам |
Авторитетные серверы зоны перечислены в её NS-записи. Именно их вы настраиваете у регистратора, когда подключаете домен к хостингу.
Что происходит, когда вы открываете сайт
Если вы ввели example.com в адресной строке, а адрес в кэше не нашёлся, происходит примерно следующее.
Шаг 1. Устройство спрашивает резолвер
Заглушка в системе отправляет запрос рекурсивному резолверу, адрес которого выдал роутер или провайдер.
Шаг 2. Резолвер проверяет кэш
Если ответ недавно запрашивали и срок его хранения не истёк, резолвер отвечает сразу.
Шаг 3. Резолвер идёт от корня
Если в кэше пусто, резолвер спрашивает корневой сервер, где искать зону com.
Шаг 4. Резолвер спускается по зонам
Серверы зоны com указывают на серверы домена example.com.
Шаг 5. Авторитетный сервер даёт адрес
Сервер домена возвращает запись с IP-адресом.
Шаг 6. Ответ возвращается и сохраняется
Резолвер передаёт адрес устройству и кэширует его на срок TTL. Браузер соединяется с этим адресом.
Кэш и TTL
В каждой DNS-записи есть поле TTL. По RFC 1035, это 32-битное число, которое задаёт время в секундах, в течение которого запись можно хранить в кэше. Нулевое значение означает, что запись нельзя кэшировать и можно использовать только для текущей операции.
Поэтому после смены записи часть пользователей ещё какое-то время видит старый адрес: их резолверы не обновили кэш. Сколько ждать, зависит от TTL записи, обещать конкретный срок нельзя.
Основные типы записей
| Запись | Для чего | Что в ней |
|---|---|---|
| A | Адрес по имени | IPv4-адрес (32 бита) |
| AAAA | То же для IPv6 | IPv6-адрес; тип описан в RFC 3596 |
| NS | Кто обслуживает зону | Имя авторитетного сервера |
| CNAME | Псевдоним | Другое имя, на которое нужно перейти |
| MX | Куда доставлять почту | Имя почтового сервера |
| TXT | Произвольный текст | Описательный текст, смысл зависит от домена |
Проверяем DNS сами
Самый простой способ — команда nslookup в Windows, macOS и Linux.
nslookup example.comРезультат на Windows 11 (строки с адресом вашего DNS-сервера опущены, адреса сайта у вас могут быть другими):
Non-authoritative answer:
Name: example.com
Addresses: 172.66.147.243
104.20.23.154Строка «Non-authoritative answer» означает, что ответ дал не авторитетный сервер домена, а резолвер, который мог взять его из кэша. Ниже имя и найденные адреса.
То же можно получить из Python: функция getaddrinfo просит у системы адреса по имени.
import socket
имя = "example.com"
for семейство, тип, протокол, _, адрес in socket.getaddrinfo(имя, 443, type=socket.SOCK_STREAM):
print(семейство.name, адрес[0])Вывод при запуске на Python 3.13.12 (адреса зависят от времени и вашего резолвера):
AF_INET 172.66.147.243
AF_INET 104.20.23.154Метка AF_INET означает адрес IPv4. Если у вас работает IPv6, появятся строки AF_INET6.
Какой DNS использует ваше устройство
Как правило, адрес DNS-сервера устройству выдаёт роутер, а роутер получает его от провайдера. Сменить его можно в настройках сетевого подключения или в роутере. Выбирая публичный DNS, ориентируйтесь на то, что вам нужно: скорость, защиту от опасных сайтов или фильтрацию.
В России есть, например, Яндекс DNS. По описанию сервиса, у него три режима: базовый, безопасный (блокирует опасные сайты) и семейный (дополнительно блокирует «взрослые» сайты). Сервис бесплатный. Для шифрованного соединения Яндекс указывает адреса для DoH и DoT. Помните: любой DNS-сервер видит имена, которые вы запрашиваете.
Что делать, если DNS-сервер не отвечает
- Проверьте, есть ли интернет вообще: другие устройства, мессенджеры.
- Перезагрузите роутер и компьютер.
- Проверьте адрес командой
nslookup: если имя не находится, а соединение есть, виноват DNS. - Укажите другой DNS-сервер и повторите проверку.
- Если не помогло, обратитесь к провайдеру.
Условия и ограничения
- Версия
- Октябрь 2026 — данные приведены на дату написания; команды проверены на Windows 11 и Python 3.13.12.
- Кэш
- Задержка обновления — результат зависит от TTL записи и кэша резолвера.
- Провайдер
- DNS по умолчанию — адрес сервера обычно выдаёт роутер или провайдер.
- Приватность
- Запросы видны — DNS-серверу видны имена, которые вы запрашиваете.
- Безопасность
- Обычный DNS не шифрован — шифрованные варианты — DoH и DoT; их настройка зависит от устройства.
Частые ошибки
- Путают DNS и хостинг: DNS указывает, где сайт, а хостинг хранит сам сайт.
- Ждут мгновенного обновления записи и не учитывают TTL.
- Меняют DNS «для ускорения» и не замечают, что теряют фильтрацию провайдера или родительский контроль.
- Вводят в поле DNS-сервера доменное имя вместо IP-адреса там, где нужен адрес.
- Забывают, что любой DNS-сервер видит запрашиваемые имена.
- Проверяют DNS только на одном устройстве и делают вывод о сети в целом.
Короткий вывод
DNS превращает имена в адреса: запрос идёт к резолверу, а тот при необходимости спрашивает серверы по цепочке зон. Ответы хранятся в кэше на срок TTL. Проверять DNS можно командой nslookup или короткой программой на Python, а при сбое помогают перезагрузка и смена DNS-сервера.




