Команда dig в windows

Обновлено: 06.07.2024


dig (сокращение от «domain information groper» - поиск доменной информации) - это инструмент DNS-клиента , позволяющий пользователю через CLI обращаться к системе DNS за информацией. Осуществляет поиск DNS и отображает ответы, возвращенные запрошенным сервером (серверами) имен. Если говорить простым языком: программа dig показывает IP адрес сайта.

Содержание

Как установить dig

Если при попытке использования команды dig:

вы получаете ошибку:

то необходимо установить пакет, который содержит эту утилиту.

В Debian, Linux Mint, Ubuntu, Kali Linux для установки выполните команду:

В Arch Linux и производных установка выполняется командой:

В CentOS и близких дистрибутивах для установки запустите команду:

Разбор синтаксиса команды

Программа dig использует обычную командную строку для формирования запросов о доменах DNS-серверам. Формат команды dig следующий:

Здесь server — необязательное имя DNS-сервера. По умолчанию в dig будет использоваться DNS-сервер, указанный в файле /etc/resolv.conf. Можно указать опцию server либо по имени хоста, либо через его IP-адрес. Если для опции server используется имя хоста, то для преобразования его в IP-адрес dig воспользуется DNS-сервером по умолчанию и будет его использовать далее для получения информации о домене.

Параметр query-type — тип исходной записи, который можно указать в запросе ( A, SOA, NS и MX ). Для получения всей информации о домене можно указать query-type any.

Параметр query-class — класс сетевой информации, который также можно указывать в запросе. По умолчанию этот параметр всегда будет IN для сети Internet.

Параметр +query-option — используется для изменения значения параметра в пакете DNS или для изменения формата вывода результатов работы dig.

Параметры, которые можно использовать в запросе с dig

Параметр -dig-otion используется для задания других опций, влияющих на работу dig.

Параметры, влияющие на работу dig

Утилита dig поддерживает ряд параметров командной строки. Одним из таких параметров является -t, позволяющий указать интересующий пользователя тип ресурсной записи. Но параметр -t может и просто пропускаться.

  • -x Указывает инверсное преобразование адреса в нормальном написании
  • -f Считывает файл для дальнейшей пакетной обработки
  • -T Время в секундах до включения режима пакетной обработки
  • -p Номер используемого порта
  • -P После получения ответа выдать команду ping
  • -t Указывает тип запроса
  • -c Указывает класс запроса
  • -envsav Параметры dig должны быть сохранены для дальнейшего использования по умолчанию

Как пользоваться dig

Простейший пример использования dig:

Будет выведено довольно много строк:

Секции и комментарии dig

Вывод утилиты может быть разделен на ряд секций [Источник 3] :

Отключение секций и комментариев

Чтобы программа выводила только IP адрес без ненужной информации, используйте конструкцию:

Можно отключить вывод некоторых данных. Для этого ставим в конце команды нужный ключ или несколько [Источник 4] :

  • +nocomments – не показывать комментарии
  • +noauthority – не показывать секцию AUTHORITY
  • +noadditional –не показывать секцию ADDITIONAL
  • +nostats – не показывать статистику (внизу ответа: ";; Query time: 4 msec. ")
  • +noanswer – не показывать секцию ANSWER (хз зачем можно отключать эту секцию, ведь ради неё и смотрим DNS записи)
  • +noall - отключить все секции. Логично использовать в связке с командами перечисленными выше, но без "no" в начале. К примеру, "dig alexgur.ru +noall +answer" - покажет только секцию ANSWER и ничего больше.
  • +short - показывает только самое необходимое

Типы ресурсных записей DNS

По умолчанию dig выводит информацию об A записи домена.

Можно поставить один из следующих ключей после домена, чтобы получить определенные записи:

image


Внимательный читатель найдет на этой картинке IPv6

Люди часто озадачены доменами. Почему мой сайт не работает? Почему эта хрень поломана, ничего не помогает, я просто хочу, чтобы это работало! Обычно, вопрошающий или не знает про DNS, или не понимает фундаментальных идей. Для многих DNS — страшная и непонятная штука. Эта статья — попытка развеять такой страх. DNS — это просто, если понять несколько базовых концепций.

Что такое DNS

DNS расшифровывается как Domain Name System. Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.

Базовые штуки

Давайте взглянем на маппинг между именем и адресом:

Команда dig это такой швейцарский армейский нож для DNS-запросов. Крутой, многофункциональный инструмент. Вот первая часть ответа:

Здесь есть только одна интересная деталь: информация о самом запросе. Говорится, что мы запросили запись и получили ровно один ответ. Вот:

dig по-умолчанию запрашивает A -записи. A это address (адрес), и это один из фундаментальных видов записей в DNS. A содержит один IPv4 -адрес. Есть эквивалент для IPv6 -адресов — AAAA . Давайте взглянем на ответ:

Тут говорится, что у хоста web01.bugsplat.info. есть один адрес A : 192.241.250.244 . Число 300 это TTL , или time to live (время жизни). Столько секунд можно держать значение в кэше до повторной проверки. Слово IN означает Internet . Так сложилось исторически, это нужно для разделения типов сетей. Подробнее об этом можно почитать в документе IANA's DNS Parameters.

