Инструменты пользователя

Инструменты сайта


Боковая панель


Программное обеспечение
Черновики


Краткая инструкция

howto:utils:dns

Содержание

Диагностика DNS

host

Программа host(1) существует во многих вариантах. В FreeBSD она умеет сообщать практически ту же информацию, что и dig(1), но в других системах это может быть не так. Здесь мы приведём примеры на базе FreeBSD , как наиболее полные.

Запрос IP по адресу:

$  host mail.ru
mail.ru has address 194.67.57.26
mail.ru mail is handled (pri=10) by mxs.mail.ru

Как видно, нам сообщили не только IP машины mail.ru, но и некоторую дополнительную информацию (имя почтовой машины и её приоритет). Эта информация приходит от сервера DNS в том же UDP пакете и её получение не требует со стороны программы host(1) никаких специальных действий. И всё же, некоторые варианты этой программы могут не сообщать всей информации.

Программе можно явно указать сервер DNS, в этом случае запрос будет сделан к нему:

$  host mail.ru 194.67.23.130
Using domain server 194.67.23.130:

mail.ru has address 194.67.57.26
mail.ru mail is handled (pri=10) by mxs.mail.ru

И наконец, можно запросить конкретный тип записи:

$  host -t NS mail.ru
mail.ru name server ns2.mail.ru
mail.ru name server ns3.mail.ru
mail.ru name server ns4.mail.ru
mail.ru name server ns5.mail.ru
mail.ru name server ns.mail.ru
mail.ru name server ns1.mail.ru
$  host -t SOA mail.ru
mail.ru start of authority      ns.mail.ru hostmaster.mail.ru (
                        3209013119      ;serial (version)
                        300     ;refresh period
                        900     ;retry refresh this often
                        172800  ;expiration period
                        300     ;minimum TTL
                        )

Опция -v включает режим verbose.

$  host -t NS -v mail.ru
Trying null domain
rcode = 0 (Success), ancount=6
The following answer is not authoritative:
The following answer is not verified as authentic by the server:
mail.ru 16141 IN        NS      ns4.mail.ru
mail.ru 16141 IN        NS      ns5.mail.ru
mail.ru 16141 IN        NS      ns.mail.ru
mail.ru 16141 IN        NS      ns1.mail.ru
mail.ru 16141 IN        NS      ns2.mail.ru
mail.ru 16141 IN        NS      ns3.mail.ru
Additional information:
ns.mail.ru      153899 IN       A       194.67.23.130
ns1.mail.ru     299802 IN       A       194.67.57.103
ns2.mail.ru     167593 IN       A       194.67.57.104
ns3.mail.ru     278118 IN       A       194.67.23.17
ns4.mail.ru     278118 IN       A       194.67.57.4
ns5.mail.ru     278118 IN       A       194.67.23.232
$  host -t SOA -v mail.ru
Trying null domain
rcode = 0 (Success), ancount=1
The following answer is not authoritative:
The following answer is not verified as authentic by the server:
mail.ru 21455 IN        SOA     ns.mail.ru hostmaster.mail.ru (
                        3209013119      ;serial (version)
                        300     ;refresh period
                        900     ;retry refresh this often
                        172800  ;expiration period
                        300     ;minimum TTL
                        )
For authoritative answers, see:
mail.ru 15127 IN        NS      ns.mail.ru
mail.ru 15127 IN        NS      ns1.mail.ru
mail.ru 15127 IN        NS      ns2.mail.ru
mail.ru 15127 IN        NS      ns3.mail.ru
mail.ru 15127 IN        NS      ns4.mail.ru
mail.ru 15127 IN        NS      ns5.mail.ru
Additional information:
ns.mail.ru      152885 IN       A       194.67.23.130
ns1.mail.ru     298788 IN       A       194.67.57.103
ns2.mail.ru     166579 IN       A       194.67.57.104
ns3.mail.ru     277104 IN       A       194.67.23.17
ns4.mail.ru     277104 IN       A       194.67.57.4
ns5.mail.ru     277104 IN       A       194.67.23.232

