Polecenie nslookup: użycie i opcje, sprawdzanie rekordów i wybór serwera DNS
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.comServer: 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:93f3Dwa 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.8Server: 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 reachedZ -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.8Server: 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:93f3Każ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.8Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find example.com: SERVFAIL| Opcja | Kopiuj | Opis |
|---|---|---|
| -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 | |
| -debug | Wypisuje pytanie i odpowiedź pakietu, aż po TTL | |
| -norecurse | Prosi tylko o wartości tego serwera, bez przechodzenia przez inne serwery |
| Opcja | Kopiuj | Opis |
|---|---|---|
| -query= | Ta sama opcja co -type, określa sprawdzany typ rekordu | |
| -port= | Określa odpytywany port, domyślnie 53 | |
| -version | Wypisuje 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 · AAAA | Adres IPv4, adres IPv6 |
| MX | Serwer odbierający pocztę i jego priorytet |
| NS | Serwery nazw zarządzające rekordami domeny |
| TXT | Wartości tekstowe, np. SPF |
| SOA | Główny serwer nazw strefy, e-mail administratora, numer seryjny, okresy odświeżania |
| CNAME | Alias wskazujący inną nazwę |
| PTR | Nazwa hosta powiązana z adresem IP (odwrotnie) |
| ANY | Prosi o wszystkie rekordy tej nazwy naraz |
Serwery pocztowe sprawdza się rekordem MX.
nslookup -type=mx google.comServer: 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.comServer: 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.comServer: 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.comServer: 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.comServer: 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.comServer: 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.8Server: 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.8Server: 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:93f3Wiersz 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.comServer: 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:93f3Tym 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.invalidServer: 192.0.2.53
Address: 192.0.2.53#53
** server can't find example.invalid: NXDOMAINNatomiast 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.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer5️⃣ 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.88.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:
> exitPo 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
> exitquerytype 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/nslookupbind-utils-9.16.20-30.el9_8.2.x86_64Na 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/nslookupbind9-dnsutils: /usr/bin/nslookupW systemach z rodziny RHEL pakiet bind-utils instaluje się poniższym poleceniem.
dnf install bind-utilsW systemach z rodziny Debian instaluje się pakiet bind9-dnsutils.
apt install bind9-dnsutilsW tym samym pakiecie są też dig i host. Wszystkie trzy polecenia odpytują DNS, ale ich wynik wygląda inaczej.
| Polecenie | Wynik | Zastosowanie |
|---|---|---|
| nslookup | Wiersz Server + odpowiedź, tryb interaktywny | Sprawdzanie kilku nazw i rekordów po kolei |
| dig | Wszystkie sekcje pakietu odpowiedzi; z +short tylko wartości | Wyciąganie samych wartości w skrypcie |
| host | Jedno zdanie na rekord | Sprawdzenie A, AAAA i MX naraz |
host example.comexample.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.com104.20.23.154
172.66.147.243Do wyciągania samych wartości w skrypcie łatwiej użyć dig +short, a do sprawdzania kilku nazw po kolei wygodniejszy jest tryb interaktywny nslookup.
🔲 Symulator polecenia nslookup
W poniższym symulatorze można samodzielnie wpisywać nslookup, zmieniając typ rekordu i serwer DNS.
🔢 FAQ & polecane treści
Zapytanie DNS
Polecenie host w Linuksie | polecenie do zapytań DNS
Artykuł o tym, jak poleceniem host znaleźć adres IP nazwy hosta i odwrotnie nazwę hosta dla adresu IP.
Sprawdzanie w sieci
Strony do sprawdzania rekordów DNS i mierzenia wydajności serwerów nazw
Artykuł o sprawdzaniu wartości rekordów DNS z wielu regionów przez whatsmydns i porównywaniu szybkości odpowiedzi serwerów DNS przez DNSPerf.
ℹ️ 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.