Оставшаяся часть ответа описывает сам ответ:

В частности, здесь говорится, как долго сервер откликался, какой у сервера IP-адрес ( 192.168.1.1 ), на какой порт стучался dig ( 53 , DNS-порт по-умолчанию), когда запрос был завершен и сколько байтов было в ответе.

Как видите, при обычном DNS-запросе происходит куча всего. Каждый раз, когда вы открываете веб-страницу, браузер делает десятки таких запросов, в том числе для загрузки всех внешних ресурсов вроде картинок и скриптов. Каждый ресурс отвечает за минимум один новый DNS-запрос, и если бы DNS не был рассчитан на сильное кэширование, то трафика генерировалось бы очень много.

Но в этом примере не видно, что DNS-сервер 192.168.1.1 связался с кучей других серверов чтобы ответить на простой вопрос: «куда указывает адрес web01.bugsplat.info ?». Давайте запустим трейс чтобы узнать о всей возможной цепочке, которую пришлось бы пройти dig 'у, если бы информация не был закэширована:

Информация выводится в иерархической последовательности. Помните как dig вставил точку . после хоста, web01.bugsplat.info ? Так вот, точка . это важная деталь, и она означает корень иерархии.

Корневые DNS-сервера обслуживаются различными компаниями и государствами по всему миру. Изначально их было мало, но интернет рос, и сейчас их 13 штук. Но у каждого из серверов есть десятки или сотни физических машин, которые прячутся за одним IP.

Итак, в самом верху трейса находятся корневые сервера, каждый определен с помощью NS- записи. NS -запись связывает доменное имя (в данном случае, корневой домен) с DNS-сервером. Когда вы регистрируете доменное имя у регистратора типа Namecheap или Godaddy, они создают NS -записи для вас.

В следующем блоке видно, как dig выбрал случайный корневой сервер, и запросил у него A -запись для web01.bugsplat.info . Видно только IP-адрес корневого сервера ( 192.5.5.241 ). Так какой именно корневой сервер это был? Давайте узнаем!

Возвращаясь к нашему начальному запросу: корневой сервер F вернул другой набор NS -серверов. Он отвечает за домен верхнего уровня info . dig запрашивает у одного из этих серверов запись A для web01.bugsplat.info , и получает в ответ еще один набор NS -серверов, и потом запрашивает у одного из этих серверов запись A для web01.bugsplat.info. . И, наконец, получает ответ!

Уф! Сгенерировалось бы много трафика, но почти все эти записи были надолго закэшированы каждым сервером в цепочке. Ваш компьютер тоже кэширует эти данные, как и ваш браузер. Чаще всего DNS-запросы никогда не доходят до корневых серверов, потому что их IP-адреса почти никогда не изменяются («Наверно все таки речь идет о большом TTL для записей в их базе. Если у DNS сервера IP адрес вообще ни разу не изменялся, то это не означает, что его база навечно закеширована» — прим. от rrrav). Домены верхнего уровня com , net , org , и т.д. тоже обычно сильно закэшированы.

Другие типы

Заметьте, что MX -запись указывает на имя, а не на IP-адрес.

Еще один тип, который вам скорее всего знаком, это CNAME . Расшифровываетя как Canonical Name (каноническое имя). Он связывает одно имя с другим. Давайте посмотрим на ответ:

Что не так с CNAME

Записи CNAME очень полезны, но есть важный момент: если есть CNAME с каким-то именем, то нельзя создать другую запись с таким же именем. Ни MX , ни A , ни NS , ничего.

Запросы к другим серверам

Давайте представим, что конфигурация DNS испорчена. Вам кажется, что вы исправили проблему, но не хотите ждать когда обновится кэш чтобы удостовериться. С помощью dig можно сделать запрос к публичному DNS-серверу вместо своего дефолтного, вот так:

Символ @ с IP-адресом или хостом заставляет dig прозводить запрос к указанному серверу через порт по-умолчанию. Можно использовать публичный DNS-сервер Гугла или почти-публичный-сервер Level 3 по адресу 4.2.2.2 .

Типичные ситуации

Давайте рассмотрим типичные ситуации, знакомые многим веб-разработчикам.

Редирект домена на www


CNAME для Heroku или Github

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

Wildcards

Большинство DNS-серверов поддерживают шаблоны (wildcards). Например, есть wildcard CNAME для *.web01.bugsplat.info указывает на web01.bugsplat.info . Тогда любой хост на web01 будет указывать на web01.bugsplat.info и не нужно создавать новые записи:

Заключение

Надеюсь, теперь у вас есть базовое понимание DNS. Все стандарты описаны в документах:

Есть еще пара интересных RFC, в том числе 4034, который описывает стандарт DNSSEC и 5321, который описывает взаимосвязь DNS и email. Их интересно почитать для общего развития.

Эти утилиты существуют не только для линукс, но и для Mac. Аналоги есть и в виде сайтов. Стоит только немного поискать.

1. Whois

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