В последнем случае нам даже явно рекомендуют обращаться за информацией на авторитетные серверы и указывают их адреса. С опцией -v отчёт программы host(1) становится похож на отчёт dig(1) (см. ниже) и начинает повтрять синтаксис файла зоны.

dig

Утилита dig(1) более «разговорчива». Одна из особенностей её отчётов состоит в том, что они даются сразу в формате файла зоны:

$  dig mail.ru

; <<>> DiG 8.3 <<>> mail.ru
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9099
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6
;; QUERY SECTION:
;;      mail.ru, type = A, class = IN

;; ANSWER SECTION:
mail.ru.                1h56m42s IN A   194.67.57.26

;; AUTHORITY SECTION:
mail.ru.                4h21m12s IN NS  ns2.mail.ru.
mail.ru.                4h21m12s IN NS  ns3.mail.ru.
mail.ru.                4h21m12s IN NS  ns4.mail.ru.
mail.ru.                4h21m12s IN NS  ns5.mail.ru.
mail.ru.                4h21m12s IN NS  ns.mail.ru.
mail.ru.                4h21m12s IN NS  ns1.mail.ru.

;; ADDITIONAL SECTION:
ns.mail.ru.             1d18h37m10s IN A  194.67.23.130
ns1.mail.ru.            3d11h8m53s IN A  194.67.57.103
ns2.mail.ru.            1d22h25m24s IN A  194.67.57.104
ns3.mail.ru.            3d5h7m29s IN A  194.67.23.17
ns4.mail.ru.            3d5h7m29s IN A  194.67.57.4
ns5.mail.ru.            3d5h7m29s IN A  194.67.23.232

;; Total query time: 9 msec
;; FROM: aluminum.mccme.ru to SERVER: 62.117.108.2
;; WHEN: Wed Apr  5 14:37:57 2006
;; MSG SIZE  sent: 25  rcvd: 244

Символ ; в файле зоны является комментарием. Заметим, что мы не требовали от программы dig(1) информацию о серверах NS, и всё же он запросил её у сервера DNS. Разумеется, это не вся информация о зоне.

Попробуем запросить информацию о записях SOA и MX.

$  dig MX mail.ru

; <<>> DiG 8.3 <<>> MX mail.ru
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28695
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 7
;; QUERY SECTION:
;;      mail.ru, type = MX, class = IN

;; ANSWER SECTION:
mail.ru.                4h6m37s IN MX   10 mxs.mail.ru.

;; AUTHORITY SECTION:
mail.ru.                4h6m37s IN NS   ns2.mail.ru.
mail.ru.                4h6m37s IN NS   ns3.mail.ru.
mail.ru.                4h6m37s IN NS   ns4.mail.ru.
mail.ru.                4h6m37s IN NS   ns5.mail.ru.
mail.ru.                4h6m37s IN NS   ns.mail.ru.
mail.ru.                4h6m37s IN NS   ns1.mail.ru.

;; ADDITIONAL SECTION:
mxs.mail.ru.            2h4m39s IN A    194.67.23.20
ns.mail.ru.             1d18h22m35s IN A  194.67.23.130
ns1.mail.ru.            3d10h54m18s IN A  194.67.57.103
ns2.mail.ru.            1d22h10m49s IN A  194.67.57.104
ns3.mail.ru.            3d4h52m54s IN A  194.67.23.17
ns4.mail.ru.            3d4h52m54s IN A  194.67.57.4
ns5.mail.ru.            3d4h52m54s IN A  194.67.23.232

;; Total query time: 2 msec
;; FROM: aluminum.mccme.ru to SERVER: 62.117.108.2
;; WHEN: Wed Apr  5 14:52:31 2006
;; MSG SIZE  sent: 25  rcvd: 264

$  dig SOA mail.ru

; <<>> DiG 8.3 <<>> SOA mail.ru
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59976
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6
;; QUERY SECTION:
;;      mail.ru, type = SOA, class = IN

