DNS диагностика с командата nslookup

Nslookup (name server lookup) е мрежов административен инструмент за изпращане на запитвания към DNS (Domain Name System) и резолване на домейн имена, IP адреси или други специфични DNS записи. Използва се също за отстраняване на проблеми, свързани с DNS.

Авторитетен и не-авторитетен отговор

Всеки отговор от DNS сървъра, на който се хоства DNS зоната на домейна (зоновия файл), се счита за авторитетен отговор.

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

Интерактивен и не-интерактивен режим

Nslookup има два режима на работа: интерактивен и не-интерактивен.

Интерактивният режим позволява на потребителя да изпраща запитвания към нейм сървъри за различни хостове и домейни или да показва списъци на хостове в домейн.

Не-интерактивният режим се използва за показване само на домейн и исканата информация за хост или домейн.

За да започнете интерактивна сесия на Windows, просто въведете командата nslookup и натиснете бутона Enter:

C:\Users\support>nslookup
Default Server:  UnKnown
Address:  192.168.1.1

Така ще отворите специален терминал, в който може да изпълнявате поредица от команди в интерактивен режим, като въвеждате nslookup командите без опции:

> google.com
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
Name:    google.com
Addresses:  2a00:1450:4017:809::200e
          172.217.169.142

> set type=any
> google.com
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
google.com      AAAA IPv6 address = 2a00:1450:4017:809::200e
google.com      internet address = 172.217.169.142
google.com      nameserver = ns2.google.com
google.com      nameserver = ns1.google.com
google.com      nameserver = ns4.google.com
google.com      nameserver = ns3.google.com

ns1.google.com  internet address = 216.239.32.10
ns2.google.com  internet address = 216.239.34.10
ns3.google.com  internet address = 216.239.36.10
ns4.google.com  internet address = 216.239.38.10
ns1.google.com  AAAA IPv6 address = 2001:4860:4802:32::a
ns2.google.com  AAAA IPv6 address = 2001:4860:4802:34::a
ns3.google.com  AAAA IPv6 address = 2001:4860:4802:36::a
ns4.google.com  AAAA IPv6 address = 2001:4860:4802:38::a
> set type=mx
> google.com
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
google.com      MX preference = 10, mail exchanger = aspmx.l.google.com
google.com      MX preference = 30, mail exchanger = alt2.aspmx.l.google.com
google.com      MX preference = 50, mail exchanger = alt4.aspmx.l.google.com
google.com      MX preference = 40, mail exchanger = alt3.aspmx.l.google.com
google.com      MX preference = 20, mail exchanger = alt1.aspmx.l.google.com

google.com      nameserver = ns1.google.com
google.com      nameserver = ns3.google.com
google.com      nameserver = ns4.google.com
google.com      nameserver = ns2.google.com
ns1.google.com  internet address = 216.239.32.10
ns2.google.com  internet address = 216.239.34.10
ns3.google.com  internet address = 216.239.36.10
ns4.google.com  internet address = 216.239.38.10
ns1.google.com  AAAA IPv6 address = 2001:4860:4802:32::a
ns2.google.com  AAAA IPv6 address = 2001:4860:4802:34::a
ns3.google.com  AAAA IPv6 address = 2001:4860:4802:36::a
ns4.google.com  AAAA IPv6 address = 2001:4860:4802:38::a

Когато искате да излезете, въведете exit.

Подробно описание на интерактивните команди може да видите на този URL: https://man.cx/nslookup.

За не-интерактивно търсене, добавете домейн името след командата:

nslookup google.com

Ако има наличен източник за авторитетни отговори, той ще бъде посочен в долната част на информацията под реда:

Authoritative answers can be found from:

Примери за работа с nslookup в не-интерактивен режим през терминала (Linux)

Примерите, които ще разгледаме в статията се отнасят само за работа на nslookup в не-интерактивен режим използван през терминала (Linux).

По подразбиране nslookup ще свърже домейн име с IP адрес (или обратно). Например, за да разберете какъв е IP адресът на google.com, може да изпълните командата:

$ nslookup google.com
Server:         195.191.148.254
Address:        195.191.148.254#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.217.142
Name:   google.com
Address: 2607:f8b0:4007:818::200e

Тук 195.191.148.254 е IPv4 адреса на DNS сървъра. #53 показва, че комуникацията с него се извършва на стандартния UDP/TCP порт 53.

След това е записан отговора на сървъра: google.com резолва IP адрес 142.250.217.142. Даден е IPv6 адреса.

Също така е посочено, че отговорът е не-авторитетен. За авторитетен се счита отговорът от DNS сървър, на който се хоства зоновият файл на домейна. Когато DNS сървър връща отговор от своя кеш, въпреки че информацията в кеша е получена от авторитетен DNS сървър, отговорът се записва като не-авторитетен.

Обратно (reverse) търсене

Обратното търсене проверява за наличието на PTR запис за домейна. При наличие на такъв запис запитване за IP адреса връща като отговор домейн името:

$ nslookup 142.250.217.142
142.217.250.142.in-addr.arpa    name = lax31s19-in-f14.1e100.net.

Запитване за неймсървъри (NS запис) на домейн

NS записите (поне два за всеки домейн) показват всички неймсървъри, които са авторитетни за този домейн (съдържат пълния зонов файл с всички DNS записи за домейна).

За да изпратите запитване за нейм сървърите на домейн, използвайте опцията -type=ns:

$ nslookup -type=ns google.com
Server:         195.191.148.254
Address:        195.191.148.254#53

Non-authoritative answer:
google.com      nameserver = ns3.google.com.
google.com      nameserver = ns1.google.com.
google.com      nameserver = ns4.google.com.
google.com      nameserver = ns2.google.com.

