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.
Как узнать куда делегирован домен?
На mac и linux можно поставить программу whois, так же это можно сделать на публичных сервисах (https://www.nic.ru/whois/).
Обновление записей
Каждая запись имеет 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