В FreeBSD есть несколько инструментов для проверки информации DNS. Поскольку большинство серверов DNS работают по протоколу передачи дейтаграмм пользователя (User Datagram Protocol, UDP - глава 6), вы не можете применить telnet и непосредственно обратиться к серверу, как в случае с электронной почтой и веб-сервисом (о них речь пойдет позже). Доступ к информации DNS можно получить только с помощью host(l) и dig(l).
Команда host(1)
Для быстрого получения IP-адреса хоста применяйте команду host(l). Например, адрес веб-страницы моего издателя можно получить так:
# host www.nostarch.com
www.nostarch.com has address 72.32.92.4
Это, пожалуй, самый простой вид запроса к DNS: «Вот тебе имя хоста, верни его IP-адрес». Другие, на первый взгляд, довольно простые запросы могут привести к более сложному результату:
# host www.cnn.com
О www.cnn.com is an alias for cnn.com. © cnn.com has address 64.236.24.20 cnn.com has address 64.236.24.28
© cnn.com mail is handled by 10 atlmail5.turner.com. cnn.com mail is handled by 20 nycmail2.turner.com.
Этот пример показывает, что один и тот же хост может иметь несколько псевдонимов - в данном случае имя www.cnn.com в действительности является псевдонимом хоста cnn.com О.
На самом деле, у хоста cnn.com восемь отдельных IP-адресов © (в примере они не показаны). Здесь мы также видим почтовые серверы, которые занимаются обработкой электронной почты для cnn.com ©.
Введя в веб-броузере адрес http://www.nostarch.com, пользователь, фактически, направляет веб-броузер на машину с именем www.nostarch.com за ее веб-страницей по умолчанию. Броузер отправляется по единственному IP-адресу, указанному для этой машины. Когда запрашивается адрес http://www.cnn.com, распознаватель выбирает один из IP-адресов этой машины и передает его броузеру. Подобным образом почтовые серверы отправляют электронную почту одному из хостов, идентифицированных как серверы обработки почты данного домена. Приложениям требуется не только IP-адрес, но IP-адрес имеет очень большое значение. Не найдя компьютер, на котором находится веб-страница, вы не получите эту страницу!
Углубляемся в детали
Команда host(l) довольно полезна, но она, безусловно, не предоставляет подробную информацию. Кроме того, вы не знаете, откуда взялись данные - из кэша на локальной машине, или же сервер имен добыл их на сервере, ответственном за этот домен. Программа dig(l) - это стандартная программа для нахождения подробной информации DNS. (Другой инструмент, nslookup(l), долго был популярен, но устарел и сейчас практически не используется.) У dig есть множество ключей, которые позволяют выявлять различные неполадки, связанные со службой имен. Здесь рассмотрены основные возможности этой программы.
Базовая форма ее вызова включает имя «dig» и имя хоста. Например, чтобы найти сведения о веб-сервере моего издателя, можно ввести такую команду:
# dig www.nostarch.com
О ; «>> DIG 9.3.2-Р1 <<» www.nostarch.com © ;; global options: printcmd © ;; Got answer:
;; -»HEADER«- opcode: QUERY, ©status: NOERROR, id: 33643 ;; flags: gr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 © ;; QUESTION SECTION: ;www.nostarch.com. IN A
© ;; ANSWER SECTION:
www.nostarch.com. 2550 IN A 72.32.92.4
© ;; AUTHORITY SECTION:
nostarch.com. 2550 IN NS ns2.laughingsguid.net.
nostarch.com. 2550 IN NS ns1.laughingsguid.net.
© ;; ADDITIONAL SECTION:
ns1.laughingsguid.net. 171750 IN A 72.3.155.219
ns2.laughingsguid.net. 171750 IN A 72.32.93.189
;; Query time: 58 msec ;; SERVER: 198.22.63.8#53(198.22.63.8) ;; WHEN: Mon Nov 20 18:43:22 2006 ;; MSG SIZE rcvd: 135
Как много строк! Но обычно с помощью программы dig(l) ищут источник проблем, а в этом случае лучше узнать больше, чем меньше. Проанализируем информацию.
Прежде всего, строки, начинающиеся точкой с запятой, являются комментариями, которые не имеют прямого отношения к ответу, но могут содержать немаловажную информацию. Например, первая строка сообщает версию программы dig О. Во второй строке представлены ключи, которые применяет dig ©. Поскольку в командной строке ключи не были указаны, dig выполняется с ключами по умолчанию.
Далее следует первый фрагмент интересующей нас информации: откуда программа dig получила ответ ©. Элемент status © содержит важное слово N0ERR0R, подтверждающее, что запрос был выполнен без ошибок. Если слова N0ERR0R нет, то что-то не так. Типичные ошибки: NXD0MAIN (домен не существует) или SERVFAIL (сервер имен знает о существовании этого домена, но не имеет никакой информации о нем).
Раздел QUESTION
В разделе QUESTION © приводится фактический запрос, выполненный программой dig. В данном примере раздел запроса выглядит так:
;www.nostarch.com. IN A
Первая строка начинается точкой с запятой, то есть перед нами комментарий. Это текст запроса к службе DNS в формальном представлении. Сначала dig подтверждает, что была запрошена информация об имени www.nostarch.com, но что означает IN A? DNS может обслуживать различные системы имен, а не только IP-адреса и имена хостов в стиле Интернета. Комбинация символов IN указывает, что это система имен Интернета - все имена доменов принадлежат к классу IN. Завершается запрос описанием его типа - в данном случае запрашивался адрес (А). У нас есть имя хоста, и мы хотим получить его адрес. Тип PTR (pointer - ссылка) мог бы означать запрос на обратное разрешение имени в DNS (когда имеется IP-адрес и по нему требуется получить имя хоста). При работе с dig вам будут встречаться и другие типы запросов.
Раздел ANSWER
Раздел ANSWER © содержит полученную информацию.
www.nostarch.com. 2550 IN А 72.32.92.4
Мы запросили информацию для хоста www.nostarch.com, поэтому первым указано имя. Далее следует число 2550 - это время жизни (Time- To-Live, TTL) данной информации. Наш локальный сервер имен может удерживать эту информацию в кэше в течение последующих 2250 секунд (примерно 42 минуты). По истечении этого времени локальный сервер имен удалит запись из кэша. Если кто-то еще раз запросит эту же информацию, локальный сервер DNS отправится за новым ответом. Пара символов IN означает данные Интернета, а А - что это адрес. В конце указан IP-адрес хоста www.nostarch.com - 72.32.92.4.
Раздел AUTHORITY
Для получения IP-адреса www.nostarch.com необходимо пройти по цепочке авторитетных серверов имен. В разделе AUTHORITY © перечислены серверы имен, ответственные за домен, - в нашем случае nsl.laugh- ingsquid.net и ns2.laughingsquid.net. Информация о www.nostarch.com будет находиться в кэше в течение 2550 секунд. И снова это адреса Интернета (IN).
Раздел ADDITIONAL
Наконец, в разделе ADDITIONAL © dig перечисляет IP-адреса всех хостов, представленных вместе с интересующим нас хостом. Программа dig определила авторитетные серверы имен для домена nostarch.com, но нам могут потребоваться IP-адреса этих серверов, чтобы в будущем выполнять DNS-запросы на получение информации о домене nostarch.com. Информация об авторитетных серверах имен получена, но обратите внимание на значение TTL - оно намного больше, чем то же значение в оригинальном запросе. Этот ответ будет храниться в кэше 171 750 секунд (48 часов). По истечении этого времени ваш локальный сервер имен удалит эти записи из кэша и снова обратится к корневому серверу имен за информацией об авторитетных серверах DNS для домена nostarch.com.
Запустите dig несколько раз с разными доменами и проанализируйте ее вывод.
Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2009. - 864 е., ил.