Назад | Перейти на главную страницу

Заставить инструмент раскопок возвращать нам ответы с корневых серверов

При выполнении dig на каком-либо сайте (например, www.nasa.gov) с разных сайтов с онлайн-инструментами поиска (в данном случае http://networking.ringofsaturn.com/Tools/dig.php и http://www.kloth.net/services/dig.php), Я заметил, что у них разные ответы. Я думаю, это должно означать, что ответы, которые каждый из них получает, исходят не от корневых DNS-серверов, а от локальных (например, их интернет-провайдеров).

Я бы хотел знать, как заставить инструмент копания возвращать информацию с корневых серверов. Это вообще возможно?

Спасибо

Чтобы получить достоверную информацию с помощью dig, вы обычно используете комбинацию + trace и @server. Например, если мне нужна авторитетная информация о www.google.com, я бы сделал это так:

# dig +trace NS google.com

; <<>> DiG 9.4.2-P2 <<>> +trace NS google.com
;; global options:  printcmd
.                       3600000 IN      NS      L.ROOT-SERVERS.NET.
.                       3600000 IN      NS      M.ROOT-SERVERS.NET.
.                       3600000 IN      NS      D.ROOT-SERVERS.NET.
.                       3600000 IN      NS      I.ROOT-SERVERS.NET.
.                       3600000 IN      NS      H.ROOT-SERVERS.NET.
.                       3600000 IN      NS      F.ROOT-SERVERS.NET.
.                       3600000 IN      NS      C.ROOT-SERVERS.NET.
.                       3600000 IN      NS      G.ROOT-SERVERS.NET.
.                       3600000 IN      NS      B.ROOT-SERVERS.NET.
.                       3600000 IN      NS      K.ROOT-SERVERS.NET.
.                       3600000 IN      NS      E.ROOT-SERVERS.NET.
.                       3600000 IN      NS      A.ROOT-SERVERS.NET.
.                       3600000 IN      NS      J.ROOT-SERVERS.NET.
;; Received 244 bytes from 192.168.0.42#53(192.168.0.42) in 3 ms

com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
;; Received 488 bytes from 128.8.10.90#53(D.ROOT-SERVERS.NET) in 129 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 164 bytes from 192.31.80.30#53(d.gtld-servers.net) in 149 ms

google.com.             345600  IN      NS      ns4.google.com.
google.com.             345600  IN      NS      ns3.google.com.
google.com.             345600  IN      NS      ns2.google.com.
google.com.             345600  IN      NS      ns1.google.com.
;; Received 164 bytes from 216.239.32.10#53(ns1.google.com) in 32 ms

Теперь у меня есть серверы имен, перечисленные для google.com, а также IP-адрес одного из них. Я могу напрямую запросить у этого сервера имен записи:

# dig www.google.com @216.239.32.10

; <<>> DiG 9.4.2-P2 <<>> www.google.com @216.239.32.10
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24224
;; flags: qr aa rd; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         604800  IN      CNAME   www.l.google.com.
www.l.google.com.       300     IN      A       209.85.148.104
www.l.google.com.       300     IN      A       209.85.148.103
www.l.google.com.       300     IN      A       209.85.148.99
www.l.google.com.       300     IN      A       209.85.148.105
www.l.google.com.       300     IN      A       209.85.148.106
www.l.google.com.       300     IN      A       209.85.148.147

;; Query time: 34 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Fri Apr 29 15:22:40 2011
;; MSG SIZE  rcvd: 148

Корневые серверы не отвечают на запросы для доменов второго уровня. Серверы gTLD не отвечают на запросы для доменов второго уровня (за исключением возврата серверов имен для доменов второго уровня). Авторитарные серверы имен для домена второго уровня отвечают на запросы для этого домена второго уровня. Вы можете запросить gTLD, чтобы найти серверы имен для определенного домена, а затем запросить у этих серверов имен записи ресурсов в этом домене.

Корневые серверы

----------------> Серверы gTLD

----------------------------------> Серверы авторизации имен

-------------------------------------------------- -------------------> Записи ресурсов

Корневым серверам никогда не следует запрашивать рекурсивный запрос (т.е.) для server.example.tld, только о серверах, обрабатывающих домены верхнего уровня (.tld в примере).

Однако я думаю, что вы хотите получить ответ от авторитетного сервера. Для этого выполните:

1) Запросите NS, т.е. поле сервера имен, вместо A - IPv4-адреса для домена nasa.gov

2) Измените поле сервера на один из серверов, полученных в пункте 1).

3) Задайте вопрос об адресе www.nasa.gov.

Конечно, такая же процедура работает для любого другого домена.

Процедура работает для раскопок CLI и с http://www.kloth.net/services/dig.php интерфейс.