Команда whois поможет узнать, кто отвечает за домен. Полезна для уточнения серверов имен, которые отвечают за этот домен. В случае проблем их можно опросить о записях в этом домене.

Использовать просто. Нужно в консоли написать 'whois' и дальше через пробел имя домена.

2. Ping

Команда ping позволяет определить доступен ли сервер в данный момент для вас и в рабочем ли он состоянии. С жмите "Crtl+C".

3. Host

Версия для Mac: host

Host - команда, позволяющая преобразовать имя домена в IP адрес сервера. Это самый простой способ это сделать.

Аналог этой команды для Windows - nslookup.

4. Dig

Это самая мощная утилита для работы с доменами. Она позволяет проверять записи в домене, такие как NS, A, MX, AAAA, SRV, TXT, PTR, CNAME, и другие.

Вы можете использовать dig для првоерки настройки NS серверов. Например, чтоб получить NS записи в домене:

В результате вы получите только NS записи для домена. Чтоб опросить конкретный сервер имен, напишите:

Вы получите A запись для домена ubuntu.com с сервера имен ns1.canonical.com. Более глубокая проверка корректности настройки домена - это использование ключа "+trace":

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

Как уже было сказано выше, это самый мощный инструмент для работы с серверами имен и доменами.

5. Traceroute

Traceroute покажет вам полный путь прохождения запроса от вас до сервера. Если по пути возникнут какие-либо проблемы, то он сообщит об этом. Так же утилита сообщит о времени задержки при прохождении каждого узла по пути следования соединения.

6. Mtr

Версия для Mac: mtr

Практически - это тот же traceroute, только он проходит путь между вами и сервером постоянно, циклически, при этом статистика ошибок и задержек накапливается и суммируется. Зачастую это гораздо удобнее и нагляднее, чем traceroute.

Во многих случаях мы заинтересованы в том, чтобы контролировать все, что связано с подключением к Интернету. У нас есть много инструментов, которые мы можем использовать для этого. Мы можем проводить тесты, проверять возможные неисправности, которые необходимо устранить, анализировать характеристики сети и т. Д. В этой статье мы поговорим о Копать и как мы можем использовать этот инструмент в повседневной жизни.

Dig, инструмент для запросов к серверам

Dig - это бесплатный инструмент, который мы можем использовать для запросов к серверам. Это команда Unix, которая позволяет пользователям запросить различные DNS учет . Имейте в виду, что его также можно использовать в Windows. Его название происходит от аббревиатуры Domain Information Groper.

Как использовать Dig в Windows

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

Мы должны скачать файл из ISC интернет сайт. Оказавшись там, вам нужно перейти к BIND 9 раздел. Мы должны загрузить текущую версию, которая будет указана Current-Stable (9.16.7 на момент написания этой статьи). Откроется новая страница для выбора версии загрузки.

Как только мы загрузим файл, нам нужно извлечь все содержимое в папку. Мы должны выполнить (с правами администратора) файл BINDInstall.exe . Имейте в виду, что Защитник Windows может предупредить нас о том, что это может быть опасно, поэтому мы должны принять риски и в любом случае установить. В процессе установки нам нужно будет выбрать путь, имя и пароль.

Установить BIND9

Когда процесс установки будет завершен, нам нужно будет добавить BIND в путь к Windows . Тоже простой процесс. В этом случае вам нужно перейти в Пуск, написать Путь и открыть Изменить системные переменные среды. В расширенных параметрах мы увидим переменные среды. Щелкаем там и ищем Path, нажимаем Edit и в свободную строку добавляем BIND path. Хотя это зависит от того, где он установлен, обычно путь - C: Program FilesISC BIND 9bin.

Команда Dig использует

Команда Dig может предлагать очень разнообразную и подробную информацию в разных разделах. Например, мы можем получить IP-адрес домена, для которого нам просто нужно выполнить команду домен dig + короткий .

Чтобы посмотреть более подробный и завершить ответы мы должны выполнить команду dig domain + noall + answer. Мы можем увидеть все записи DNS домена с помощью команды dig domain ANY.

С другой стороны, мы также можем проконсультироваться по типу записи с помощью команд dig mx (проконсультироваться и получить почтовый обмен), txt, cname, ns или A. Мы также можем выполнить обратный поиск, чтобы получить домен IP-адреса. .

Короче говоря, Копать это бесплатный и интересный инструмент для использования как на Linux и Windows. Мы видели, что в случае Microsoft операционной системы, нам нужно будет установить пакеты, чтобы иметь возможность использовать ее в командной строке. Использование, которое мы можем дать, очень разнообразно.

Веб-интерфейс Dig

Независимо от вариантов, которые мы показали для использования в Windows и Linux, мы также можем использовать веб-интерфейс Dig. Для этого мы должны войти в соответствующая страница . Там мы увидим различные варианты, которые есть в нашем распоряжении.

В нем есть информация и данные, которые мы можем получить, просто используя онлайн-инструмент, который полностью интуитивно понятен и очень прост в использовании. Это также совершенно бесплатно, как если бы мы использовали версию для Linux или Windows в операционной системе.

Читайте также: