Polecenie nslookup: użycie i opcje, sprawdzanie rekordów i wybór serwera DNS

Środowisko testoweRodzina RHELAlmaLinux 9.8nslookup 9.16konto rootDebian 12 zwykłe konto
Polecenia sieciowenslookupLokalizacja/usr/bin/nslookup

Polecenie nslookup to narzędzie do zapytań, które pyta serwer DNS o nazwę domeny i zwraca jej adresy IP oraz rekordy DNS, takie jak MX, NS i TXT. Po sprawdzeniu rekordów example.com według typu na serwerze AlmaLinux 9 i zmianie odpytywanego serwera DNS ta sama domena dawała różne wyniki w zależności od serwera: znikał wiersz Non-authoritative answer na początku odpowiedzi albo zmieniał się wynik zapytania ANY.

Poniższe wyniki uzyskano na koncie root na serwerze AlmaLinux 9.8. Adres serwera DNS ustawionego na serwerze zastąpiono przykładową wartością 192.0.2.53, a numery wersji pakietów również zastąpiono przykładowymi wartościami.

1️⃣ Jak używać polecenia nslookup

Podstawowa postać to [nslookup -opcja nazwa serwer-DNS], przy czym opcje i serwer DNS można pominąć. Gdy poda się tylko nazwę, nslookup pyta o adres tej nazwy serwer DNS ustawiony na serwerze.

nslookup example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Dwa wiersze Server i Address na górze pokazują serwer DNS, który odebrał zapytanie, a #53 na końcu to numer portu DNS. Bez podania typu rekordu nslookup sprawdza najpierw rekord A (IPv4), a potem rekord AAAA (IPv6), dlatego po dwóch adresach IPv4 pojawiły się dwa adresy IPv6.

Non-authoritative answer oznacza, że odpowiedział serwer DNS przechowujący wartość w pamięci podręcznej, a nie serwer, który bezpośrednio zarządza rekordami example.com. Dlatego tuż po zmianie rekordu wartość może się różnić od rzeczywistej.

2️⃣ Opcje nslookup

Opcje zapisuje się z łącznikiem przed nazwą.

-type to ta sama opcja co -query lub krótka forma -q. Zapytanie do 8.8.8.8 z -q=mx zwróciło ten sam jeden wiersz serwera pocztowego co -type=mx.

nslookup -q=mx google.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:

-timeout i -retry określają, jak długo czekać na serwer DNS, który nie odpowiada. 192.0.2.1 to adres zarezerwowany do dokumentacji, więc nie odpowiada pod nim żaden serwer.

nslookup -timeout=2 -retry=1 example.com 192.0.2.1
;; connection timed out; no servers could be reached

Z -timeout=2 -retry=1 nslookup po 2 sekundach wypisał wiersz [connection timed out] i zakończył działanie. Z -retry=2 trwało to 4 sekundy, a bez opcji 15 sekund. Aby skrypt nie zatrzymywał się na długo przez serwer, który nie odpowiada, warto zmniejszyć obie wartości.

Z -debug sekcje pytania i odpowiedzi pakietu odpowiedzi są wypisywane bez zmian.

nslookup -debug example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

------------
    QUESTIONS:
	example.com, type = A, class = IN
    ANSWERS:
    ->  example.com
	internet address = 104.20.23.154
	ttl = 300
    ->  example.com
	internet address = 172.66.147.243
	ttl = 300
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
------------
    QUESTIONS:
	example.com, type = AAAA, class = IN
    ANSWERS:
    ->  example.com
	has AAAA address 2606:4700:10::6814:179a
	ttl = 300
    ->  example.com
	has AAAA address 2606:4700:10::ac42:93f3
	ttl = 300
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Każdy rekord otrzymał ttl = 300, którego zwykły wynik nie pokazuje. Oznacza to, że serwer DNS, który otrzymał tę odpowiedź, może trzymać rekord w pamięci podręcznej do 300 sekund.

-norecurse prosi serwer DNS, by odpowiedział tylko tym, co już ma, zamiast szukać przez inne serwery. To samo zapytanie do 8.8.8.8 bez opcji zwróciło cztery adresy, ale z -norecurse zakończyło się [SERVFAIL].

nslookup -norecurse example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

** server can't find example.com: SERVFAIL
OpcjaKopiujOpis
-type=Określa sprawdzany typ rekordu; bez niego A, a potem AAAA
-q=Ta sama opcja co -type, określa sprawdzany typ rekordu
-timeout=Czas oczekiwania na odpowiedź na pierwsze zapytanie (sekundy)
-retry=Liczba wysłań zapytania, gdy nie ma odpowiedzi
-debugWypisuje pytanie i odpowiedź pakietu, aż po TTL
-norecurseProsi tylko o wartości tego serwera, bez przechodzenia przez inne serwery
OpcjaKopiujOpis
-query=Ta sama opcja co -type, określa sprawdzany typ rekordu
-port=Określa odpytywany port, domyślnie 53
-versionWypisuje wersję i kończy działanie

3️⃣ Sprawdzanie rekordów w nslookup (MX, NS, TXT, SOA)

Po wpisaniu typu rekordu za -type= sprawdzany jest tylko ten rekord. Wartość można zapisać wielkimi lub małymi literami.

Wartość -type=Zawarte informacje
A · AAAAAdres IPv4, adres IPv6
MXSerwer odbierający pocztę i jego priorytet
NSSerwery nazw zarządzające rekordami domeny
TXTWartości tekstowe, np. SPF
SOAGłówny serwer nazw strefy, e-mail administratora, numer seryjny, okresy odświeżania
CNAMEAlias wskazujący inną nazwę
PTRNazwa hosta powiązana z adresem IP (odwrotnie)
ANYProsi o wszystkie rekordy tej nazwy naraz

Serwery pocztowe sprawdza się rekordem MX.

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

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:

Liczba 10 po mail exchanger to priorytet. Jeśli serwerów pocztowych jest kilka, strona wysyłająca próbuje dostarczyć pocztę, zaczynając od serwera o najniższej liczbie. To samo zapytanie dla example.com zwróciło [mail exchanger = 0 .], a MX z samą kropką oznacza, że ta domena nie przyjmuje poczty.

[Authoritative answers can be found from:] na końcu zapytania MX to wiersz nagłówka, pod którym pokazywane są dołączone do odpowiedzi informacje o autorytatywnych serwerach nazw. W zapytaniach MX, NS i TXT w tym artykule odpowiedź nie zawierała tych informacji, więc pod nagłówkiem nic nie było.

Rekord NS zawiera serwery nazw, które bezpośrednio zarządzają rekordami domeny.

nslookup -type=ns example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com	nameserver = hera.ns.cloudflare.com.
example.com	nameserver = elliott.ns.cloudflare.com.

Authoritative answers can be found from:

example.com miała dwa serwery nazw. Te dwa serwery są autorytatywnymi serwerami nazw example.com.

W rekordzie TXT można zapisać wartości tekstowe bez ustalonego formatu.

nslookup -type=txt example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com	text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com	text = "v=spf1 -all"

Authoritative answers can be found from:

v=spf1 -all to wartość SPF mówiąca, że żaden serwer nie może wysyłać poczty pod tą nazwą domeny. Jeśli domena ma kilka rekordów TXT, pojawiają się one tak, po jednym w wierszu.

Rekord SOA zawiera podstawowe informacje o strefie.

nslookup -type=soa example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com
	origin = elliott.ns.cloudflare.com
	mail addr = dns.cloudflare.com
	serial = 2418004112
	refresh = 10000
	retry = 2400
	expire = 604800
	minimum = 1800

Authoritative answers can be found from:

origin to główny serwer nazw, a mail addr to adres e-mail administratora z @ zapisanym jako kropka. serial to numer seryjny, który rośnie przy każdej zmianie rekordów, a refresh, retry i expire to wartości czasu (w sekundach), których zapasowe serwery nazw używają do synchronizacji rekordów z serwerem głównym. minimum to czas przechowywania w pamięci podręcznej odpowiedzi o nieistniejącym rekordzie.

Aliasy sprawdza się rekordem CNAME. Zapytanie o www.github.com zwróciło jeden wiersz mówiący, że to alias github.com.

nslookup -type=cname www.github.com
Server:		192.0.2.53
Address:	192.0.2.53#53

www.github.com	canonical name = github.com.

-type=any prosi o wszystkie rekordy tej nazwy naraz. Zapytanie do serwera DNS ustawionego na serwerze zwróciło razem rekordy A, AAAA, MX i NS.

nslookup -type=any example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3
example.com	mail exchanger = 0 .
example.com	nameserver = hera.ns.cloudflare.com.
example.com	nameserver = elliott.ns.cloudflare.com.

Authoritative answers can be found from:

