DNS. Как это работает

Материал из Wiki
Версия от 21:14, 9 ноября 2023; Cless (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Как работает система DNS?

https://wiki.diphost.ru/NS-server

Когда вы набираете в браузере доменное имя MYDOMAIN.COM, ваш компьютер для первым делом обращается к DNS-серверу, указанному в настройках вашего соединения с интернетом.

DNS-сервер нужен для того, чтобы преобразовать запрошенное доменное имя в IP-адрес.

DNS-сервер обращается к одному из корневых NS-серверов интернета, IP-АДРЕСА КОТОРЫХ ЖЕСТКО ЗАДАНЫ И ИЗВЕСТНЫ.

В ответ КОРНЕВОЙ СЕРВЕР ОТДАЕТ DNS-СЕРВЕРУ СПИСОК IP-АДРЕСОВ СЕРВЕРОВ, НА КОТОРЫХ РАСПОЛОЖЕНА ЗОНА .COM

Выглядит этот список примерно так:

a.gtld-servers.net.     160060  IN      A       192.5.6.30

a.gtld-servers.net.     160060  IN      AAAA    2001:503:a83e::2:30

b.gtld-servers.net.     160060  IN      A       192.33.14.30

b.gtld-servers.net.     160060  IN      AAAA    2001:503:231d::2:30

c.gtld-servers.net.     160060  IN      A       192.26.92.30

d.gtld-servers.net.     160060  IN      A       192.31.80.30

e.gtld-servers.net.     160060  IN      A       192.12.94.30

f.gtld-servers.net.     160060  IN      A       192.35.51.30

g.gtld-servers.net.     160060  IN      A       192.42.93.30

h.gtld-servers.net.     160060  IN      A       192.54.112.30

i.gtld-servers.net.     160060  IN      A       192.43.172.30

j.gtld-servers.net.     160060  IN      A       192.48.79.30

k.gtld-servers.net.     160060  IN      A       192.52.178.30

l.gtld-servers.net.     160060  IN      A       192.41.162.30

m.gtld-servers.net.     160060  IN      A       192.55.83.30

DNS-сервер обращается к одному из NS-серверов зоны .COM (Допустим, a.gtld-servers.net - 192.5.6.30) и запрашивает список NS-серверов для домена MYDOMAIN.COM. Эти NS-сервера называются NS-серверами, на которые делегирован домен.

ns1.mydomain.com.       172800  IN      A       66.96.142.148

ns2.mydomain.com.       172800  IN      A       65.254.254.172

ns3.mydomain.com.       172800  IN      A       66.96.142.146

ns4.mydomain.com.       172800  IN      A       65.254.254.170

После чего обращается к одному из полученного списка NS-серверов и запрашивает уже информацию относительно домена MYDOMAIN.COM. Пример ответа:

mydomain.com.           3248    IN      MX      0 mail.mydomain.com.

mydomain.com.           86048   IN      TXT     "v=spf1 ip4:38.113.1.0/24 ip4:38.113.20.0/24 ip4:12.45.243.128/26 ip4:65.254.224.0/19 ?all"

mydomain.com.           2208    IN      SOA     ns1.mydomain.com. hostmaster.mydomain.com. 1335787408 16384 2048 1048576 2560

mydomain.com.           248     IN      A       65.254.242.180

mydomain.com.           1448    IN      NS      ns3.mydomain.com.

mydomain.com.           1448    IN      NS      ns2.mydomain.com.

mydomain.com.           1448    IN      NS      ns4.mydomain.com.

mydomain.com.           1448    IN      NS      ns1.mydomain.com.

AUTHORITY SECTION

mydomain.com.           1448    IN      NS      ns3.mydomain.com.

mydomain.com.           1448    IN      NS      ns4.mydomain.com.

mydomain.com.           1448    IN      NS      ns2.mydomain.com.

mydomain.com.           1448    IN      NS      ns1.mydomain.com.

ADDITIONAL SECTION

ns1.mydomain.com.       167564  IN      A       66.96.142.148

ns2.mydomain.com.       167564  IN      A       65.254.254.172

ns3.mydomain.com.       126551  IN      A       66.96.142.146

ns4.mydomain.com.       126551  IN      A       65.254.254.170

DNS-сервер отдает вашему компьютеру полученную информацию и он обращается к нужному IP-адресу.

Что такое делегирование домена

Делегированием домена называется передача корневым сервером зоны права размещения домена на определенном NS-сервере.

Для примера, корневые сервера ДЕЛЕГИРУЮТ зону .COM на серверы, которые будут за нее отвечать.

Серверы зоны .COM ДЕЛЕГИРУЮТ домен MYDOMAIN.COM на NS-сервера хостинг-провайдера или на какие-либо другие.

Само делегирование означает, что на корневом сервере для домена присутствуют записи IN NS, указывающие на NS-сервер, на котором размещена информация по домену.

Обратите внимание, ДЕЛЕГИРОВАНИЕ ПРЕДПОЛАГАЕТ НАЛИЧИЕ ТОЛЬКО ЗАПИСЕЙ IN NS и никаких других.

Поэтапно выясним IP адрес нашего домена через цепочку ручных запросов

Запрашиваем корневой сервер на предмет получения IP-адреса домена cless.pro

Он не знает такой домен, но в секции ;; AUTHORITY SECTION: говорит нам какой NS сервер отвечает за домен pro.

dig cless.pro @d.root-servers.net

   ...

   ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> cless.pro @d.root-servers.net

   ;; global options: +cmd

   ;; Got answer:

   ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11641

   ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 13

   ;; WARNING: recursion requested but not available

   ;; OPT PSEUDOSECTION:

   ; EDNS: version: 0, flags:; udp: 1450

   ;; QUESTION SECTION:

   ;cless.pro.                     IN      A

   ;; AUTHORITY SECTION:

   pro.                    172800  IN      NS      a0.pro.afilias-nst.info.

   pro.                    172800  IN      NS      a2.pro.afilias-nst.info.

   pro.                    172800  IN      NS      b0.pro.afilias-nst.org.

   pro.                    172800  IN      NS      b2.pro.afilias-nst.org.

   pro.                    172800  IN      NS      c0.pro.afilias-nst.info.

   pro.                    172800  IN      NS      d0.pro.afilias-nst.org.

   ;; ADDITIONAL SECTION:

   a0.pro.afilias-nst.info. 172800 IN      A       199.182.0.1

   a2.pro.afilias-nst.info. 172800 IN      A       199.182.32.1

   b0.pro.afilias-nst.org. 172800  IN      A       199.182.1.1

   b2.pro.afilias-nst.org. 172800  IN      A       199.182.40.1

   c0.pro.afilias-nst.info. 172800 IN      A       199.182.16.1

   d0.pro.afilias-nst.org. 172800  IN      A       199.182.17.1

   a0.pro.afilias-nst.info. 172800 IN      AAAA    2001:500:c0::1

   a2.pro.afilias-nst.info. 172800 IN      AAAA    2001:500:e0::1

   b0.pro.afilias-nst.org. 172800  IN      AAAA    2001:500:c1::1

   b2.pro.afilias-nst.org. 172800  IN      AAAA    2001:500:e1::1

   c0.pro.afilias-nst.info. 172800 IN      AAAA    2001:500:d0::1

   d0.pro.afilias-nst.org. 172800  IN      AAAA    2001:500:d1::1

   ;; Query time: 73 msec

   ;; SERVER: 199.7.91.13#53(199.7.91.13)

   ;; WHEN: Sun Feb 20 19:17:11 MSK 2022

   ;; MSG SIZE  rcvd: 443

   ...

Запрашиваем информацию о cless.pro у a0.pro.afilias-nst.info

Он не знает такой домен, но в секции ;; AUTHORITY SECTION: говорит нам какой NS сервер отвечает за домен cless.pro.

dig cless.pro @a0.pro.afilias-nst.info

   ...

   ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> cless.pro @a0.pro.afilias-nst.info

   ;; global options: +cmd

   ;; Got answer:

   ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53591

   ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1

   ;; WARNING: recursion requested but not available

   ;; OPT PSEUDOSECTION:

   ; EDNS: version: 0, flags:; udp: 4096

   ;; QUESTION SECTION:

   ;cless.pro.                     IN      A

   ;; AUTHORITY SECTION:

   cless.pro.              3600    IN      NS      ns1.reg.ru.

   cless.pro.              3600    IN      NS      ns2.reg.ru.

   ;; Query time: 317 msec

   ;; SERVER: 199.182.0.1#53(199.182.0.1)

   ;; WHEN: Sun Feb 20 19:18:21 MSK 2022

   ;; MSG SIZE  rcvd: 80

   ...

Запрашиваем информацию о cless.pro у ns1.reg.ru

Он резолвит домен в IP в секции ;; ANSWER SECTION:

dig cless.pro @ns1.reg.ru

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> cless.pro @ns1.reg.ru

global options
+cmd
Got answer
->>HEADER<<- opcode
QUERY, status
NOERROR, id: 39778
flags
qr aa rd; QUERY
1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
WARNING
recursion requested but not available
OPT PSEUDOSECTION
EDNS
version: 0, flags:; udp: 1680
QUESTION SECTION
cless.pro.                     IN      A
ANSWER SECTION

cless.pro.              86400   IN      A       78.132.136.195

Query time
29 msec
SERVER
176.99.13.13#53(176.99.13.13)
WHEN
Sun Feb 20 19
18:38 MSK 2022
MSG SIZE  rcvd
54

Дочерние NS-серверы (Child Nameservers)

!!! ВАЖНЫЙ МОМЕНТ

Иногда NS-серверы для домена находятся на его поддоменах.

НАПРИМЕР

Домен cless.pro делегирован на NS-серверы ns1.reg.ru, ns2.reg.ru

Как же это возможно? Ведь чтобы обратиться к этим NS-серверам нужно узнать их ip-адрес.

Все просто - корневой сервер зоны .RU при таком варианте требует указания не только доменных имен NS-серверов, но и их ip-адресов в А-записях.

Поэтому корневой DNS-сервер зоны .RU знает, куда обратиться за подробностями.

НАПРИМЕР

- домен cless.pro делегирован на NS-серверы ns1.reg.ru, ns2.reg.ru, которые находятся в зоне .RU

- запрашиваем информацию о NS-серверах, обслуживающих зону .RU (!!! НЕ ЗОНУ "PRO." !!!), видим что её обслуживает корневой NS-сервер a.dns.ripn.net.

dig ru. @d.root-servers.net

   ...

   ;; AUTHORITY SECTION:

   ru.                     172800  IN      NS      a.dns.ripn.net.

   ...

- запрашиваем информацию о ns1.reg.ru. у корневого NS-сервера a.dns.ripn.net. dig ns1.reg.ru. @a.dns.ripn.net.

...

AUTHORITY SECTION

REG.RU.                 345600  IN      NS      ns2.reg.RU.

REG.RU.                 345600  IN      NS      ns1.reg.RU.

ADDITIONAL SECTION

ns1.reg.ru.             345600  IN      A       194.58.117.15

...

- видим что на корневом NS-сервере зоны .RU действительно есть А-запись с информацией об IP NS-сервера ns1.reg.ru.