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

В чем разница между `dig` и` host` при запросе определенного сервера имен?

Я использовал эту команду, чтобы проверить, правильно ли я все настроил с поставщиком DNS:

host hostname.example.com ns1.example-nameserver.com

Насколько я могу судить, это спрашивает ns1.example-nameserver.com смотреть вверх hostname.example.com и сообщает ответ. Я получал ответ, что хост не найден, поэтому я подумал, что сделал это неправильно. Однако, не указав их сервер имен (что позволило серверу имен моего интернет-провайдера искать его), я получил правильный ответ (hostname это CNAME если это имеет значение). Я не мог этого понять, поэтому я поискал и нашел dig команда:

dig @ns1.example-nameserver.com hostname.example.com

Насколько я могу судить, это то же самое, что и host команда - просит определенный сервер имен найти хост. Поэтому я прихожу к выводу, что они должны делать это как-то иначе, и что кэширующие серверы имен должны использовать тот же метод, что и dig.

Мой вывод правильный или неправильный, если он правильный:

В чем разница между этими двумя методами поиска?

Если это неправильно:

Что я неправильно понимаю по поводу DNS и host и dig команды, которые привели меня к такому выводу?

Пример вывода:

$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases: 

Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)

$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org

; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;cardiff.tzmchapters.org.   IN  A

;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600   IN  CNAME   ghs.google.com.

;; AUTHORITY SECTION:
google.com.     3600    IN  SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600

;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE  rcvd: 128

host, dig, и nslookup все имеют большую часть одинаковых функций. Если вы спрашиваете (задаете конкретный вопрос DNS определенному серверу имен), dig и host (и действительно nslookup) ведут себя точно так же.

Для устранения неполадок DNS, dig является предпочтительным, потому что его выходной формат является более «сырым»: в своем выводе он напрямую показывает содержимое всех 4 полей в ответе DNS: вопрос, ответ, полномочия и дополнительные разделы (плюс флаги в заголовке), а также есть больше возможностей. host, с другой стороны, имеет более удобный формат вывода.

Если вам не нужна опция, которая есть у одной из команд, а у других нет, или часть информации, которую одна из них выводит, а другие нет, тогда все сводится к вопросу предпочтений.

Если вы используете имя хоста, отличное от FQDN, результаты могут отличаться, потому что host будет использовать поисковые домены в resolv.conf, в то время как dig нет по умолчанию.

Вы должны использовать +search вариант, если хочешь dig использовать resolv.conf (или добавьте его в ~/.digrc).

Например:

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

$ dig +short +search foo
10.1.2.3