Как производится опрос dns сервера
Зачастую, в силу того, что информация в сети распространяется не мгновенно, привязанные к серверу домены начинают работать не сразу. Чтобы не тратить время впустую, ожидая обновления кеша DNS, желательно сразу проверить настройку вашего DNS-сервера и убедиться, что по истечении 72 часов (это максимальное время обновления глобального кеша DNS) ваш домен заработает.
Содержание
Whois
Начать диагностику следует с запроса whois:
Также следует обратить внимание на пункты "state" и "Status" (для доменов в зонах .com./.org): в поле "state" обязательно должны быть пометки REGISTERED и DELEGATED, в поле "Status" - "Ok". Для отсеивания всего лишнего из вывода whois можно использовать следующую команду:
Замечание: для доменов в зоне .com/.org следует обращать внимание только на первые две записи "Name Server".
Информация во whois может обновляться в течение трех часов, поэтому если вы уже приобрели домен, нужно некоторое время подождать. Это также касается смены NS-серверов домена.
dig +trace
dig - утилита, предоставляющая пользователю интерфейс командной строки для отправки запросов к DNS-серверам. Первый запрос, который нас интересует, - трассировка запросов к домену:
dig с NS-серверов
В этом случае мы запрашиваем информацию напрямую с NS-серверов, которые планируется использовать для указанного домена. Пример для запроса с ns1 (для ns2 запрос выглядит аналогично):
Здесь в секции ANSWER SECTION был возвращен IP, в который NS-сервер резолвит домен, при нормальной работе этот IP должны возвращать оба NS-сервера, если IP отличается от того, что вы назначили домену на основном сервере, то зона нуждается в обновлении. В ISPmanager, к примеру, это можно сделать кнопкой "Передать" в разделе "Доменные имена", если же у вас DNS-сервер настроен без использования панели, то зона, как правило, будет обновлена самостоятельно, либо по истечении TTL зоны, либо по запросу вторичного сервера имен, если используется механизм уведомлений (опция notify yes в BIND).
Также NS-сервер может вообще не ответить:
В этом случае следует убедиться, что внешний DNS-сервер доступен и на нем не заблокирован 53-й порт (если есть такая возможность).
Еще один вариант - пустой ответ:
Также при возникновении каких-либо проблем на NS-серверах следует произвести диагностику первичного DNS-сервера.
dig с первичного сервера имен
Служит для запроса информации непосредственно с сервера, на котором создан домен:
Приведенный вариант - то, как должен отвечать правильно настроенный DNS-сервер, в случае возникновения проблем следует перейти к более детальному изучению обстановки на корневом сервере имен.
Вся необходимая для диагностики информация о проблемах, возникшим в работе первичного сервера имен, содержится в логах. По умолчанию DNS-сервер пишет в системный лог /var/log/messages, однако в конфигурации может быть задано ведение логов в отдельном файле, поэтому следует свериться с конфигурацией вашего DNS-сервера. В этом разделе рассмотрены наиболее часто встречающиеся в логах ошибки.
dig возвращает пустой ответ
Пустой ответ означает то, что на VDS либо отсутствует файл зоны этого домена, либо то, что при подгрузке файла зоны возникли проблемы. Также причиной может быть отсутствие A-записи в файле зоны. Если в первом случае достаточно будет создать домен на сервере (через ISPmanager или с помощью ручной правки файла зоны, если ISPmanager отсутствует), то во втором потребуется изучить логи DNS-сервера.
Некорректные права/владелец
Первая ошибка, которую мы рассмотрим - permission denied:
Ошибка говорит о некорректных правах на файл зоны или о некорректном владельце файла:
В данном случае проблема именно с владельцем, им должен быть пользователь, от которого запущен bind:
Также следует обратить внимание на права и группу самой директории /etc/bind/:
Отсутствие A-записей для дочерних NS
Следующая ошибка в логе:
CNAME и другие записи
Еще одна достаточно распространенная ошибка:
Записи A и CNAME не могут одновременно сосуществовать для одного домена/поддомена:
После устранения всех ошибок в логе должна появиться следующая запись:
Однако, даже после этого мы можем получить пустой ответ на запрос утилитой dig. Тут вариантов не так много:
Отсутствие A-записи
По умолчанию утилита dig запрашивает именно A-запись домена, поэтому пустой ответ может означать, что эта запись отсутствует. Пример A-записи:
Тут стоит отметить, что в некоторых случаях необходимости в A-записи нет, и чтобы проверить, как отдается та или иная запись, нужно сообщить утилите dig тип запрашиваемой записи:
Замечание: для получения всех записей можно указать тип ANY, также полезным будет ключ +short, позволяющий выводить сокращенный ответ:
Запрещены запросы к DNS-серверу
В конфигурации DNS-сервера могут быть разрешены запросы только с определенных адресов (как правило, разрешаются запросы только со slave-сервера). В случае с DNS-сервером BIND это директива allow-query<>. В этом случае мы увидим в логе следующую запись:
Вариантов диагностики в этом случае два: либо временно добавить свой адрес в список разрешенных, либо делать запросы непосредственно с сервера, на котором расположен slave. Если slave настроен так, чтобы делать запросы не с основного IP на интерфейсе, утилите dig нужно будет указать ключ «-b xxx.xxx.xxx.xxx», где xxx.xxx.xxx.xxx – IP на интерфейсе, с которого разрешены запросы к master:
Connection timed out
Данный вывод говорит о том, что на сервере, с которого производится запрос информации о доменном имени, возникли проблемы. Это может быть как неработающий named, так и блокировка 53 порта с помощью файрвола.
Transfer failed
Эта ошибка говорит о том, что в конфигурации DNS-сервера запрещен трансфер зоны на адрес, с которого пришел запрос (директива allow-transfer<> в BIND). В плане диагностики проблема идентична ситуации с ограничением на запросы.
Кроме того, эта команда используется для поиска и устранения проблем с DNS. В данном руководстве мы рассмотрим наиболее типичные примеры ее применения.
Синтаксис команды nslookup
Наиболее распространенные опции и типы аргументов мы рассмотрим ниже в соответствующих примерах.
Получение IP-адреса домена
Авторитативный и неавторитативный ответы
В приведенном результате присутствует фраза «Non- Authoritative Answer» (неавторитативный ответ).
Авторитативным считается ответ от DNS-сервера, на котором есть полная информация о зоне домена. Во многих случаях на DNS-серверах такой информации нет, они хранят кэш с результатами прошлых запросов, на которые был получен авторитативный ответ. Когда такой сервер получает запрос, он осуществляет поиск в файле кэша и при наличии необходимых данных отправляет их как неавторитативный ответ, как в рассматриваемых нами примерах.
Запрос записи MX
Запрос записи NS
Запись NS (Name Server, сервер имен) содержит соответствие доменного имени DNS-серверу, авторитативному для заданного домена. Ее можно получить при помощи опции -query=ns:
Запрос записи SOA
Запись SOA (Start of Authority, начальная запись зоны) содержит информацию о зоне домена, адрес его администратора, серийный номер и т.д. Ее можно получить при помощи опции -query=soa:
Просмотр всех имеющихся записей DNS
При помощи опции -query=any мы можем просмотреть все записи DNS, которые у нас есть для заданного доменного имени:
Обратный поиск DNS
Если вместо имени указать в качестве аргумента IP-адрес, будет выполнен обратный поиск DNS:
Использование конкретного DNS-сервера
Изменение номера порта
По умолчанию DNS-серверы используют порт 53, но при необходимости можно указать другой номер порта посредством опции -port:
Изменение интервала ожидания ответа
Интервал ожидания ответа по умолчанию можно изменить, указав желаемое значение в секундах с опцией -timeout:
Режим отладки
При помощи опции -debug вы можете включить режим отладки:
В режиме отладки при поиске выводится информация о пакетах.
Интерактивный режим
Для входа в интерактивный режим запустите команду nslookup без опций. Далее можно вводить необходимые имена или адреса, а также устанавливать парметры при помощи команды set, например, следующие команды интерактивного режима:
возвращают результат, аналогичный команде
Конечно, при поиске записей для одного имени использовать интерактивный режим бессмысленно. Но при необходимости работы с большим количеством записей он очень удобен, так как позволяет работать в режиме диалога.
Заключение
Мы рассмотрели основы работы с командой nslookup, а также основные типы записей DNS. Для более подробной информации о команде и ее опциях можно обратиться к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
nslookup — это программа для запроса к серверам DNS. С помощью утилиты nslookup можно узнать значение DNS записей домена, узнать IP сайта, узнать сервера имён веб-сайта, почтовые сервера домена и другую информацию.
Программа nslookup умеет работать в двух режимах: интерактивном и не интерактивном.
Интерактивный режим nslookup
Для входа в интерактивный режим достаточно запустить программу без опций:
Любо указать дефис. Кроме дефиса также можно указать имя домена или адрес DNS сервера для запросов:
В интерактивном режиме для выполнения DNS запроса указывайте по одному доменному имени, для которого вы хотите узнать IP адрес.
В интерактивной сессии командой
можно установить используемый для запросов DNS сервер, например:
Можно просмотреть текущие значения всех опций командой:
Значения всех показанных опций можно изменить.
С помощью равнозначных команд:
Можно изменить тип запрашиваемой DNS записи, например, чтобы установить тип записи на MX:
После этого все запросы будут делаться с учётом установвленных настроек, то есть например будет показываться только указанный тип записи. Кстати, чтобы узнать о всех типах записях и чем они различаются, а также как вообще работает DNS, смотрите статью «Введение в DNS терминологию, компоненты и концепции».
Чтобы выводились сразу все DNS записи установите эту настройку следующим образом:
Рекурсивные запросы можно включить или отключить командами:
По умолчанию рекурсивные запросы включены.
Поменять порт по умолчанию для TCP/UDP соединений при запросах к DNS серверу можно командой вида:
Портом по умолчанию является 53.
Кроме рассмотренных, имеются и некоторые другие настройки, которые используются реже — время тайм-аута, количество попыток запросов и другие.
Интерактивный nslookup может оказаться полезным если вы хотите сделать ряд поисков по DNS записям и хотите, чтобы они были сделаны с определёнными настройками, которые вы устанавливаете на данную сессию.
Неинтерактивный режим nslookup
Для работы с nslookup в неинтерактивном режиме достаточно указать после команды имя домена для поиска:
Поиск A и AAAA записей (IP адрес сайта) с nslookup
По умолчанию показываются записи A и AAAA. То есть если вы хотите узнать IP сайта, то достаточно запустить команду без опций, достаточно указать только имя домена:
Как по IP адресу узнать имя хоста в nslookup
Если вам нужно для IP адреса узнать связанное с ним доменное имя, то достаточно указать этот IP:
Как узнать IP адрес субдомена
Командой nslookup можно узнать IP адрес субдомена любого уровня:
Поиск записей MX (Mail Exchange)
Для показа хостов, используемых для обмены почты, запустите команду вида:
DNS запрос записей SOA (Start of Authority)
Как узнать все DNS записи домена
Как в nslookup указать сервер для запросов
Если вы хотите сделать запрос к определённому DNS серверу (а по умолчанию адреса серверов берутся из файла /etc/resolv.conf), то после доменного имени достаточно указать имя хоста или IP DNS сервера:
Как получить записи NS (Name Server) в nslookup
NS запись содержит сервера имён данного домена, для их просмотра выполните команду вида:
Сервера Имён — это авторитативные сервера для данного домена, которые являются самый первым источником данных о DNS записях для данного домена.
Как правило, конечный пользователь обращается не к авторитативному серверу (поскольку их много — для каждого домена может быть свой), а к кэширующему DNS серверу.
Что означает Non-authoritative answer
Если вы прочитали статью по ссылке, то вы знаете, что DNS сервер является авторитативным (authoritative) для данного домена, если он указан в качестве Сервера Имён (NS) в соответствующих записях для данного домена, а сам DNS сервер содержит файлы зоны для данного домена.
Как получить авторитативный ответ?
Для начала нам нужно узнать, какие сервера имён являются авторитативными для данного домена, то есть какие у этого сайта сервера имён. Как мы узнали чуть выше, нам нужно командой узнать сервера имён для данного домена:
Получено сразу два сервера имён (на случай, если с одним из них будут проблемы).
Мы также уже рассмотрели, как делать запросы к определённому DNS серверу, поэтому выбираем любой из двух (кстати, их может быть больше) и делаем запрос непосредственному к данному DNS серверу:
Обратите внимание, что надпись «Non-authoritative answer.» больше не выводится.
Как включить режим отладки nslookup
Включив режим отладки вы будете получать более вербальный вывод, в том числе в выводе будет присутствовать такая информация как TTL. Будет показан полны пакет ответа и любые промежуточные покеты ответа полученные во время поиска:
Поддержка IDN
Если nslookup был скомпилирован с поддержкой IDN (internationalized domain name — интернационализированных доменных имён), он может принимать и отображать доменные имена не ASCII. nslookup соответствующим образом преобразует кодировку символов доменного имени перед отправкой запроса на DNS-сервер или отображением ответа с сервера. Если по какой-то причине вы хотите отключить поддержку IDN, определите переменную среды IDN_DISABLE. Поддержка IDN отключена, если переменная установлена при запуске nslookup или когда стандартный вывод не является tty.
DNS (Domain Name System) — это система доменных имён, с помощью которой каждому имени домена сопоставляется его реальный IP адрес. В основе самого понятия DNS лежит представление о структуре доменного имени и зонах. Чтобы понять, как работать с доменными именами в Linux, нам необходимо изучить основные команды для работы с DNS, их синтаксис и примеры применения на практике. В этой статье рассмотрим следующие команды: host, nslookup, dig, whois, ping. Все практические задачи по работе с доменными именами мы покажем на нашем VPS под управлением серверной ОС CentOS 7. Для работы нам потребуется установить пакет утилит: bind-utils, без которого в CentOS 7 не будут работать команды host, nslookup, dig.
Также в синтаксисе некоторых команд мы будем использовать основные DNS записи для доменного имени (A, AAAA, MX, NS, SOA, TXT, CNAME, PTR), ниже расшифруем, что означает каждая из них.
Зарегистрировать домен Вы можете здесь.
Основные DNS записи для домена
Все владельцы доменов могут зайти в свой рабочий кабинет у хостинг-провайдера (или регистратора доменных имен) и посмотреть записи для своего домена, оформленные, как правило, в виде таблицы, которая содержит следующие поля:
- Имя (хост, псевдоним);
- Тип записи;
- Значение (IP адрес, назначение, ответ и т.д.).
Существуют следующие типы записей:
Команда dig
Одна из основных команд Linux для работы с доменами — это dig (domain information groper). Утилита предоставляет возможность узнать о домене наиболее полную информацию, например, IP адрес, который привязан к данному доменному имени и еще ряд полезных для системного администратора параметров. Синтаксис команды dig следующий:
dig [@сервер] [имя домена] [тип записи] [флаги], где:
- @cервер — указывает IP-адрес сервера DNS, если не указать этот параметр, то обращение идет к серверу DNS «по умолчанию»;
- имя домена — указывает имя домена, о котором нужно получить информацию;
- тип записи — тип записи DNS (А, MX, TXT, NS и т.д.);
- флаги — с помощью флагов можно задать дополнительные опции утилиты dig.
Ниже укажем основные флаги утилиты dig:
- +[no]all — используется для вывода на экран или сокрытия всех установленных «по умолчанию» флагов;
- +[no]answer — необходима для отображения только ответа на запрос;
- +short — выводит информацию о домене в сокращенном формате;
- +[no]identify — применяется совместно с флагом +short для отображения информации об IP-адресе сервера;
- +[no]comments — служит для вывода информации без комментариев;
- +[no]trace — используется для вывода списка DNS серверов, через которые идет запрос на получение данных о домене.
Дополнительно, могут быть использованы следующие опции для команды dig:
- -4 — разрешает к использованию только IPv4;
- -6 — разрешает к использованию только IPv6;
- -x — служит для получения имени домена по его IP-адресу;
- -f — предназначена, чтобы прочитать список доменов из файла;
- -t — служит для обозначения типа записи, которую надо вывести на экран;
- -p — показывает номер порта DNS сервера.
Мы показали только часто употребляемые флаги и опции команды dig, для получения полной информации по данному вопросу советуем воспользоваться командой:
Сейчас приведем практические примеры использования утилиты dig. Самый простой случай применения dig:
Например, введем в терминале:
Как понять результаты выполнения этой команды? Информация условно поделена на три секции:
- секция HEADER — показывает текущую версию утилиты dig, ID запроса и т. д.;
- секция QUESTION SECTION — выводит на экран текущий запрос;
- секция ANSWER SECTION — отображает ответ на созданный запрос (в нашем запросе выводит IP домена).
Если вы хотите получить только основные данные по домену, то стоит задать сокращенный запрос следующей командой:
При использовании флага +noall будет отключен вывод на экран информации всех трех секций:
Если вы хотите увидеть информацию только из секции ANSWER SECTION, то выполните следующую команду:
При необходимости получить такого рода информацию по нескольким доменам сразу, советуем создать специальный файл sites.txt в редакторе nano и занести туда доменные имена нужных сайтов, например:
Далее следует выполнить команду в терминале:
Теперь попробуем получить определенные типы записей DNS (A, MX, NS, TXT и т.д.), для этого выполняем команду dig, применяя следующие флаги, например, для типа записи «почтовый сервер»:
Или же, если мы хотим получить ответ только для третьей секции утилиты dig:
Для решения обратной задачи — получения имени домена по IP-адресу, выполним команду dig с опцией -x:
Попытаемся узнать, через какие DNS сервера идет запрос для получения информации о домене (команда трассировки в Linux):
Для вывода текущей версии утилиты dig воспользуемся опцией -v:
Для проверки синхронизации зоны со всеми NS введем команду:
Команда nslookup
Эта команда также позволяет получить информацию по домену или по IP адресу. Основной синтаксис написания nslookup:
nslookup [опции] [доменное имя] [сервер]
где [сервер] — указывать необязательно.
Самый простой пример использования nslookup приведем ниже:
Можем выполнить и обратную задачу — по IP адресу узнать доменное имя сайта.
Ниже приведем основные опции команды nslookup:
- type – записывается тип записи DNS (к примеру, NS, TXT, SOA и др.);
- port – указывается номер порта;
- recurse – в случае, когда DNS не отвечает, использовать другие DNS;
- retry – задается количество попыток;
- timeout – время;
- fail – в случае, когда DNS возвращает ошибку, необходимо использовать другой сервер.
Приведем примеры команды, с использованием опции type (тип записи), например, для получения записей типа NS, MX, TXT, SOA и т.д.:
Техническую информацию о домене можно получить в ответе, запустив команду nslookup с параметром для типа записи SOA:
- origin — источник информации;
- mail addr — указывает email address администратора домена;
- serial — показывает время в формате timestamp;
- refresh — выводит время в секундах, в течении которого нужно повторить подключения, чтобы обновить информацию;
- retry — указывает время в секундах, через которое необходимо опять повторить подключения к DNS, в случае, если он недоступен;
- expire — показывает интервал времени в секундах, через который нужно считать информацию, полученную от первого DNS, устаревшей;
- minimum — это время в секундах, которое проходит до следующего обновления.
Команда whois
Whois — это сервис, который позволяет узнать всю информацию о владельце домена. В ОС Linux эту команду можно вводить прямо в терминале. В CentOS 7 данная служба не установлена «по умолчанию», поэтому необходимо ее установить:
Для изучения всех параметров команды whois выполните:
Команда ping
Команда ping известна всем пользователям сети, которые сталкивались с проблемами с соединением. Ping служит для того, чтобы узнать, есть ли связь с удаленным узлом сети, используя протокол ICMP (Internet Control Message Protocol). Принцип действия утилиты простой: на удаленный хост передается пакет с данными ICMP, с целью получить пакет с ответом — если он приходит, то удаленный узел считается доступным.
Синтаксис данной команды:
ping [опции] [адрес удаленного узла]
На скриншотах ниже показаны простые примеры использования команды ping:
Команда ping может исполняться достаточно долго, для выхода из этого режима необходимо нажать комбинацию клавиш: ctrl+c.
Ниже приведем некоторые опции утилиты ping с примерами:
Команда host
Еще одна команда для работы с DNS — это host. Она предназначена для получения информации о доменном имени, например, чтобы по имени домена узнать IP адрес:
Данную команду можно использовать со следующими опциями, например:
- -l — выводит на экран всю информацию о домене;
- -v — выдает результаты в подробном формате;
- -w — принуждает утилиту host ждать ответ;
- -r — используется для выключения режима рекурсии (в этом случае DNS-сервер не обращается за информацией к другим DNS-серверам, используется только локальная база);
- -d — необходимо для включения режима отладки;
- -t querytype — определяет тип запроса (например, -t TXT — возвращает только тип записи TXT для домена);
- -a — служит для восстановления всех записей в DNS.
Заключение
В данной статье мы рассказали нашим читателям, как работать с системой доменных имён (DNS) с помощью команд host, nslookup, dig, whois, ping. В нашем материале приведены практические задачи, которые может решать системный администратор или пользователь Linux в своей ежедневной работе, применяя эти утилиты.
Читайте также: