Глиф Учебники

Урок 3. DNS: как имя сайта превращается в адрес

Курс «Компьютерные сети» · урок 3 из 9 · 5 минут чтения

Людям удобно запоминать имена — glif.by, а сети нужны числа — IP-адреса. DNS (Domain Name System, система доменных имён) превращает одно в другое. Каждый раз, когда вы открываете сайт по имени, сначала идёт запрос в DNS, и только потом — к самому сайту.

Как устроено имя

Имя читается справа налево, от общего к частному:

читается справа налево — от общего к частному test glif by зона .by домен верхнего уровня домен glif.by через регистратора поддомен test.glif.by создаёт владелец домена
Имя test.glif.by читается справа налево: зона .by, домен glif.by, поддомен test.glif.by.

У каждого домена есть свои DNS-серверы — они хранят записи домена и отвечают за них. Такие серверы называют авторитетными.

Как компьютер находит адрес

Компьютер не ищет адрес сам. Он спрашивает свой DNS-сервер — его адрес приходит по DHCP вместе с IP-адресом (урок IP-адрес, маска, шлюз и DHCP). Дома это обычно роутер, а роутер передаёт вопрос серверу провайдера. Такой сервер, который ищет ответы для других, называют резолвером.

Если резолвер ещё не знает ответа, он идёт по цепочке:

  1. Спрашивает корневые серверы DNS: кто отвечает за зону .by?
  2. Спрашивает серверы зоны .by: кто отвечает за glif.by?
  3. Спрашивает авторитетные серверы glif.by: какой адрес у glif.by?
  4. Возвращает ответ компьютеру и запоминает его.
корневые серверы кто отвечает за .by? серверы зоны .by кто отвечает за glif.by? серверы glif.by какой адрес у glif.by? 1 2 3 свой DNS-сервер резолвер: роутер или провайдер кэш на время TTL glif.by? 4 адрес компьютер
Резолвер по очереди спрашивает корневые серверы, серверы зоны .by и серверы glif.by, а затем отдаёт адрес компьютеру и хранит ответ в кэше.

Запомненный ответ лежит в кэше — следующие вопросы о том же имени получают ответ сразу. У каждой записи есть TTL (time to live) — сколько секунд её можно держать в кэше. Поэтому после смены адреса сайта старый адрес ещё какое-то время выдаётся из кэшей: от минут до суток — зависит от TTL.

Записи DNS

ЗаписьЧто хранит
Aадрес IPv4, например 203.0.113.10
AAAAадрес IPv6, например 2001:db8::10
CNAMEдругое имя: «www.example.com — то же, что example.com»
MXпочтовый сервер домена — куда доставлять письма на адреса …@домен
TXTтекст: подтверждение владения доменом, правила для почты
NSкакие серверы отвечают за домен

Спросить DNS самому: nslookup

Команда nslookup есть и в Windows, и в Linux:

Командная строка
nslookup glif.by

Сначала она печатает, какой сервер ответил (строки «Сервер» или «Server» и «Address»), затем — сам ответ: имя и адреса. Пометка «Не заслуживающий доверия ответ» (в английской Windows — «Non-authoritative answer») пугает зря: она значит лишь, что ответ дал резолвер из кэша, а не авторитетный сервер домена. Это нормально.

Другие записи и другой сервер:

Командная строка
nslookup -type=mx glif.by
nslookup glif.by 1.1.1.1

Первая команда спрашивает почтовые серверы домена, вторая — задаёт вопрос не своему DNS-серверу, а публичному по адресу 1.1.1.1. Если свой сервер молчит, а публичный отвечает — сломан именно ваш DNS-сервер (роутер или сервер провайдера), а не сайт.

В Linux есть и команда dig — она подробнее и показывает TTL:

Bash
dig glif.by
dig +short glif.by
dig glif.by MX

+short оставляет от ответа только адрес. В Ubuntu nslookup и dig входят в пакет bind9-dnsutils.

Кэш на компьютере

Кэш DNS есть и у самого компьютера, и у браузера. Если сайт переехал, а у вас он открывается по-старому или не открывается вовсе, очистите кэш системы:

Командная строка
ipconfig /flushdns

Это Windows; посмотреть, что лежит в кэше, — ipconfig /displaydns. В Ubuntu кэш очищает resolvectl flush-caches. Браузер держит свой кэш: после очистки системного перезапустите и его.

Файл hosts

Раньше DNS компьютер заглядывает в файл hosts — список «имя → адрес», который правят вручную:

Строка в файле — адрес и имя через пробел:

Текст
192.168.1.10    nas

После этого nas открывается по адресу 192.168.1.10 на этом компьютере — удобно для своих серверов в домашней сети.

Вредоносные программы любят дописывать в hosts строки с адресами банков и почты, чтобы открыть вместо них поддельные страницы. Если знакомый сайт выглядит странно или просит ввести пароль заново — загляните в hosts. В Windows в нетронутом файле все строки начинаются с # (это пояснения), в Linux там обычно только строки с localhost и именем самого компьютера. Чужие адреса с именами известных сайтов — повод проверить компьютер антивирусом.

Какой DNS-сервер выбрать

По умолчанию работают серверы провайдера — роутер получает их сам. Можно указать и публичные, например 1.1.1.1 или 8.8.8.8: в настройках роутера — для всех устройств сразу, или в настройках подключения на одном компьютере. Помните, что DNS-сервер видит, какие имена вы спрашиваете, — выбирайте тот, которому доверяете. Что делать, когда DNS не отвечает, — в справке DNS-сервер не отвечает.

Коротко

Проверьте себя

1. Какая запись DNS хранит адрес IPv4?
2. Владелец перенёс сайт на новый сервер, но у части людей открывается старый. Почему?
3. nslookup glif.by не отвечает, а nslookup glif.by 1.1.1.1 даёт адрес. Где проблема?
4. Что проверяется раньше DNS при поиске адреса по имени?