To samo zapytanie wysłane do 8.8.8.8 zwróciło tylko jeden wiersz [hinfo = “RFC8482”] i wiersz podpisu.

nslookup -type=any example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
example.com	hinfo = "RFC8482" ""
example.com	rdata_46 = HINFO 13 2 3600 20261029212708 20261027192708 34505 example.com. 2YBHcD7GmqHiW6E7e8Lx3z/gPoCsLbYw/Uegjy801hQ+4fYp5U7wKqc2 NXOONd8WS0xjgzfW5Dn0akDqdjltOw==

Authoritative answers can be found from:

RFC 8482 to dokument, który pozwala odpowiadać na zapytanie ANY krótką odpowiedzią zamiast wszystkich rekordów. Dlatego potrzebne rekordy sprawdza się, podając po jednym typie.

4️⃣ Wybór serwera DNS w nslookup

Jeśli po nazwie poda się serwer DNS, nslookup pyta ten serwer zamiast serwera DNS ustawionego na serwerze.

nslookup example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Wiersz Server zmienił się na 8.8.8.8, a cztery adresy były takie same jak w odpowiedzi serwera DNS ustawionego na serwerze. Tej postaci używa się po zmianie serwerów nazw, aby sprawdzić, czy nowe wartości dotarły do poszczególnych publicznych serwerów DNS.

Jeśli jako serwer DNS poda się jeden z serwerów nazw z zapytania NS, pytanie trafia bezpośrednio do serwera autorytatywnego.

nslookup example.com elliott.ns.cloudflare.com
Server:		elliott.ns.cloudflare.com
Address:	2606:4700:58::a29f:2ce4#53

Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Tym razem zniknął wiersz Non-authoritative answer. Wartość pochodzi bezpośrednio od serwera zarządzającego rekordami, więc jest to bieżąca wartość, która nie przeszła przez pamięć podręczną. W Address tuż pod wierszem Server pojawił się adres IPv6 tego serwera nazw.

Zapytanie o nazwę, która nie istnieje, zwraca [NXDOMAIN]. .invalid to domena najwyższego poziomu zarezerwowana tak, by nigdy nie była używana, więc odpowiedź brzmiała, że nazwa nie istnieje.

nslookup example.invalid
Server:		192.0.2.53
Address:	192.0.2.53#53

** server can't find example.invalid: NXDOMAIN

Natomiast no-such-host.example.com zakończyło się [No answer] zamiast NXDOMAIN. Oznacza to, że sprawdzanego rekordu nie było w odpowiedzi, a to inny wynik niż NXDOMAIN, gdy sama nazwa nie istnieje.

nslookup no-such-host.example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer

5️⃣ Zapytanie odwrotne w nslookup

Jeśli zamiast nazwy poda się adres IP, nslookup sprawdza rekord PTR i znajduje nazwę hosta powiązaną z tym adresem.

nslookup 8.8.8.8
8.8.8.8.in-addr.arpa	name = dns.google.

Authoritative answers can be found from:

8.8.8.8.in-addr.arpa to nazwa powstała przez zapisanie adresu IPv4 od tyłu i dodanie in-addr.arpa. Wartość rekordu PTR tej nazwy, dns.google., to nazwa hosta 8.8.8.8.

W zapytaniu odwrotnym nie pojawiły się dwa wiersze Server na górze. Sprawdzenie tego samego adresu przez nslookup 9.18 na serwerze Debian 12 dało tę samą postać.

6️⃣ Tryb interaktywny nslookup

Uruchomienie nslookup bez argumentów przenosi do trybu interaktywnego z monitem >. Przy sprawdzaniu kilku nazw i typów rekordów po kolei nie trzeba za każdym razem wpisywać całego polecenia od nowa.

nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> set type=mx
> google.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:
> set type=txt
> example.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
example.com	text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com	text = "v=spf1 -all"

Authoritative answers can be found from:
> exit

Po zmianie odpytywanego serwera DNS poleceniem server i ustawieniu typu rekordu przez set type= wystarczy potem wpisać samą nazwę, by sprawdzić ją z tymi ustawieniami. Wpisanie exit powoduje powrót do powłoki.

set all wypisuje wszystkie bieżące ustawienia.

nslookup
> set type=txt
> set all
Default server: 192.0.2.53
Address: 192.0.2.53#53

Set options:
  novc			nodebug		nod2
  search		recurse
  timeout = 0		retry = 3	port = 53	ndots = 1
  querytype = txt     	class = IN
  srchlist = example.internal
