Базовые знания о DNS необходимые для работы с сайтом.

  Web серверы

FQDN (Fully Qualified Domain Name) – полное имя домена с точкой на конце.

Например: translate.google.com.

Алгоритм разрешения(резолва) DNS имен

Это проще всего понять на примере.

Команда dig позволяет резолвить DNS имена в ОС Linux, MAC OS. В Windows популярной консольной командой является nslookup.

dig @8.8.8.8 +trace translate.google.com.

Пример выше означает:

  • dig – команда
  • @8.8.8.8 – спрашиваем DNS-сервера гугла. 8.8.8.8 – это его IP-адрес.
  • +trace – просим dig показать нам весь путь запроса.
  • translate.google.com. – домен, который будем резолвить.

Результат выполнения (лишнее удалено):


; <<>> DiG 9.10.6 <<>> @8.8.8.8 +trace translate.google.com.
; (1 server found)
;; global options: +cmd
.			1670	IN	NS	a.root-servers.net.
.			1670	IN	NS	b.root-servers.net.
.			1670	IN	NS	c.root-servers.net.
.			1670	IN	NS	d.root-servers.net.
.			1670	IN	NS	e.root-servers.net.
.			1670	IN	NS	f.root-servers.net.
.			1670	IN	NS	g.root-servers.net.
.			1670	IN	NS	h.root-servers.net.
.			1670	IN	NS	i.root-servers.net.
.			1670	IN	NS	j.root-servers.net.
.			1670	IN	NS	k.root-servers.net.
.			1670	IN	NS	l.root-servers.net.
.			1670	IN	NS	m.root-servers.net.

;; Received 525 bytes from 8.8.8.8#53(8.8.8.8) in 6 ms

com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.

;; Received 1180 bytes from 192.203.230.10#53(e.root-servers.net) in 14 ms

google.com.		172800	IN	NS	ns2.google.com.
google.com.		172800	IN	NS	ns1.google.com.
google.com.		172800	IN	NS	ns3.google.com.
google.com.		172800	IN	NS	ns4.google.com.

;; Received 846 bytes from 192.35.51.30#53(f.gtld-servers.net) in 40 ms

translate.google.com.	604800	IN	CNAME	www3.l.google.com.
www3.l.google.com.	300	IN	A	64.233.162.100
www3.l.google.com.	300	IN	A	64.233.162.113
www3.l.google.com.	300	IN	A	64.233.162.139
www3.l.google.com.	300	IN	A	64.233.162.102
www3.l.google.com.	300	IN	A	64.233.162.101
www3.l.google.com.	300	IN	A	64.233.162.138
;; Received 166 bytes from 216.239.32.10#53(ns1.google.com) in 43 ms

Выглядит громоздко, но все очень просто. Разберем FQDN домена translate.google.com.

  • . — FQDN домена начинается (читать справа налево) с точки. Это домен нулевого уровня или root domain.
  • com – доменная зона 1 уровня
  • google — доменная зона 2 уровня
  • translate — доменная зона 3 уровня

DNS запрос команды dig начинается с резолва домена точка. Ответ всегда одинаковый это домены вида *. root-servers.net.

.                                              1670      IN           NS          a.root-servers.net.

Это означает что спросить о судьбе доменов уровнем ниже нужно у серверов *. root-servers.net.

У серверов *. root-servers.net. мы узнаем какие DNS-сервера обслуживают домен первого уровня com.

com.                                     172800  IN           NS          l.gtld-servers.net.

Это сервера вида *.gtld-servers.net. У них мы узнаем о DNS-серверах домена google.com:

google.com.                      172800  IN           NS          ns1.google.com.

А уже эти сервера содержат информацию о нужном нам домене:

translate.google.com.   604800  IN           CNAME www3.l.google.com.

Мы выяснили что домен translate.google.com. содержит в своей зоне CNAME запись www3.l.google.com. Осталось только узнать А или AAAA записи домена www3.l.google.com.

www3.l.google.com.     300         IN           A             64.233.162.100

К ним и будет обращаться браузер, если указать translate.google.com. в адресной строке.

Типы DNS-записей

В работе с сайтами нас интересуют только 4:
A-запись – запись указывающая на IPv4 сервера, где размещен сайт.
AAAA-запись – указывает на IPv6 сервера, где размещен сайт.
CNAME-запись – указывает на другой домен.
TXT-запись – любая текстовая информация в размере 255 байт. Зачастую используется для подтверждения владения доменом.

Делегирование домена

После того как домен приобретен его надо делегировать на какие-нибудь DNS-сервера. Это могут быть DNS-сервера хостинга, регистратора или любые другие, например:

dns1.yandex.net.
dns2.yandex.net.

в этом случае DNS-записи домена необходимо создавать в панели управления yandex.

Как узнать куда делегирован домен?

Обновление записей

Каждая запись имеет TTL – time to live

www3.l.google.com.     300         IN           A             64.233.162.100

В данном примере 300 секунд. Это указание кэширующему DNS-серверу как часто надо обновлять эту запись. Если запись меняется, необходимо подождать указанное время до вступления изменений в силу.

Файл hosts

Этот файл наследие времен, когда DNS-серверов не было и можно было уместить все записи в один файл. Однако, и сейчас он бывает полезен, например, если мы изменили DNS-запись домена и увидели в TTL 84600, а ждать сутки не хочется. В этом случае можно создать запись в файле hosts следующего содержания:

64.233.162.100 www3.l.google.com.

В этом случае наш компьютер будет знать, что содержимое сайта www3.l.google.com. нужно искать на сервере с IP-адресом 64.233.162.100.

Также hosts может быть полезен при развертывании локального сервера для тестов.

Где искать:

Windows: c:\windows\system32\drivers\etc\hosts
Linux: /etc/hosts
macOS: /private/etc/hosts