Урок 3. DNS: как имя сайта превращается в адрес
Людям удобно запоминать имена — glif.by, а сети нужны числа — IP-адреса. DNS (Domain Name System, система доменных имён) превращает одно в другое. Каждый раз, когда вы открываете сайт по имени, сначала идёт запрос в DNS, и только потом — к самому сайту.
Как устроено имя
Имя читается справа налево, от общего к частному:
.by— зона, или домен верхнего уровня. Бывают зоны стран (.by,.бел) и общие (.com,.org);glif.by— домен: его владелец зарегистрировал имя в зоне.byчерез регистратора;test.glif.by,www.glif.by— поддомены: их владелец домена создаёт сам, сколько нужно.
У каждого домена есть свои DNS-серверы — они хранят записи домена и отвечают за них. Такие серверы называют авторитетными.
Как компьютер находит адрес
Компьютер не ищет адрес сам. Он спрашивает свой DNS-сервер — его адрес приходит по DHCP вместе с IP-адресом (урок IP-адрес, маска, шлюз и DHCP). Дома это обычно роутер, а роутер передаёт вопрос серверу провайдера. Такой сервер, который ищет ответы для других, называют резолвером.
Если резолвер ещё не знает ответа, он идёт по цепочке:
- Спрашивает корневые серверы DNS: кто отвечает за зону
.by? - Спрашивает серверы зоны
.by: кто отвечает заglif.by? - Спрашивает авторитетные серверы
glif.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:
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 — список «имя → адрес», который правят вручную:
- в Windows —
C:\Windows\System32\drivers\etc\hosts(менять — в Блокноте, запущенном от имени администратора); - в Linux и macOS —
/etc/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-сервер не отвечает.
Коротко
- DNS превращает имя (
glif.by) в IP-адрес; имя читается справа налево: зона, домен, поддомен. - Компьютер спрашивает свой DNS-сервер (обычно роутер), тот находит ответ по цепочке и хранит его в кэше на время TTL.
- Главные записи:
A— IPv4,AAAA— IPv6,CNAME— другое имя,MX— почта. - Проверка —
nslookup имя, вопрос другому серверу —nslookup имя 1.1.1.1. - Кэш Windows очищает
ipconfig /flushdns; файл hosts проверяется раньше DNS.