Что такое DNS
Женщина, которой звонили, чтобы добавить компьютер в интернет
1982 год. Менло-Парк, Калифорния. В офис Стэнфордского исследовательского института снова звонят.
Элизабет Фейнлер - коллеги звали её Джейк - берёт трубку. Очередной системный администратор из очередного университета хочет добавить новый компьютер в ARPANET. Это значит: внести запись в файл HOSTS.TXT.

HOSTS.TXT - единственный список всех компьютеров в сети. Имя машины, её числовой адрес, контакты ответственного. Один файл. Одна команда. Один телефон.
К 1982 году в ARPANET было несколько сотен машин. Файл обновлялся несколько раз в неделю. Его скачивали вручную, по команде ftp, сотни раз в день. Стоило выйти новой версии - часть машин ещё работала со старой. Имена задваивались. Адреса конфликтовали. Администраторы ругались.
Фейнлер понимала: так больше нельзя. Интернет перерос записную книжку.
В ноябре 1983 года инженер Пол Мокапетрис из Университета Южной Калифорнии опубликовал два технических документа - RFC 882 и RFC 883. Он предложил систему, которая делала бы то, что делал файл Фейнлер - только автоматически, распределённо и для любого количества имён.
Так появился DNS. Система доменных имён работает до сих пор - и ни разу принципиально не менялась.
Что такое DNS
DNS расшифровывается как Domain Name System - система доменных имён.
Её задача: переводить понятные людям имена сайтов (например, google.com) в числовые IP-адреса, которые используют компьютеры (например, 142.250.185.78). Браузеры, почтовые клиенты, приложения - все они работают с IP-адресами. Но помнить "142.250.185.78" вместо "google.com" никто не хочет. DNS берёт это на себя.
Сравнение с телефонной книгой точное, но неполное. Телефонная книга - плоский список. DNS - дерево. Иерархическая распределённая система, где за разные уровни отвечают разные серверы в разных странах. Именно это позволяет ей работать с миллиардами имён - без единого файла и без единого телефона.
Путь одного запроса
Вы вводите в браузере newscroll.ru и нажимаете Enter. Вот что происходит за сотню миллисекунд.
Сначала браузер проверяет собственную память - вдруг адрес уже известен с прошлого раза. Нашёл - подключается сразу.
Не нашёл - спрашивает у операционной системы. У неё тоже есть кэш DNS. Плюс на каждом компьютере есть файл под названием hosts - небольшой локальный список имён и адресов, который можно редактировать вручную. Его изобрела ещё Фейнлер; он до сих пор существует в Windows, Mac и Linux, просто о нём мало кто знает.
Если и ОС не знает - запрос уходит к DNS-серверу. Обычно это сервер провайдера, назначенный автоматически при подключении. Или тот, что вы выбрали вручную - например, 8.8.8.8 от Google. Этот сервер называют рекурсивным резолвером: он сам пойдёт искать ответ, если не знает его.
Резолвер спрашивает у корневого сервера DNS. Корневой не знает конкретного адреса newscroll.ru - но знает, кто отвечает за зону .ru, и отправляет резолвер туда.
Сервер зоны .ru - его называют TLD-сервером, от Top Level Domain - знает, какой сервер обслуживает домен newscroll.ru, и даёт его адрес.
Авторитетный сервер - последняя остановка. Здесь хранятся настоящие записи домена: точный IP-адрес сайта. Он отвечает резолверу.
Резолвер получает IP, запоминает ответ на какое-то время и возвращает браузеру. Браузер подключается к серверу. Страница открывается.

Тринадцать имён, на которых держится интернет
Корневых серверов DNS - тринадцать. Точнее: тринадцать имён. От a.root-servers.net до m.root-servers.net.
Это не тринадцать машин. За каждым именем стоят сотни физических серверов, рассредоточенных по всему миру. Технология anycast устроена так, что запрос автоматически идёт к ближайшей копии - не обязательно в США, а может в Москву или Франкфурт.
Корневые серверы обслуживают разные организации: ICANN, Verisign, NASA, армия США, RIPE NCC и другие. Намеренно разные - чтобы не было единой точки отказа. Если один оператор пропадёт, остальные продолжат работу.
Что важно понимать: корневые серверы не знают адресов конкретных сайтов. Они только знают, к кому идти дальше. Как диспетчер в аэропорту: сам не летит, но знает, кто знает маршрут.
Что хранится в DNS: типы записей
DNS - это не просто таблица "имя → адрес". Это база данных с несколькими типами записей.
Запись A - основная. Связывает имя домена с IPv4-адресом. Именно её запрашивает браузер.
Запись AAAA - то же самое, но для IPv6. Если сайт поддерживает оба протокола, оба типа записи существуют одновременно.
Запись CNAME - псевдоним. Например, www.newscroll.ru - это CNAME, который указывает на newscroll.ru. Позволяет не дублировать IP в каждой записи.
Запись MX - почтовый сервер домена. Когда кто-то отправляет письмо на адрес с доменом, почтовый клиент сначала спрашивает DNS: "Куда доставить?" MX-запись отвечает.
Запись TXT - текстовая. Используется для подтверждения владения доменом и для настроек защиты почты. Например, Google просит добавить строку в TXT, чтобы верифицировать сайт в Search Console.