> exit

querytype zmienił się na ustawione wcześniej txt. retry = 3 i port = 53 to wartości domyślne, których nie zmieniano.

7️⃣ Instalacja nslookup w Linuksie i porównanie z dig i host

Jeśli po uruchomieniu nslookup w Linuksie pojawia się [command not found], należy zainstalować pakiet narzędzi BIND. Na serwerze AlmaLinux nslookup pochodził z pakietu bind-utils.

rpm -qf /usr/bin/nslookup
bind-utils-9.16.20-30.el9_8.2.x86_64

Na serwerze Debian 12 był to pakiet bind9-dnsutils. Dawna nazwa dnsutils nadal istniała jako pakiet przejściowy, który instaluje bind9-dnsutils.

dpkg -S /usr/bin/nslookup
bind9-dnsutils: /usr/bin/nslookup

W systemach z rodziny RHEL pakiet bind-utils instaluje się poniższym poleceniem.

dnf install bind-utils

W systemach z rodziny Debian instaluje się pakiet bind9-dnsutils.

apt install bind9-dnsutils

W tym samym pakiecie są też dig i host. Wszystkie trzy polecenia odpytują DNS, ale ich wynik wygląda inaczej.

PolecenieWynikZastosowanie
nslookupWiersz Server + odpowiedź, tryb interaktywnySprawdzanie kilku nazw i rekordów po kolei
digWszystkie sekcje pakietu odpowiedzi; z +short tylko wartościWyciąganie samych wartości w skrypcie
hostJedno zdanie na rekordSprawdzenie A, AAAA i MX naraz
host example.com
example.com has address 172.66.147.243
example.com has address 104.20.23.154
example.com has IPv6 address 2606:4700:10::6814:179a
example.com has IPv6 address 2606:4700:10::ac42:93f3
example.com mail is handled by 0 .

Nawet bez opcji host sprawdził naraz rekordy A, AAAA i MX i wypisał każdy jako zdanie w jednym wierszu. Z +short dig zostawia same adresy IP.

dig +short example.com
104.20.23.154
172.66.147.243

Do wyciągania samych wartości w skrypcie łatwiej użyć dig +short, a do sprawdzania kilku nazw po kolei wygodniejszy jest tryb interaktywny nslookup.

🌏 Jeśli doczytano do tego miejsca
Jak zobaczyć te same informacje bez poleceń
Serwery nazw i rekordy sprawdzone przez nslookup można też sprawdzić w ten sam sposób w sieci. Wyszukiwarka domen Whois dodaje do tego dane rejestracyjne i datę wygaśnięcia z polecenia whois i pokazuje wszystko na jednym ekranie.
Początkujący Wystarczy wpisać domenę, bez otwierania terminala czy CMD. Rejestrator, data rejestracji, data wygaśnięcia i status są pokazane w uporządkowany sposób, razem z liczbą dni do wygaśnięcia.
Eksperci Można porównać obok siebie serwery nazw zapisane w Whois z rzeczywistymi odpowiedziami DNS oraz sprawdzić rekordy A, AAAA, NS, MX i TXT, TTL, a nawet surowy tekst Whois.
Otwórz wyszukiwarkę domen

🔲 Symulator polecenia nslookup

W poniższym symulatorze można samodzielnie wpisywać nslookup, zmieniając typ rekordu i serwer DNS.

Symulator polecenia nslookupnslookup 9.16
[root@server work]#
Działa tylko w Twojej przeglądarce; odpowiedzi pochodzą z wirtualnego DNS z wartościami z prawdziwych zapytań, a ↑↓ przywołuje wcześniej wpisane polecenia.

🔢 FAQ & polecane treści

Również w nslookup w systemie Windows pierwszy argument to sprawdzana nazwa, a drugi to serwer DNS. Uruchomiony bez argumentów przechodzi do trybu interaktywnego z monitem >. Komunikaty wyniku w Windows mogą się różnić od tych w Linuksie.

nslookup kończy działanie z kodem wyjścia 1, jeśli nie powiedzie się choćby jedno zapytanie. Po zapytaniu o example.invalid, które zwróciło NXDOMAIN, wypisany kod wyjścia wynosił 1, a po zapytaniu o example.com wynosił 0.

Z -type=aaaa sprawdzany jest tylko rekord AAAA. Dla example.com pojawiły się wtedy tylko dwa adresy IPv6, bez adresu IPv4.

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 2   +   10   =