nslookup и drill: DNS-разрешение в терминале
Сервер не резолвит домен, а пинги летят. Привычный dig под рукой нет — в BIOS уже грузится минимальный busybox. Или на хосте без bind-tools. nslookup и drill закрывают эту щель: первый встроен почти везде, второй даёт больше контекста при отладке.
nslookup: интерактивный и однострочный режим
nslookup входит в состав bind-utils и isc-dhcp-client. Работает в двух режимах.
Однострочный запрос:
Интерактивный режим запускается без аргументов. Типичная сессия:
Переключение сервера внутри сессии меняет ресолвер только для этого запроса. Если нужен постоянный ресолвер — правь /etc/resolv.conf.
Типы DNS-записей в запросах
По умолчанию nslookup запрашивает A-запись. Для остального используется set type=:
| Тип записи | Назначение | Пример вывода |
|---|---|---|
| A | IPv4-адрес | 93.184.216.34 |
| AAAA | IPv6-адрес | 2606:2800:220:1:: |
| MX | Почтовый обменник | 10 mail.example.com |
| TXT | Текстовые записи, SPF | v=spf1 include:_spf.example.com ~all |
| NS | Авторитативные серверы | a.iana-servers.net |
| SOA | Start of Authority | serial 2005080901 |
| CNAME | Каноническое имя | example.com canonical name = www.example.com |
| PTR | Обратное разрешение | 34.216.184.93.in-addr.arpa name = example.com |
Однострочный эквивалент — флаг -type=:
Запросы ANY часто блокируются на уровне resolver. Рекурсор вернёт SERVFAIL или пустой ответ. Не полагайтесь на ANY при диагностике.
drill: вывод с типом Resource Record
drill — часть ldns. Выдаёт результат в классическом DNS-формате с секциями ANSWER, AUTHORITY, ADDITIONAL:
Вывод drill читабельнее при разборе цепочки CNAME:
Без флага @server drill берёт ресолвер из /etc/resolv.conf.
DNSSEC-валидация
drill проверяет цепочку доверия DNSSEC:
Флаг -S запрашивает DS-запись выше по цепочке и валидирует подпись. При невалидной цепочке:
nslookup DNSSEC не валидирует — только отправляет запросы с флагом DO (добавить RRSIG в ответ). Для полноценной валидации нужен drill или delv.
NXDOMAIN и SERVFAIL: разбор кодов ответа
Первый шаг при любой ошибке — посмотреть код ответа.
NXDOMAIN (код 3) — домен не существует. Источник: авторитативный сервер зоны. Если dig +short возвращает пустоту, а nslookup пишет ** server can't find example.invalid, это NXDOMAIN. Причины: опечатка в домене, устаревший CNAME, удалённая зона.
SERVFAIL (код 2) — ресолвер не смог ответить. Причины: DNSSEC-валидация сломана, превышен таймаут, циклическая ссылка в NS-записях, перегрузка authoritative-сервера. nslookup показывает ** server can't find example.com: Server failed.
REFUSED (код 5) — рекурсор отказался отвечать. Обычно ACL на DNS-сервере или rate limiting.
Ключевые флаги nslookup и drill
nslookup
| Флаг | Действие |
|---|---|
-type=RR | Тип записи (A, MX, TXT, ANY) |
host | Перенаправление на заданный сервер |
-port=53 | Нестандартный порт (например, 5353 для mDNS) |
-timeout=5 | Таймаут в секундах |
-retry=3 | Количество повторов |
-vc | TCP вместо UDP |
drill
| Флаг | Действие |
|---|---|
@server | Сервер для запроса |
-Q | Тихий режим, только ответ |
-T | Показывать время ответа |
-S | DNSSEC-валидация |
-D | Принудительный DNSSEC (запрос с флагом DO) |
-p port | Нестандартный порт |
-t timeout | Таймаут в секундах |
-T полезен для сравнения latency между ресолверами:
Установка
В минимальных образах busybox уже содержит упрощённый nslookup. Полный набор функций доступен после установки dnsutils.