Почему изменения в DNS распространяются небыстро
У каждой DNS-записи есть TTL - Time To Live, время жизни в кэше. Оно указывает, сколько секунд другие серверы могут хранить запись, прежде чем запросить актуальную версию.
TTL = 3600 означает: кэшировать один час. TTL = 86400 - сутки.
Вот почему, когда владелец сайта меняет хостинг, изменения видны не сразу. Серверы по всему миру держат в кэше старый адрес - пока не истечёт TTL. Это называют "распространением DNS", и оно занимает от нескольких минут до 48 часов.
Если разработчик говорит "подождите, DNS ещё не обновился" - это именно об этом.
Зачем менять DNS-сервер
При подключении к интернету провайдер автоматически назначает свой DNS-сервер. Большинство пользователей об этом не думают - всё работает.
Но менять DNS-сервер имеет смысл по нескольким причинам.
Скорость. Провайдерские DNS бывают медленными. Публичные серверы - Google 8.8.8.8 или Cloudflare 1.1.1.1 - чаще отвечают быстрее, потому что у них больше инфраструктуры и лучше кэширование. Разница в десятки миллисекунд, но при большом количестве запросов это ощутимо.
Приватность. Провайдер видит все DNS-запросы: какие сайты вы запрашиваете и когда. Это не содержимое страниц - но список адресов у него есть. Cloudflare 1.1.1.1 декларирует, что не хранит пользовательские запросы дольше 24 часов и не передаёт их третьим лицам.
Фильтрация. Некоторые DNS-серверы блокируют рекламу и вредоносные сайты прямо на уровне запроса. AdGuard DNS и NextDNS работают именно так - браузер не получает адрес рекламного трекера и просто не загружает его.
Доступ к сервисам. Об этом - отдельно.
Популярные публичные DNS-серверы:
- Google: 8.8.8.8 и 8.8.4.4
- Cloudflare: 1.1.1.1 и 1.0.0.1
- Яндекс: 77.88.8.8 и 77.88.8.1
- AdGuard: 94.140.14.14 и 94.140.15.15
DNS и доступ к сервисам
Часть сайтов в России недоступна - либо заблокирована Роскомнадзором, либо сама компания закрыла доступ с российских IP.
Блокировки работают по-разному. Одни - на уровне IP: пакеты не доходят до сервера. Другие - на уровне DNS: провайдерский сервер возвращает неправильный адрес или просто молчит. Смена DNS-сервера помогает только во втором случае.
Есть и более сложные ситуации. ChatGPT, например, не заблокирован Роскомнадзором - OpenAI самостоятельно закрыл доступ с российских IP-адресов. Это значит: DNS правильно переведёт имя в адрес, но сервер OpenAI всё равно откажет вашему запросу - из-за IP.
Для таких случаев существуют специализированные DNS-сервисы. Их называют Smart DNS: они не только переводят имена в адреса, но и маршрутизируют часть трафика через собственные серверы с нероссийскими адресами.
Например сервис Comss.one DNS работает именно так.
DNS over HTTPS: когда запросы шифруются
Классический DNS работает открыто: запросы передаются без шифрования. Провайдер видит, что вы запрашивали google.com или youtube.com - даже если сам сайт загружается по защищённому HTTPS.
DNS over HTTPS (DoH) - стандарт 2018 года. Он упаковывает DNS-запросы в обычный зашифрованный HTTPS-трафик. Провайдер видит соединение, но не видит, что именно вы запрашиваете.
DoH встроен во все современные браузеры: Chrome, Firefox, Edge, Safari, Яндекс.Браузер, Opera. Включается в настройках безопасности - там же, где можно указать адрес DNS-сервера.
DNS over TLS (DoT) - похожий механизм, но для всего устройства сразу. Android поддерживает его через функцию "Частный DNS" в настройках сети. Там достаточно ввести имя сервера, например dns.comss.one, - и все приложения на телефоне будут использовать зашифрованный DNS, не только браузер.
Для обычного пользователя разница между DoH и DoT небольшая: оба шифруют запросы. DoH удобнее настраивать в браузере, DoT - на уровне всего устройства или роутера.