команда dig в windows
Команда dig в windows
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в России Pyatilistnik.org. В прошлый раз мы с вами долго устраняли черный экран на одном ноутбуке с Windows 10, это была еще та эпопея, советую почитать, так как я потратил на нее приличное количество времени. В сегодняшней публикации я бы хотел вам показать установку утилиты DIG в Windows, разберем ее назначение, где можно применять и как она вас будет выручать.
Что такое утилита DIG?
DIG является компонентом программного пакета BIND и заменяет функциональность более старых инструментов, таких как nslookup. Тем не менее, старые инструменты все еще используются в качестве дополнения. Он может идентифицировать записи IP-адресов, записывать маршрут запроса при получении ответов от авторитетного сервера имен, диагностировать другие проблемы DNS, вы просто обязаны иметь его в своем наборе системного администратора.
Постановка задачи
Я развернул отказоустойчивую Remote Desktop Services и при попытке произвести подключение к удаленному рабочему столу, я получил ошибку:
Я перепробывал уже кучу вариантов по ее устранению и в момент диагностики мне нужно было понять, как проходит DNS запрос, для этого нужно было сделать как-то его трассировку, в итоге я вспомнил про утилиту DIG. Ее больше применяют в Linux платформах, например CentOS 8, но и для Windows она есть. Ниже мы ее установим на Windows 10.
Где скачать DIG
Загрузить утилиту domain information groper вы можете с официального сайта BING и их ftp сервера:
На момент написания статьи актуальной версией была bind9 9.17.3.
Далее вам нужно распаковать полученный архив. У меня получилась вот такая структура файлов. Хочу отметить. что для своего удобства вы можете положить папку куда вам удобно.
Установка BIND9
Чтобы у вас в Windows появилась утилита DIG, вам нужно произвести установку BIND9. Запускаем BINDInstall и в окне мастера оставляем пункт «Tools Only», Далее нажимаем Install.
В момент установки будет добавлена Mcrosoft Visual C++, если ее не будет, то вы получите ошибку с отсутствующей библиотекой VCRUNTIME140.dll.
Обязательно потребуется перезагрузка.
Создание переменной для утилиты DIG
После того, как вы установили BIND 9, вам нужно добавить BIND в пути к переменным вашей системы, чтобы сделать dig доступной из командной строки. Чтобы добавить переменную в вашей системе нажмите одновременно сочетание клавиш WIN+Pause Break. Теперь переходим в раздел «Дополнительные параметры системы».
В разделе «Загрузка и восстановление» нажмите кнопку «Переменные среды». Далее в системных переменных найдите строку «Path» и нажмите изменить
Нажимаем кнопку создать и в самом низу в новой строке вводим путь:
Все сохраняем. Данная переменная будет вас отсылать к папке C:\Program Files\ISC BIND 9\bin, с таким содержимым.
Теперь откройте командную строку или PowerShell и запустите команду:
На выходе вы увидите версию утилиты dig. Как видите мы удачно произвели установку утилиты DIG в операционной системе Windows.
Список команд утилиты DIG
Пример: dig pyatilistnik.org
Пример: dig pytilistnik.org MX
Пример: dig pyatilistnik.org +short
Пример: dig @8.8.8.8 pyatilistnik.org
Проверка dns записей домена с помощью nslookup и dig
Проверить DNS записи домена довольно легко. Есть различные десктопные и online утилиты. К ним относятся nslookup, dig и др. Мы поговорим о встроенных средствах в Windows и Linux (MacOS).
Для чего нужно проверять DNS записи домена?
Если вы часто рассылаете письма клиентам, то посмотрите на выделенный сервер в Европе.
Как проверить ДНС записи домена в Windows?
В Windows имеется специальная программа под названием nslookup. Запустить ее достаточно просто:
Откроется командная строка. К примеру, узнаем A запись домена dveripp.ru на наших DNS:
nslookup dveripp.ru ns1.rigweb.ru
Если домен есть на наших DNS, вы получите ответ вида:
nslookup dveripp.ru ns1.rigweb.ru
Server: ns1.rigweb.ru
Address: 92.222.88.93#53
Name: dveripp.ru
Address: 144.76.251.59
Здесь указан адрес ns1.rigweb.ru и IP адрес домена.
У команды nslookup есть параметр type, с помощью которого можно узнать другие DNS записи домена.
dveripp.ru mail exchanger = 10 mail.dveripp.ru.
dveripp.ru mail exchanger = 20 mail.dveripp.ru.
Таким образом, видим MX записи домена в DNS.
И получим вывод Name servers:
Server: ns1.rigweb.ru
Address: 92.222.88.93#53
dveripp.ru nameserver = ns2.rigweb.ru.
dveripp.ru nameserver = ns1.rigweb.ru.
Проверка DNS записей в Linux и MacOS
Вам нужно открыть консоль или терминал.
Проверка A записи на примере домена dveripp.ru
dig @ns1.rigweb.ru dveripp.ru
Типы DNS-записей и как их проверить
PTR запись для почтового сервера: что это такое, как ее добавить, настроить и проверить
How to Install and Use dig, BIND’s Command-Line DNS Lookup Tool
Adding a domain you own to your DigitalOcean account lets you manage the domain’s DNS records with the control panel and API. Domains you manage on DigitalOcean also integrate with DigitalOcean Load Balancers and Spaces to streamline automatic SSL certificate management.
dig is a command-line DNS diagnostic tool from BIND. It looks up and displays various DNS properties of a hostname or IP address, such as its DNS records and authoritative name servers.
Installing dig
To install dig for Windows, go to BIND’s website and download the most current version of BIND 9. Extract the downloaded file and double click the BINDinstall icon in the newly created directory.
On the BIND 9 Installer screen, verify that the target directory is set to C:\Program Files\ISC BIND 9 (or C:\Program Files (x86)\ISC BIND 9 if you are using an x86 architecture) and select the Tools Only check box. Then click Install.
Once you’ve installed BIND 9, you need to add BIND to your system’s paths to make dig available from the command line. To add the path to your system, open the Windows Control Panel and then open your System Properties. In the Advanced tab, click Environment Variables.
Under System Variables, select the Path variable and then click Edit.
In the Edit environment variable screen, click New and enter the new path C:\Program Files\ISC BIND 9\bin (or C:\Program Files (x86)\ISC BIND 9 if you are using an x86 architecture). Once you’ve added the path, click OK.
In the Edit Variables window, click OK. In the System properties window, click OK.
To install BIND on macOS using Homebrew, first verify Homebrew’s installation by running the following command:
If the command returns anything other than brew ’s version information, you may need to install Homebrew.
To install Homebrew, use the following command:
Once you’ve installed Homebrew, use the following command to install BIND:
Common dig Commands
Below are some common dig commands to retrieve DNS information about a hostname. You can run any of the examples in a terminal to see the output.
Command | Example | Description |
---|---|---|
dig | dig example.com | Returns the A records found at a hostname. |
dig any | dig example.com any | Returns all records for a hostname, including NS and SOA records. |
dig @ | dig @ns1.digitalocean.com example.com MX | Queries a hostname’s name server directly instead of your ISP’s resolver. Include the record type parameter to retrieve records of a specific type at a hostname. DigitalOcean’s name server addresses are: ns1.digitalocean.com, ns2.digitalocean.com, and ns3.digitalocean.com |
dig | dig example.com NS | Only returns the records of a specified type at a hostname. |
dig +short | dig example.com +short | Only returns the IP addresses for all A records at a hostname. |
dig +trace | dig example.com +trace | Adding +trace instructs dig to resolve the query from the root name server and return information from each server queried in the delegation chain. |
The most relevant sections for users tend to be the following:
Question Section: A reaffirmation of the query made to the DNS. In the example above, dig queried the hostname example.com and requested information about the hostname’s A records.
Answer Section: The records returned by the query. The answer section usually contains the most relevant information for dig users. In the example above, dig returned the A record for the IP address 204.13.248.106.
Authority Section: The authoritative name servers that host the hostname’s records. This can be helpful in verifying a hostname’s current delegation. For more information about how to delegate your hostname to point at DigitalOcean’s name servers, see our community tutorial.
Как пользоваться командой dig для DNS запросов
dig — это гибкий инструмент для опроса DNS серверов имён. Он выполняет поиск по DNS и отображает ответы, которые возвращены от сервера или серверов имён. Большинство DNS администраторов используют dig для решения проблем DNS из-за его гибкости, простоты использования и ясности вывода. Другие инструменты поиска имеют меньшую функциональность чем dig.
Хотя обычно dig используется с аргументами командной строки, он также имеет пакетный режим обработки считываемых из файла запросов для поиска.
Если в запросе не указан определённый сервер имён, dig попытается использовать каждый из серверов, перечисленных в файле /etc/resolv.conf. Если рабочий сервер не найден, то dig отправить запрос на локальный хост.
Как показать A запись домена
Информацию о различных типах DNS записях смотрите в статье «Введение в DNS терминологию, компоненты и концепции».
Достаточно указать только домен, для которого делается запрос, например, чтобы узнать A запись (содержит IP адрес сервера, на котором работает данный сайт) для доменного имени zalinux.ru:
Большая часть вывода является комментариями — они начинаются с точки с запятой (;)
Первая группа строк показывает версию программы, домен, информацию о котором запрашивается, глобальные опции, информация об ошибках, флаги, количество запросов, ответов и другие данные:
Данная группа строк показывает информацию о сделанном запросе, в том числе домен и тип DNS записи.
Значимая информация содержится в разделе ответа — именно здесь показан IP сайта:
Последняя группа комментариев содержит техническую информацию, в том числе время, которое занял запрос; DNS сервер, к которому был сделан запрос; время, когда был сделан запрос и другое:
Как в dig вывести только IP адрес без дополнительных строк
В приведённом выше примере большая часть информации не нужна пользователю — нужен только IP адрес. С помощью опции +short вывод команды dig будет ограничен исключительно IP адресом. Поскольку по умолчанию (если не указано друге) запрос делается относительно записи A, то будет показан IP адрес из записи A:
Как просмотреть MX записи для домена
Программа dig позволяет делать запрос и выводить информацию для различных типов DNS ресурсов. Чтобы показать какие MX записи у домена выполните команду:
Для сокращения выводимой информации запрашиваемый тип записи (а также другие опции) можно комбинировать с опцией +short:
Запрос SOA записи для домена:
Как в dig вывести только секцию ответа
Более короткий вариант записи:
Как вывести все DNS записи для домена
Данный метод позволяет за один раз вывести сразу все типы DNS записей указанного домена, но он работает не во всех случаях:
Для запроса всех типов DNS записей, но ограничив количества выводимых разделов только секцией ответа добавьте опции «+noall +answer»:
Как в dig сделать обратный DNS запрос — как по IP получить имя хоста
Можно делать обратные DNS запросы, когда отсылаем IP адрес, а в ответ получаем имя хоста, для такого запроса используется опция -x. Пример с добавлением опции +short чтобы ограничить вывод только именем хоста:
Одновременный запрос множества DNS записей
Есть два способа выполнить несколько или сразу множество запросов к DNS серверам в dig.
Один из них — использовать опцию -f, после которой нужно указать файл, содержащий список запросов. Каждая строка в этом файле должна быть организована также, как это делается в запросах, когда используется интерфейс командной строки dig.
Второй вариант — это указать сразу несколько запросов в строке команды. Программа dig не только поддерживает множественность запросов, но и позволяет каждый из них запустить с персональным набором опцией, флагов и опций запросов.
В этом случае каждый аргумент представляет индивидуальный запрос в соответствии с описываемым синтаксисом. Каждый состоит из любых стандартных опций и флагом, имени для получения информации и опционального типа запроса и класса, а также опций запроса, который должны быть применены к этому запросу.
В дополнении к этому можно также указать глобальный набор опций запроса, который должен применяться ко всем сделанным запросам. Эти глобальный опции запросов должны предшествовать первому картежу из имени, класса, типа, опций, флагов и опций запроса, указанных в строке команды. Глобальные опции запроса (кроме опций +[no]cmd и +[no]short) могут быть перезаписаны набором опций для конкретного запроса. Например команда
показывает как dig может использоваться в командной строке для выполнения трёх поисков: ANY запрос для www.isc.org, обратный поиск для 127.0.0.1 и запрос NS записей для isc.org. Применена глобальная опция +qr, поэтому dig для каждого поиска показывает начальный запрос. Финальный запрос имеет локальную (применяемую только для него) опция запроса +noqr, которая означает, что dig не будет печатать начальный запрос когда он ищет NS записи для isc.org.
Сохранение постоянных опций dig
Если для каждого запроса с dig вы используете одну и ту же или одни и те же опции, то вы можете сохранить их в файл $
Если для определённого поиска по DNS вы не хотите, чтобы учитывались сохранённые в файле $
Как сделать DNS запрос по протоколу TCP
С помощью опции +tcp вы можете включить использование TCP при запросах к серверам имён. По умолчанию используется UDP за исключением случаев, если запрошен тип any или ixfr=N, в которых по умолчанию применяется протокол TCP. Запросы AXFR всегда используют TCP.
Использование другого порта для DNS запросов
С помощью опции -p вы можете сделать запрос на нестандартный порт сервера, вместо порта по умолчанию 53. Эта опция может использоваться для тестирования сервера имён, который настроен на прослушивание запросов на нестандартном номере порта.
Как указать сервер имён для DNS запросов
После символа @ (собака) вы можете указать любой DNS сервер имён, который будет использоваться для данного DNS поиска:
По умолчанию сервера имён для запросов берутся из файла /etc/resolv.conf.
Показ цепочки DNS серверов, используемых при DNS запросах
Опция +trace включает трассировку пути делегирования от корневых серверов имён для искомого имени. Трассировка отключена по умолчанию. Когда трассировка включена, dig выполняет итеративные запросы, чтобы преобразовать имя, которое было запрошено. Он будет следовать рекомендациям от корневых серверов, показывая ответ от каждого сервера, который использовался для разрешения поиска.
Если также указан @server, он влияет только на начальный запрос к серверам имён корневой зоны.
+dnssec также устанавливается, когда +trace установлен для лучшей эмуляции запросов по умолчанию от сервера имён.
Классы имён DNS
Имена классов IN и CH перекрываются с именами доменов верхнего уровня IN и CH. Либо используйте опции -t и -c для указания типа и класса, либо используйте -q для указания имени домена, либо используйте «IN.» и «CH.» при поиске этих доменов верхнего уровня.
Узнать подробности о работе DNS и структуре этой системы, а также о видах записей DNS вы сможете в статье «Введение в DNS терминологию, компоненты и концепции».
Поддержка IDN
Если dig был собран с поддержкой IDN (internationalized domain name — интернационализированных доменных имён), он может принимать и отображать не-ASCII доменные имена. dig соответствующим образом преобразует кодировку символов имени домена перед отправкой запроса на DNS-сервер или отображением ответа с сервера. Если по какой-либо причине вы хотите отключить поддержку IDN, используйте параметры +noidnin и +noidnout или определите переменную среды IDN_DISABLE.
Давайте уже разберемся в DNS
Внимательный читатель найдет на этой картинке IPv6
Люди часто озадачены доменами. Почему мой сайт не работает? Почему эта хрень поломана, ничего не помогает, я просто хочу, чтобы это работало! Обычно, вопрошающий или не знает про DNS, или не понимает фундаментальных идей. Для многих DNS — страшная и непонятная штука. Эта статья — попытка развеять такой страх. DNS — это просто, если понять несколько базовых концепций.
Что такое DNS
DNS расшифровывается как Domain Name System. Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.
Базовые штуки
Давайте взглянем на маппинг между именем и адресом:
Здесь есть только одна интересная деталь: информация о самом запросе. Говорится, что мы запросили запись и получили ровно один ответ. Вот:
Оставшаяся часть ответа описывает сам ответ:
Как видите, при обычном DNS-запросе происходит куча всего. Каждый раз, когда вы открываете веб-страницу, браузер делает десятки таких запросов, в том числе для загрузки всех внешних ресурсов вроде картинок и скриптов. Каждый ресурс отвечает за минимум один новый DNS-запрос, и если бы DNS не был рассчитан на сильное кэширование, то трафика генерировалось бы очень много.
Корневые DNS-сервера обслуживаются различными компаниями и государствами по всему миру. Изначально их было мало, но интернет рос, и сейчас их 13 штук. Но у каждого из серверов есть десятки или сотни физических машин, которые прячутся за одним IP.
Другие типы
Что не так с CNAME
Запросы к другим серверам
Давайте представим, что конфигурация DNS испорчена. Вам кажется, что вы исправили проблему, но не хотите ждать когда обновится кэш чтобы удостовериться. С помощью dig можно сделать запрос к публичному DNS-серверу вместо своего дефолтного, вот так:
Типичные ситуации
Давайте рассмотрим типичные ситуации, знакомые многим веб-разработчикам.
Редирект домена на www
Этот IP принадлежит Namecheap’у, и там крутится маленький веб-сервер, который просто делает перенаправление на уровне HTTP на адрес http://www.iskettlemanstillopen.com :
CNAME для Heroku или Github
Wildcards
Заключение
Надеюсь, теперь у вас есть базовое понимание DNS. Все стандарты описаны в документах:
Есть еще пара интересных RFC, в том числе 4034, который описывает стандарт DNSSEC и 5321, который описывает взаимосвязь DNS и email. Их интересно почитать для общего развития.