Сомнительные достоинства старой доброй утилиты
Nslookup является одной из моих любимых утилит в Windows NT 4.0. Вот уже несколько лет при возникновении проблем с разрешением имен при использовании DNS я обращаюсь только к этой программе. Однако с тех пор, как наша компания перешла на Windows 2000 Professional, за Nslookup водятся некоторые странности: неудачные попытки запроса, обращение к дополнительному серверу DNS, а не к основному, и другие. Прежде чем подробно рассмотреть причуды программы Nslookup в Windows 2000 Professional, вспомним, как просто и надежно работала утилита Nslookup в среде NT 4.0.
Шон Дейли - один из редакторов журнала Windows NT Magazine и президент компании iNTellinet Solutions, занимающейся консалтингом и сетевой интеграцией. Имеет сертификат MCSE. Последней из его книг была «Optimizing Windows NT», выпущенная издательством IDG Books. С ним можно связаться по адресу.
Программа nslookup является наиболее универсальным средством, которое можно использовать в различных ситуациях, в том числе при поиске неполадок. Она может запускаться в двух режимах. В неинтерактивном режиме nslookup ведет себя подобно утилите host , которая обсуждалась выше. Однако используя nslookup в интерактивном режиме, можно извлечь гораздо больше пользы. В этом режиме с ее помощью можно получить наиболее подробную информацию об удаленных компьютерах и доменах, так как с помощью опций можно указать, какая информация должна быть получена из базы DNS. Основной формат команды nslookup :
nslookup [-option...] ]
Если в командной строке задать параметр host-to-find , то nslookup будет работать в неинтерактивном режиме и возвратит ответ на запрос примерно в том же виде, что и утилита host . Если аргументы не заданы или первый аргумент - дефис (- ), то nslookup будет работать в интерактивном режиме. При необходимости с помощью аргумента -server можно указать другой DNS-сервер, где server - IP-адрес запрашиваемого DNS-сервера. В противном случае nslookup будет по умолчанию обращаться к DNS-серверу, который задается в файле /etc/resolv.conf .
Параметры nslookup можно изменить тремя способами. Во-первых, можно задать параметры в командной строке вместе с командой nslookup . Во-вторых, можно указать их в интерактивной командной строке nslookup с помощью команды set . И в-третьих, можно создать в своем рабочем каталоге $HOME файл .nslookuprc и указать в нем желаемые параметры, по одному на строку. Список параметров, которые можно использовать с командой nslookup , приведен в табл. 4.6 .
Параметр | Описание |
---|---|
all | Выводит текущие значения параметров |
class | Устанавливает класс DNS (по умолчанию = IN ) |
debug | Включает/выключает режим отладки (по умолчанию = nodebug ) |
d2 | Включает/выключает режим полной отладки (по умолчанию = nod2 ) |
domain=name | Устанавливает доменное имя по умолчанию name |
srchlist=name1/name2.. . | Изменяет домен по умолчанию на name1 и производит поиск по списку name1/name2.. . |
defname | Добавляет доменное имя по умолчанию к компоненту запроса |
search | Добавляет доменные имена в списке к имени хоста (по умолчанию = search ) |
port=value | Изменяет номер порта TCP/UDP (по умолчанию = 53 ) |
querytype=value | Изменяет тип запрашиваемой записи (по умолчанию = А ) |
type=value | То же, что и querytype . |
recurse | Указывает серверу имен запросить другие серверы для получения ответа (по умолчанию = recurse ) |
retry=number | Устанавливает число повторов запроса при неудачном ответе (по умолчанию = 4) |
root=host | Изменяет имя корневого сервера на хост с именем host (по умолчанию = ns.internic.net ) |
timeout=number | Изменяет интервал времени ожидания ответа на значение, равное number (по умолчанию = 5 сек) |
vc | Всегда использовать виртуальную цепочку (по умолчанию = novc ) |
ignoretc | Игнорировать ошибки при урезании пакета (по умолчанию = noignoretc ) |
В листинге 4.6 показан пример сеанса nslookup , во время которого запрашивается информация о хосте www.linux.org . На запрос с установленными по умолчанию параметрами для указанного имени просто возвращается соответствующий ему IP-адрес. В нашем примере демонстрируется изменение параметров с целью поиска почтовых серверов для данного домена.
1 $ nslookup 2 Default Server: ns1.isp.net 3 Address: 10.0.0.1 4 5 > www.linux.org 6 Server: ns1.isp.net 7 Address: 10.0.0.1 8 9 Non-authoritative answer: 10 Name: www.linux.org 11 Address: 198.182.196.56 12 13 > set type=MX 14 > www.linux.org 15 Server: ns1.isp.net 16 Address: 10.0.0.1 17 18 Non-authoritative answer: 19 www.linux.org preference =20, mail exchanger = router.invlogic.com 20 www.linux.org preference =30, mail exchanger = border-ai.invlogic.com 21 www.linux.org preference = 10, mail exchanger = mail.linux.org 22 23 Authoritative answers can be found from: 24 linux.org nameserver = NS0.AITCOM.NET 25 linux.org nameserver = NS. invlogic. com 26 router.invlogic.com internet address = 198.182.196.1 27 border-ai.invlogic.com internet address = 205.134.175.254 28 mail.linux.org internet address = 198.182.196.60 29 NS0.AITCOM.NET internet address = 208.234.1.34 30 NS.invlogic.com internet address = 205.134.175.254 31 > exit 32 $ Листинг 4.6. Пример сеанса nslookup
В строке 5 формируется запрос для хоста с именем www.linux.org . В строках 6 и 7 показан DNS-сервер, который обрабатывает данный запрос, а в строках 9–11 отображается, что сервер выдает неавторитетный ответ об IP-адресе. Очевидно, что кто-то уже обращался к этому же хосту и его IP-адрес хранился в кэше локального DNS-сервера. В строке 13 устанавливается параметр, с помощью которого запрашивается информация о почтовых серверах для данного домена. В строках 18–30 отображается информация, полученная от DNS-сервера. Строки 18–21 являются по сути разделом ответа пакета DNS, который сигнализирует о том, что ответ не является авторитетным, и далее показывает три почтовых сервера, ответственных за доставку электронной почты на хост www.linux.org . В строках 23–30 показан авторитетный ответ и дополнительная информация из пакета DNS. Так, строки 23–25 показывают два авторитетных DNS-сервера для домена linux.org , в которых содержаться исходные записи о www.linux.org . В строках 26–30 отображается дополнительная информация об IP-адресах хостов, содержащихся в ответах. Этот пример можно немного расширить, установив в качестве DNS-сервера по умолчанию один из авторитетных серверов (с помощью команды server ) и запросив еще раз информацию об МХ записях. Теперь сравните, отличается ли полученная информация от той же, но выданной неавторитетным DNS-сервером.
Being able to retrieve DNS TXT records is very useful in multiple scenarios. In this post we will look at checking the TXT domain verification record for Office 365 and also for the Sender protection Framework .
In addition to a MX record, we also have the option to prove domain ownership to Office 365 by using a TXT record. Why do we want to manually check for these Office 365 TXT records? Rather than blindly running the HCW and getting multiple failures, we can check that the correct record is present. This can help prevent the MaxUriReached: Same URI cannot be attached to different AppId on a single day error , which is discussed in KB 3027942 .
When configuring the Sender Protection Framework (SPF), we need to create then add the SPF record into the external DNS zone file for a given domain. This is of type TXT nowadays. This allows external mail servers to consume the SPF record and make an intelligent decision based upon who the sender purports to be.
If we want to ensure that these records are correct, and available in public DNS we can use the nslookup tool. This is very useful if we do not have direct access to the DNS provider, as that may be owned by a different team within the organization.
If we want to talk to the authoritative server directly, we can do so. We just need to know who that is. For redundancy purposes there should be at least two authoritative DNS servers specified in the DNS zone. While we can look for the SOA record, we should query for the Name Server (NS) record.
Note that the query type is now NS, which stands for “Name Server”.
Now we know that for the tailspintoys.ca domain the two authoritative DNS servers are called ns78.domaincontrol.com and ns77.domaincontrol.com, we can query them directly. The IPv4 Addresses for those name servers are:
ns77.domaincontrol.com 216.69.185.49
ns78.domaincontrol.com 208.109.255.49
Note in the below screenshot, when we directly target those specific name servers, there is no mention of non-authoritative.
For a quick reference, Microsoft has multiple SPF resources. The SPF wizard below helps to construct the content of your SPF record.
Update 17-11-2016 - Looks like the Microsoft SPF wizard has gone the way of the dinosaurs...... Take a look at some of the other tools out there.....
All SPF records contain three parts: the declaration that it is an SPF record, the domains & IP addresses that should be sending email, and an enforcement rule. You need all three in a valid SPF record. Here’s an example of the most common SPF record for Office 365:
TXT Name @ Values: v=spf1 include:spf.protection.outlook.com include:sharepointonline.com -all
Do not simply copy the above SPF record into your DNS zone. You need to plan to correctly implement SPF.
Some issues that you might run into are listed below. It is not an exhaustive list.
One of my European colleagues noted they were having issues with NSlookup. They were seeing the below where every lookup was saying DNS request timed out.
This was a weird one. Netmon never lies. But when I sniffed the traffic from my Windows 10 laptop and a Windows Server 2012 R2 VM, no packets were visible on the wire.
To resolve this, get the IPv4 Address of the DNS server and use that specifically in the server command. This is shown below.
In Windows there are very few things that are case sensitive. Because of this we tend to get careless with case sensitivity. Take the below example when trying to set the query type:
Note that the Q in query type is in capitals. This must be in lower case. Yes. Really.
The big yellow arrow (is it big enough??) shows that the working option is in lowercase.
Multiple locations have implemented DNS caching devices that may or may not follow RFC standards. It is regrettable and quite common to find that some DNS caching device is quite happily ignoring the TTL on a DNS record and caching it for several days. Yes that does happen. Take the below example. This is written from some airport lounge in Canada that serves Glenfiddich. Though the amount of single malt consumed has nothing to do with any spelling mistak3s in this post!
In the below example we target the authoritative name server for the tailspintoys.ca domain. But note that we only get a non-authoritative answer.
Compare this to running exactly the same commands from a VM in Azure with no DNS shenanigans:
Those are indeed authoritative replies!
The devil is in the details, and also the dot sometimes. Note that in the below example, when we query for outlook.office365.com the query has the local computer’s DNS search suffix appended to it.
Compare the above queries (underlined in red) to the below screenshot. What is the difference? Note that the query below has a dot at the end of the query. This tells nslookup not to append the domain suffix.
Alternatively, we can tell nslookup not to add the DNS suffix by specifying the nosearch option. This is shown below, note that there is no dot after the search term “outlook.office365.com ”.
Компьютеры, как люди, сначала сами по себе, потом в системе. Безусловно, это человек создает компьютерную систему (сеть), но сквозь поколения специалистов эта система (сеть) «сама управляет» процессом своего развития. Это вытекает из фактического развития интернет-пространства и роли, которую играет в нем иерархия DNS-имен.
Команда NSLookUp: описание возможностей, результат пути отдельно взятого компьютера в интернет-пространство, специалистов в мир создания инструментов распределенной обработки информации, а пользователей - в понимание того, как все устроено на самом деле.
Мир Интернета образовался «сам по себе», хотя нельзя отрицать существенную роль, как отдельных специалистов, так и квалифицированных команд разработчиков. Но когда количество переходит в качество, роли часто меняются. Компьютер до сих пор не обрел интеллект, а тема искусственного интеллекта давно стала привычно неинтересной: уже давно человек не является единственным и основным символом и двигателем прогресса.
Творения рук человеческих не только «живут» собственной жизнью сквозь пространство и время, но и «оказывают» обратное влияние на деятельность новых поколений специалистов.
Объединение компьютеров в сети пришло закономерно. Специалисты быстро пришли к пониманию. Пользователи привыкли к работе в команде, когда действия на одном компьютере приводят к изменению чего-либо на другом. Сетевая организация элементов и процессов нашла свое применение практически во всех областях и стала привычной.
Получили воплощение в реальности, стали естественными и удобными различные и компьютеры «научились» сами с собой «договариваться».
Еще с момента рождения сети быстро изменили лицо информационной сферы, но до программирования было еще далеко. Эффектные и практичные сетевые примеры стали нормой, но это еще был не интернет, это еще не было интернет-программирование.
Создание учебных программ, которые автоматизируют работу нескольких компьютеров для обучения студентов, даже находящихся в разных учебных аудиториях/корпусах было только на момент создания уникальным и существенным.
Автоматизация процесса производства чего-либо, соединяющая в единое целое множество участков, процессов, поставщиков, потребителей также было важным и нужным, но «минутным» достижением.
Любые другие сетевые приложения были уникальны и интересны в момент разработки, внедрения и запуска в эксплуатацию, потом они сразу становились привычными и обыденными. Потребитель сразу забывал, как жил раньше до применения того или иного сетевого приложения.
Надо отдать должное Windows , ей принадлежит знатная роль в информационной сфере. Но не гарантия, что именно здесь появилась незаметная NSLookUp. Идея хороша и семейству юниксоидов можно декларировать свой вклад в ее рождение. Команды для работы в сети нужны, но подавляющее их большинство невидимо, хотя и очень значимо. NSLookUp появилась в Windows NT и в аналогичных системах, а также на других платформах. Теперь она востребована всегда и везде.
Можно не вдаваться в перипетии развития сетевых идей, но знать, что NSLookUp-команды позволяют быстро и точно идентифицировать проблему в сети, это будет полезно даже простому пользователю.
Сетевому администратору и разработчику систем эта команда открывает удобные возможности. Она фактически представляет собой аналог службы DNS-клиент (особенно удобна NSLookUp online) и позволяет ставить объективный диагноз проблемам разрешения имен. Именно это стало итогом развития сетей. Вероятно, идея распределенных серверов DNS будет иметь в будущем иное содержание и организацию, но в данный момент времени, используя NSLookUp-команды, можно получить точную и нужную информацию, как для практического применения, так и для определения тех или иных проблем.
Важно понимать, что развитие сетевых технологий, в конечном итоге, сконцентрировалось в некий стек протоколов, комбинацию различных вычислительных платформ, сложившихся систем и процессов. И вовсе не обязательно иметь полное представление о том, что это такое, чтобы быть уверенным пользователем, разработчиком или администратором. В большинстве случаев достаточно иметь представление о том, что такое NSLookUp-команды.
То, что является уделом работы администраторов и разработчиков, NSLookUp-команды предоставляют рядовому пользователю в простом и доступном виде. Уделив совсем немного времени изучению параметров, опций и правил использования этого инструмента, пользователь получит точное представление о том, что такое домен, DNS, IP, A, AAAA, Refresh, TTL и пр. Все эти символы и термины появились в свое время, несут конкретный смысл, и когда происходит что-то не так, даже можно не прибегать к квалифицированной помощи, когда в арсенале есть практика применения NSLookUp-команды.
Интерактивный доступ к домену в сети позволяет получать нужную информацию в ручном режиме. Работа NSLookUp online предоставляется через командную строку. Просто нужно установить нужные параметры выдачи и получать требуемые данные.
Обычно NSLookUp-команда (примеры из практики) применяется по какому-то одному правилу: nslookup-type=any-timeout=8 vk.com 208.67.220.220, и в выдаче будет исчерпывающая информация о сайте "ВКонтакте", но искушенному пользователю ничто не мешает исследовать все параметры команды или подобрать свой вариант и свою стандартную форму для применения на практике.
Предоставляет сведения, предназначенные для диагностики инфраструктуры DNS. Для использования этого средства необходимо быть знакомым с принципами работы системы DNS. Средство командной строки Nslookup доступно, только если установлен протокол TCP/IP.
nslookup [- подкоманда... ] [{искомый_компьютер | [ - сервер ]}]
Если требуется вывод только небольшой части информации, следует использовать обычный режим. В качестве первого параметра следует использовать имя или IP-адрес компьютера, о котором требуется получить данные. В качестве второго параметра введите имя или IP-адрес сервера имен DNS. Если второй параметр не задан, командой nslookup используется сервер имен DNS, установленный по умолчанию.
Если требуется получить более полные сведения, следует использовать интерактивный режим. В качестве первого параметра следует ввести знак дефиса (-) и имя или IP-адрес сервера имен DNS в качестве второго параметра. Если оба параметра не заданы, командой nslookup используется сервер имен DNS, установленный по умолчанию. Далее перечислено несколько советов по работе в интерактивном режиме.
Сообщение об ошибке | Описание |
---|---|
Timed out | Сервер не ответил на запрос в течение определенного времени и после определенного числа повторных попыток. Имеется возможность установить период ожидания с помощью подкоманды set timeout . Имеется возможность установить число повторных попыток с помощью подкоманды set retry . |
No response from server | Сервер имен DNS не запущен на сервере |
No records | Сервер имен DNS не содержит записей о ресурсах указанного типа, хотя имя сервера задано верно. Тип запроса задается командой set querytype . |
Nonexistent domain | Заданный компьютер или имя домена DNS не существует. |
Connection refused
Network is unreachable |
Невозможно подключиться к серверу имен DNS или к серверу службы finger. Эта ошибка обычно возникает с запросами команд ls и finger . |
Server failure | Сервер имен DNS обнаружил внутреннее несоответствие в своей базе данных и не может корректно ответить на запрос. |
Refused | Отказано в обработке запроса сервером имен DNS. |
Format error | Сервер DNS обнаружил ошибку в формате полученного пакета. Это может свидетельствовать об ошибке в команде nslookup . |
Каждый параметр состоит из дефиса (-) и следующей за ним без пробелов команды, а также, в некоторых случаях, знака равенства (=) и значения. Например, чтобы изменить установленный по умолчанию тип запроса о сведениях для узла и установить начальное время ожидания равным 10 секундам, следует ввести команду:
nslookup -querytype=hinfo -timeout=10
Получить сведения о почтовых серверах:
nslookup -type=MX yandex.ru
nslookup -type=MX сайт 8.8.8.8
nslookup -type=mx wikipedia.org ns2.wikimedia.org
При необходимости получить сведения о нескольких доменных именах можно воспользоваться интерактивным режимом. Водите
nslookup - 8.8.8.8
Во втором случае первичным DNS сервером будет тот, который указан у вас в сетевых настройках. Далее вводите имена серверов по одному. Для завершение работы с командой введите exit.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).