;; ANSWER SECTION:
mail.ru.                5h51m47s IN SOA  ns.mail.ru. hostmaster.mail.ru. (
                                        3209013119      ; serial
                                        5M              ; refresh
                                        15M             ; retry
                                        2D              ; expiry
                                        5M )            ; minimum

;; AUTHORITY SECTION:
mail.ru.                4h6m19s IN NS   ns5.mail.ru.
mail.ru.                4h6m19s IN NS   ns.mail.ru.
mail.ru.                4h6m19s IN NS   ns1.mail.ru.
mail.ru.                4h6m19s IN NS   ns2.mail.ru.
mail.ru.                4h6m19s IN NS   ns3.mail.ru.
mail.ru.                4h6m19s IN NS   ns4.mail.ru.

;; ADDITIONAL SECTION:
ns.mail.ru.             1d18h22m17s IN A  194.67.23.130
ns1.mail.ru.            3d10h54m IN A   194.67.57.103
ns2.mail.ru.            1d22h10m31s IN A  194.67.57.104
ns3.mail.ru.            3d4h52m36s IN A  194.67.23.17
ns4.mail.ru.            3d4h52m36s IN A  194.67.57.4
ns5.mail.ru.            3d4h52m36s IN A  194.67.23.232

;; Total query time: 6 msec
;; FROM: aluminum.mccme.ru to SERVER: 62.117.108.2
;; WHEN: Wed Apr  5 14:52:50 2006
;; MSG SIZE  sent: 25  rcvd: 275

Для запроса к конкретному серверу DNS его адрес необходимо предварять символом at:

$  dig mail.ru @194.67.23.130

; <<>> DiG 8.3 <<>> mail.ru @194.67.23.130
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62910
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6
;; QUERY SECTION:
;;      mail.ru, type = A, class = IN

;; ANSWER SECTION:
mail.ru.                6H IN A         194.67.57.26

;; AUTHORITY SECTION:
mail.ru.                6H IN NS        ns.mail.ru.
mail.ru.                6H IN NS        ns1.mail.ru.
mail.ru.                6H IN NS        ns2.mail.ru.
mail.ru.                6H IN NS        ns4.mail.ru.
mail.ru.                6H IN NS        ns5.mail.ru.
mail.ru.                6H IN NS        ns3.mail.ru.

;; ADDITIONAL SECTION:
ns.mail.ru.             6H IN A         194.67.23.130
ns1.mail.ru.            6H IN A         194.67.57.103
ns2.mail.ru.            6H IN A         194.67.57.104
ns4.mail.ru.            6H IN A         194.67.57.4
ns5.mail.ru.            6H IN A         194.67.23.232
ns3.mail.ru.            6H IN A         194.67.23.17

;; Total query time: 91 msec
;; FROM: aluminum.mccme.ru to SERVER: 194.67.23.130
;; WHEN: Wed Apr  5 15:05:16 2006
;; MSG SIZE  sent: 25  rcvd: 244

Заметьте, что в этом запросе размеры таймаутов стали более «круглыми» — ровно по 6 часов. Причина в том, что мы задали вопрос авторитетному за эту зону серверу. Ответы, которые мы получали до сих пор мы брали из кешей неавторитетных серверов, поэтому в качестве TTL мы получали время указывающее на то, сколько осталось жить в кеше той или иной записи.

Давайте попробуем узнать с помощью команды dig(1)адреса серверов отвечающих за корневую зону (.) и время жизни записей о корневых серверах.

$ dig NS .

; <<>> DiG 8.3 <<>> NS .
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5359
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
;; QUERY SECTION:
;;      ., type = NS, class = IN

;; ANSWER SECTION:
.                       5d1h8m12s IN NS  F.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  G.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  H.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  I.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  J.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  K.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  L.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  M.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  A.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  B.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  C.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  D.ROOT-SERVERS.NET.
.                       5d1h8m12s IN NS  E.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
J.ROOT-SERVERS.NET.     6d1h8m12s IN A  192.58.128.30

