Итак, мы находимся в главе о DNS в нашем классе, и мне было интересно, есть ли какой-либо способ, хотя я могу подключиться к DNS-серверу на порту 53 через интерфейс командной строки (например, Telnet или netcat), как мы это делаем для SMTP или HTTP. или POP на их конкретных портах; Я попытался:
> telnet 8.8.8.8 53
Но соединение было закрыто, как только оно было установлено; позже я понял, что telnet использует TCP, а DNS использует UDP.
Затем я попытался сделать то же самое с netcat:
> nc -u 8.8.8.8 53
Нада! Я просто хочу увидеть работу DNS с некоторой прозрачностью (например, с http, SMTP и т. Д.)
Как вы заметили, DNS в основном использует UDP, но на самом деле сервис также предоставляется через TCP (обычно используется для больших ответов и зональных передач).
Вот почему вам в первую очередь удалось установить соединение при попытке telnet
. Ваше соединение было закрыто, потому что вы не взаимодействовали со службой должным образом, а не потому, что telnet
использует TCP.
Важное отличие состоит в том, что, в отличие от HTTP и SMTP, которые представляют собой текстовые протоколы, с которыми достаточно легко работать напрямую, DNS - это бинарный протокол.
Это означает, что вам понадобится некоторая клиентская программа DNS для взаимодействия с серверами имен любым разумным способом.
dig
является стандартом де-факто для устранения неполадок DNS в течение очень долгого времени, поскольку он очень хорош как с точки зрения построения запросов, так и с точки зрения четкой печати всей информации в ответе. (Часть кодовой базы BIND и включена в сборку Windows от ISC.)
drill
это еще одна альтернатива с аналогичными возможностями и по существу тем же форматированием вывода, что и dig
.
nslookup
хорошо известен, поскольку существует с незапамятных времен. От него отказались, за исключением Windows, и он имеет некоторые нежелательные особенности и ограниченные возможности по сравнению с ранее упомянутыми альтернативами. Параметр отладки (set debug
) делает его пригодным для устранения неполадок в крайнем случае, поскольку он значительно улучшает полноту вывода, хотя форматирование вывода отладки оставляет желать лучшего.
Вы можете использовать dig
утилита, например:
dig @your.dns.server www.foo.bar
Пример:
dig @8.8.8.8 www.google.com
Если вы хотите увидеть пошаговое разрешение имени, вы можете сделать это:
dig +add +trace @8.8.8.8 www.google.com
С уважением!
Для Windows вы можете использовать NSlookup
nslookup [-opt ...] # interactive mode using default server
nslookup [-opt ...] - server # interactive mode using 'server'
nslookup [-opt ...] host # just look up 'host' using default server
nslookup [-opt ...] host server # just look up 'host' using 'server'