Базовый синтаксис
dig [@server] [name] [type] [+option ...]
По умолчанию - A-запись через resolver из /etc/resolv.conf:
$ dig example.com
;; ANSWER SECTION:
example.com. 3600 IN A 93.184.216.34
Часто используемые типы записей
| Тип | Что |
|---|---|
| A | IPv4-адрес |
| AAAA | IPv6-адрес |
| CNAME | алиас на другое имя |
| MX | mail-сервер |
| NS | name-server для зоны |
| TXT | произвольные текстовые записи (SPF, DKIM, верификации) |
| SOA | start of authority - параметры зоны |
| PTR | reverse - IP в имя |
| CAA | какие CA могут выдавать сертификат для домена |
| SRV | service location (SIP, XMPP, MS AD) |
| DS / DNSKEY | DNSSEC |
dig example.com AAAA # IPv6
dig example.com MX # почтовые серверы
dig example.com TXT # SPF, DKIM
dig example.com NS # авторитативные NS
dig example.com ANY # всё что есть (ChannelBind может ругнуться)
+short - выжимка
По умолчанию вывод многословный. +short оставляет только ответ:
$ dig example.com +short
93.184.216.34
$ dig example.com MX +short
10 mail.example.com.
20 backup-mail.example.com.
Удобно скриптам, неудобно отлаживать.
Указать сервер
dig @8.8.8.8 example.com # запрос к Google DNS
dig @1.1.1.1 example.com # к Cloudflare
dig @ns1.example.com example.com # авторитативный
Без @ - используется /etc/resolv.conf. Это критично при отладке -
локальный resolver может кэшировать старый ответ.
+trace - весь путь резолва
Покажет, как resolver идёт от корня к авторитативному:
$ dig example.com +trace
;; . root NS
;; com. .com TLD NS
;; example.com. authoritative NS
;; example.com. 93.184.216.34
Каждый шаг - отдельный запрос без рекурсии. Полезно когда «работает у меня - не работает у них» - видно где сломалось.
Reverse DNS
dig -x 93.184.216.34
;; ANSWER:
34.216.184.93.in-addr.arpa. PTR example.com.
PTR-запись в зоне in-addr.arpa. Часто рассинхронизирована с A (forward говорит одно, reverse - другое).
DNSSEC
dig example.com +dnssec
Показывает RRSIG (подписи). +sigchase следует цепочке доверия от
корня. Удобно для отладки DNSSEC-проблем (валидация падает - где?).
Полезные опции
| Опция | Что |
|---|---|
+short | компактный |
+trace | путь от корня |
+dnssec | показать RRSIG |
+tcp | через [[tcp-handshake |
+notcp | только UDP |
+nostats | не показывать stats в конце |
+nocomments | без комментариев ;; |
+noall +answer | минимально - только секция ANSWER |
+time=3 +tries=1 | таймаут 3с, одна попытка |
+norec | не рекурсивный (для авторитативных) |
-p 5353 | другой порт (mDNS) |
Один вкусный pattern
Видеть только TTL и значение:
dig example.com +noall +answer
example.com. 3600 IN A 93.184.216.34
Если TTL уменьшается между запросами - resolver кэширует. Если держится 3600 - cache hit.
Параллельный запрос всех типов
for t in A AAAA MX NS TXT CAA SOA; do
echo "=== $t ==="
dig example.com $t +short
done
Отладка проблем
connection timed out; no servers could be reached
Resolver недоступен. Проверь /etc/resolv.conf, firewall, сеть.
SERVFAIL
Авторитативный сервер вернул ошибку. Часто - проблема DNSSEC-валидации
или у апстрима залип запрос. Попробуй dig @8.8.8.8 - другим resolver'ом.
NXDOMAIN
Домен не существует. Проверь typo в имени, или зона ещё не делегирована.
REFUSED
Сервер не отвечает на запрос (рекурсию не разрешает извне). Это нормально для авторитативного - запрашивай его только за свои зоны.
Альтернативы
host- проще, без вывода служебной информацииnslookup- устаревший, но в Windows и Mac знакомdrill(LDNS) - современная замена dig от того же NLnet, но везде установлен dig