;; Total query time: 2 msec
;; FROM: aluminum.mccme.ru to SERVER: 62.117.108.2
;; WHEN: Thu Apr  6 11:37:56 2006
;; MSG SIZE  sent: 17  rcvd: 244

Очень хорошо, теперь мы знаем что думает о корневых серверах, в настоящий момент обслуживающий нас сервер DNS. Мы видим, что время жизни информации о корневых серверах истечёт через пять дней, один час, восемь минут, двенадцать секунд. Кстати нам, кроме имён корневых серверов, в разделе ADDITIONAL SECTION сказали ещё и адрес одного из серверов. Давайте зададим этот вопрос снова, но теперь не нашему серверу DNS, а сервру j.root-servers.net. с адресом IP 192.58.128.30. Он авторитетен за корневую зону и полученная от него информация будет истиной в последней инстанции.

$  dig NS . @192.58.128.30

; <<>> DiG 8.3 <<>> NS . @192.58.128.30
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50893
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;;      ., type = NS, class = IN

;; ANSWER SECTION:
.                       6D IN NS        E.ROOT-SERVERS.NET.
.                       6D IN NS        D.ROOT-SERVERS.NET.
.                       6D IN NS        A.ROOT-SERVERS.NET.
.                       6D IN NS        H.ROOT-SERVERS.NET.
.                       6D IN NS        C.ROOT-SERVERS.NET.
.                       6D IN NS        G.ROOT-SERVERS.NET.
.                       6D IN NS        F.ROOT-SERVERS.NET.
.                       6D IN NS        B.ROOT-SERVERS.NET.
.                       6D IN NS        J.ROOT-SERVERS.NET.
.                       6D IN NS        K.ROOT-SERVERS.NET.
.                       6D IN NS        L.ROOT-SERVERS.NET.
.                       6D IN NS        M.ROOT-SERVERS.NET.
.                       6D IN NS        I.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
E.ROOT-SERVERS.NET.     5w6d16h IN A    192.203.230.10
D.ROOT-SERVERS.NET.     5w6d16h IN A    128.8.10.90
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
H.ROOT-SERVERS.NET.     5w6d16h IN A    128.63.2.53
C.ROOT-SERVERS.NET.     5w6d16h IN A    192.33.4.12
G.ROOT-SERVERS.NET.     5w6d16h IN A    192.112.36.4
F.ROOT-SERVERS.NET.     5w6d16h IN A    192.5.5.241
B.ROOT-SERVERS.NET.     5w6d16h IN A    192.228.79.201
J.ROOT-SERVERS.NET.     5w6d16h IN A    192.58.128.30
K.ROOT-SERVERS.NET.     5w6d16h IN A    193.0.14.129
L.ROOT-SERVERS.NET.     5w6d16h IN A    198.32.64.12
M.ROOT-SERVERS.NET.     5w6d16h IN A    202.12.27.33
I.ROOT-SERVERS.NET.     5w6d16h IN A    192.36.148.17

;; Total query time: 299 msec
;; FROM: aluminum.mccme.ru to SERVER: 192.58.128.30
;; WHEN: Thu Apr  6 11:44:56 2006
;; MSG SIZE  sent: 17  rcvd: 436

Как видим, истинное время жизни составляет без малого шесть недель (1000 часов). При помощи такого большого TTL сервера пытаются снизить нагрузку на себя.

Поскольку команда dig(1) выдаёт информацию в формате файла зоны, если мы вдруг почему-то потеряли файл с настройками зоны hint, мы можем сохранить вывод данной команды в файл и использовать его.

Наконец, мы можем сделать запрос записи типа TXT, содержащей короткое стихотворение. Это стихотворение мы записали в файл зоны раньше.

$  dig TXT poem.house.hcn-strela.ru

; <<>> DiG 9.3.2 <<>> TXT poem.house.hcn-strela.ru
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8468
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1

;; QUESTION SECTION:
;poem.house.hcn-strela.ru.      IN      TXT

;; ANSWER SECTION:
poem.house.hcn-strela.ru. 36000 IN      TXT     "The Road goes ever on
        and on" "Down from the door where it began." "Now far ahead the
        Road has gone," "And I must follow, if I can," "Purshuing it
        with eager feet," "Until it joins some larger way" "Where many
        paths and errands meet." "And whither then? I cannot say."

;; AUTHORITY SECTION:
house.hcn-strela.ru.    36000   IN      NS      ns.hcn-strela.ru.
house.hcn-strela.ru.    36000   IN      NS      ns1.hcn-strela.ru.
house.hcn-strela.ru.    36000   IN      NS      ns.house.hcn-strela.ru.

;; ADDITIONAL SECTION:
ns.house.hcn-strela.ru. 36000   IN      A       83.102.236.196

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Feb 17 12:05:09 2007
;; MSG SIZE  rcvd: 376

nslookup

nslookup(1) самая древняя программа из этих трёх. Кроме всего прочего она интересна ещё и тем, что входит в стандартную поставку большинства операционных систем компании MicroSoft.

Её синтаксис несколько напоминает синтаксис команды host(1):

$  nslookup mail.ru
Server:  ns.mccme.ru
Address:  62.117.108.2

Non-authoritative answer:
Name:    mail.ru
Address:  194.67.57.26

$  nslookup mail.ru 194.67.23.130
Server:  ns.mail.ru
Address:  194.67.23.130

Name:    mail.ru
Address:  194.67.57.26

Но главная изюминка nslookup(1) состоит в том, что она умеет работать интерактивно:

$  nslookup
Default Server:  ns.mccme.ru
Address:  62.117.108.2

>  server 194.67.23.130
Default Server:  ns.mail.ru
Address:  194.67.23.130

>  set type=MX
>  mail.ru
Server:  ns.mail.ru
Address:  194.67.23.130

mail.ru preference = 10, mail exchanger = mxs.mail.ru
mail.ru nameserver = ns.mail.ru
mail.ru nameserver = ns1.mail.ru
mail.ru nameserver = ns2.mail.ru
mail.ru nameserver = ns4.mail.ru
mail.ru nameserver = ns5.mail.ru
mail.ru nameserver = ns3.mail.ru
mxs.mail.ru     internet address = 194.67.23.20
ns.mail.ru      internet address = 194.67.23.130
ns1.mail.ru     internet address = 194.67.57.103
ns2.mail.ru     internet address = 194.67.57.104
ns4.mail.ru     internet address = 194.67.57.4
ns5.mail.ru     internet address = 194.67.23.232
ns3.mail.ru     internet address = 194.67.23.17
>  set type=SOA
>  mail.ru
Server:  ns.mail.ru
Address:  194.67.23.130

mail.ru
        origin = ns.mail.ru
        mail addr = hostmaster.mail.ru
        serial = 3209013119
        refresh = 300 (5M)
        retry   = 900 (15M)
        expire  = 172800 (2D)
        minimum ttl = 300 (5M)
mail.ru nameserver = ns.mail.ru
mail.ru nameserver = ns1.mail.ru
mail.ru nameserver = ns2.mail.ru
mail.ru nameserver = ns4.mail.ru
mail.ru nameserver = ns5.mail.ru
mail.ru nameserver = ns3.mail.ru
ns.mail.ru      internet address = 194.67.23.130
ns1.mail.ru     internet address = 194.67.57.103
ns2.mail.ru     internet address = 194.67.57.104
ns4.mail.ru     internet address = 194.67.57.4
ns5.mail.ru     internet address = 194.67.23.232
ns3.mail.ru     internet address = 194.67.23.17
>  exit

Source: http://bezopasnik.org/unix/dok/BSDA-course/ch06s05.html

howto/utils/dns.txt · Последние изменения: 2019/01/17 14:14 — Алексей Кожевников