Запитване за MX запис

MX записите показват кои мейл сървъри и в каква последователност (приоритет) обслужват мейл системата на домейна.

За да изпратите запитване за MX записите на домейн, използвайте опцията -type=mx:

$ nslookup -type=mx google.com
Server:         195.191.148.254
Address:        195.191.148.254#53

Non-authoritative answer:
google.com      mail exchanger = 20 alt1.aspmx.l.google.com.
google.com      mail exchanger = 10 aspmx.l.google.com.
google.com      mail exchanger = 30 alt2.aspmx.l.google.com.
google.com      mail exchanger = 50 alt4.aspmx.l.google.com.
google.com      mail exchanger = 40 alt3.aspmx.l.google.com.

Особеност при МХ записите е подреждането на приоритетите на мейл сървърите – сървърът с най-малка цифра пред името има най-висок приоритет и всички писма се изпращат към него (в примера 10 aspmx.l.google.com). Ако поради някаква причина този сървър не е наличен, писмата се насочват към следващия по приоритет мейл сървър.

Запитване за SOA запис

Записът SOA (Start Of Authority) предоставя техническа информация за домейна. Въведете опцията -type=soa, за да изпратите заявката:

$ nslookup -type=soa microsoft.com
Server:         195.191.148.254
Address:        195.191.148.254#53

Non-authoritative answer:
microsoft.com
        origin = ns1-205.azure-dns.com
        mail addr = azuredns-hostmaster.microsoft.com
        serial = 1
        refresh = 1400
        retry = 300
        expire = 2419200
        minimum = 300

Информацията, посочена тук, е кешираната версия на SOA секцията в зоновия файл. Ето кратко описание на отделните параметри:

  • origin – авторитетният DNS сървър, който съдържа информацията;
  • mail addr – имейл адресът на администратора на домейна. Първата точка замества символа @ в имейл адрес, така че имейл адресът е azuredns-hostmaster@microsoft.com;
  • serial – показва версията на файла;
  • refresh – показва времето в секунди, след което вторичния (secondary) неймсървър трябва да изпрати запитване към главния (master) неймсървър относно SOA записа за промени в DNS зоната. Препоръка за малки и стабилни зони е това време да не надвишава 24 часа, както е в примера.
  • retry – показва времето в секунди, след което вторичният неймсървър трябва да изпрати нова заявка за серийния номер към главния неймсървър ако той не отговаря. Това време трябва да е по-малко от стойността на Refresh – препоръчва се времето да не надвишава 2 часа.
  • expire – показва времето в секунди, след което вторичните неймсървъри трябва да спрат да отговарят на заявки ако главният неймсървър не отговаря. Това време трябва да е по-голямо от Refresh и Retry – препоръча се стойност 3600000 секунди (1000 часа).
  • minimum – дори когато DNS сървър отговаря, че определен запис не съществува, този отговор се кешира и параметърът minimum определя продължителността на живота на този кеш.

Преглед на всички DNS записи

Можем да разгледаме всички NS записи за домейн, като използваме опцията -type=any:

$ nslookup -type=any google.com
Server:         195.191.148.254
Address:        195.191.148.254#53

Non-authoritative answer:
Name:   google.com
Address: 2607:f8b0:4007:818::200e
Name:   google.com
Address: 142.250.217.142
google.com      text = "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com      text = "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com      nameserver = ns3.google.com.
google.com      nameserver = ns2.google.com.
google.com      nameserver = ns4.google.com.
google.com      nameserver = ns1.google.com.

Заявка към конкретен неймсървър

По подразбиране nslookup ще изпраща всички заявки към конфигурирания DNS сървър. nslookup позволява да се изпрати заявка към авторитетен DNS сървър, като се добави името на неймсървъра след името на домейна:

$ nslookup google.com ns2.google.com
Server:         ns2.google.com
Address:        216.239.34.10#53

Name:   google.com
Address: 172.217.169.110
Name:   google.com
Address: 2a00:1450:4017:808::200e

Запитване на нестандартен порт

По подразбиране неймсървърите приемат заявки на порт 53. Ако DNS сървърът е конфигуриран да работи на друг порт, може да изпратите конкретна заявка като използвате опцията -port=:

$ nslookup -port=54 google.com
;; connection timed out; no servers could be reached

В примера заявката е неуспешна, тъй като DNS използва стандартния порт 53.

Режим за отстраняване на грешки

Режимът за отстраняване на грешки в nslookup е полезна функция и се използва от опитни потребители. В режим на отстраняване на грешки nslookup изброява стъпките, които се предприемат, за да се изпълнят командите. Този режим на работа се активира с помощта на опцията -debug:

$ nslookup -debug google.com
Server:         195.191.148.254
Address:        195.191.148.254#53

------------
    QUESTIONS:
        google.com, type = A, class = IN
    ANSWERS:
    ->  google.com
        internet address = 172.217.169.110
        ttl = 233
    AUTHORITY RECORDS:
    ->  google.com
        nameserver = ns2.google.com.
...

Дошъл ли е краят на употребата на nslookup?

Командата nslookup се класифицира като неодобрена (deprecated) от ISC (Internet Systems Consortium) в полза на инструментите host и dig. Тези по-модерни инструменти предоставят всички функции като nslookup и се ползват с по-голяма популярност.

В отделни статии ще Ви представим тези два инструмента за DNS диагностикаhost и dig:

🔗 DNS диагностика с командата host | Help

🔗 DNS диагностика с командата dig | Help

Обновена: 12.10.2022
Беше ли Ви полезна тази статия?

Вижте още