Co to jest narzędzie wiersza polecenia odwrotnego DNS?


Odpowiedzi:


56

kop i host powinny być tym, czego szukasz;)

http://www.unix.com/unix-dummies-questions-answers/9866-nslookup-linux.html

W systemie * nix możesz wykonać następujące polecenie: dig -x [address]

Alternatywnie możesz dodać +shortna końcu digpolecenia, aby wyświetlać tylko wynik dns.

W systemie Windows użyjnslookup

EDYCJA: nslookup działa również w systemach * nix. Więcej informacji o poleceniu nslookup, czy wydaje się, że został zastąpiony od jakiegoś czasu: http://linuxreviews.org/man/nslookup/


Ta sama składnia działa również z drillnarzędziem z ldns, tj.drill -x 123.123.123.123
Tullo_x86

52

Na * nix możesz użyć:

dig -x [address]

16
To zdecydowanie wydaje się najłatwiejszym sposobem. Dodaj + krótki na końcu, aby zwrócić tylko wynik rdns. dig -x [address] +short
ColinM

3
Ta +shortflaga jest naprawdę przydatna!
Neil,

Czy to działa z adresami IPv6?
Geremia

@ColinM Dobra uwaga. Na tej podstawie zredagowałem swoją odpowiedź. Dzięki!
Marc-Andre R.

Tak, @Geremia, zgodnie z man dig, Adres to adres IPv4 w notacji dziesiętnej z kropkami lub adres IPv6 rozdzielany dwukropkami.
Ricardo

8

W większości znanych mi systemów Linux możesz używać:

 nslookup <ip-number EX: 127.0.0.1>

będzie działał w linii poleceń.

Pomyśl o tym, czy nslookup nie jest dostępny w systemie Windows XP?


W rzeczy samej. I we wcześniejszych wersjach systemu Windows.
kubańczyk

4

To pytanie ma już milion odpowiedzi, ale dodam kolejne. Oto mała funkcja, którą napisałem do łatwego wykonywania odwrotnego DNS z dig. Dodaj to do ~/.bashrcpliku, załaduj ponownie powłokę, a następnie możesz wykonać odwrotne wyszukiwanie DNS za pomocą revdns 1.2.3.4:

function revdns() {
    octets=""
    addr="in-addr.arpa"

    # split the IP address into an array of octets
    IFS="." read -r -a octets <<< "$1"

    # add each octet to our $addr string in reverse order
    for octet in "${octets[@]}"; do
         addr=$octet"."$addr
    done

    # run a DNS pointer lookup with dig
    # `+short` makes dig's output very terse (un-verbose)
    # `"${@:2}"` passes any extra params from this command to dig
    dig ptr +short $addr "${@:2}"
}

Odwrotne wyszukiwanie DNS odbywa się poprzez sprawdzenie rekordów wskaźnika (PTR). Jeśli chcesz zrobić odwrotny DNS dla „1.2.3.4”, musisz wyszukać rekordy wskaźnika dla „4.3.2.1.in-addr.arpa”. Moja funkcja pobiera adres IP, odwraca kolejność oktetów (tj. Zmienia ją z 1.2.3.4 na 4.3.2.1), a następnie używa digdo wykonania właśnie opisanego PTR.

Możesz oczywiście użyć, nslookup 1.2.3.4jeśli go masz, ale wolę to rozwiązanie oparte na wykopach, ponieważ używa ono serwerów DNS systemu operacyjnego zamiast serwerów dostarczonych przez nslookup (jeśli chcesz, możesz dodać dodatkowe flagi dig kiedy zadzwonisz revdns, a oni przejdą do wykopania)


Według jego pomocy dig -x dot-notationznajduje się „skrót do wyszukiwania wstecznego”. Zastanawiałem się, jaka będzie długa wersja. Dzięki za wyjaśnienie! :)
webwurst

from man dig: Gdy używane jest -x, nie ma potrzeby podawania argumentów nazwa, klasa i typ. dig automatycznie wykonuje wyszukiwanie nazwy takiej jak 94.2.0.192.in-addr.arpa i ustawia typ zapytania i klasę odpowiednio na PTR i IN.
Ricardo

3

Wiem dobrze, że dig / host / nslookup są standardowymi narzędziami do nich, ale trzymam je do testowania rozdzielczości systemu operacyjnego (zasadniczo, aby przetestować nsswitch.conf działa poprawnie):

gethostbyname:

#!/usr/bin/perl

use Socket;

my @t = gethostbyname($ARGV[0]);
print "\$name     = $t[0]\n"; shift(@t);
print "\$aliases  = $t[0]\n"; shift(@t);
print "\$addrtype = $t[0]\n"; shift(@t);
print "\$length   = $t[0]\n"; shift(@t);

foreach (@t) {
  print "          = ", inet_ntoa($_), "\n";
}

gethostbyaddr:

#!/usr/bin/perl

use Socket;

my @t = gethostbyaddr(inet_aton($ARGV[0]), AF_INET);
print "\$name     = $t[0]\n"; shift(@t);
print "\$aliases  = $t[0]\n"; shift(@t);
print "\$addrtype = $t[0]\n"; shift(@t);
print "\$length   = $t[0]\n"; shift(@t);

foreach (@t) {
  print "          = ", inet_ntoa($_), "\n";
}

przykład:

g3 0 /home/jj33/swap > gethostbyname www.google.com
$name     = www.l.google.com
$aliases  = www.google.com
$addrtype = 2
$length   = 4
          = 72.14.205.147
          = 72.14.205.103
          = 72.14.205.104
          = 72.14.205.99
g3 0 /home/jj33/swap > gethostbyaddr 72.14.205.147 
$name     = qb-in-f147.google.com
$aliases  = 
$addrtype = 2
$length   = 4
          = 72.14.205.147

4
możesz zrobić „getent hosts [IP lub HOSTNAME]”
hayalci

Hmmm ... Narzędzia napisałem pierwotnie tylko po to, aby bawić się funkcjami, więc nie ma strat, ale z pewnością nie wkleiłbym ich do błędu serwera, gdybym wiedział o narzędziu getent. Dzięki za wskaźnik.
jj33

-1: są ograniczone do IPv4, gethostbyname nie pobiera adresów IPv6, jeśli istnieją, a gethostbyaddr nie akceptuje adresów IPv6.
bortzmeyer

Te funkcje są przez wiele lat przestarzałe. Były nawet przestarzałe, kiedy to zostało napisane. W Perlu i większości innych języków powinieneś używać getaddrinfo i getnameinfo.
Michael Hampton

3

W systemie Windows nabrałem zwyczaju używania:

ping -a <ip address>

ponieważ będzie to również odzwierciedlać dane z twojego hostspliku i WINS i tak dalej.


2

Wypróbuj „host”

  • Wyszukiwanie do przodu za pomocą host:

    $ host google-public-dns-b.google.com.
    google-public-dns-b.google.com has address 8.8.4.4
    google-public-dns-b.google.com has IPv6 address 2001:4860:4860::8844
    
  • Wyszukiwanie wsteczne za pomocą host:

    $ host 8.8.4.4
    4.4.8.8.in-addr.arpa domain name pointer google-public-dns-b.google.com.
    

Podobne do wykopalisk

  • Wyszukiwanie do przodu za pomocą dig:

    $ dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • Wyszukiwanie wsteczne za pomocą dig:

    $ dig -x 8.8.4.4 +short
    google-public-dns-b.google.com.
    

1

Jeśli używasz nslookup, to jest to (zakładając 192.168.0.1 jako adres IP)

> set type=ptr
> 1.0.168.192.in-addr.arpa

EDYCJA: Pamiętaj, że wyszukiwanie wsteczne działa tylko wtedy, gdy dla adresu IP utworzono rekord PTR i nie ma gwarancji zwrócenia poszukiwanej nazwy hosta. Całkowicie zależy od konfiguracji i obsługi DNS w twojej sytuacji.


5
nsloookup nie jest już utrzymywany, a jego autorzy zalecają kopanie. Poza tym dig -x jest znacznie prostszy niż samodzielne odwracanie bajtów.
bortzmeyer

To dobrze wiedzieć, wielkie dzięki za wkład! Stare nawyki umierają ciężko;)
squillman


0

Cóż, przyjazna osoba właśnie napisała nslookup to polecenie i ma rację. Działa zarówno w systemie Unix, jak i Windows. Nie jestem pewien, dlaczego usunąłeś swoją odpowiedź, ale masz rację.


tak, może nie.
Peter Turner

Tak, cóż, opublikowałem trochę szybko, a po sprawdzeniu nie byłem pewien mojej odpowiedzi, po prostu odłożyłem swój post i poddałem go edycji, aby dodać więcej szczegółów;)
Marc-Andre R.

OK, prawda, ale nie zgadzam się z tą odpowiedzią. Szkoda, że ​​nie możemy uzyskać Googley AJAX w czasie rzeczywistym tutaj.
Peter Turner

lol no cóż, nie możemy mieć wszystkiego;) Miłego dnia, mam nadzieję, że ci pomogę;)
Marc-Andre R.,

0

Wolę przegląd wiersza polecenia dla systemu Windows (dostępny tutaj: http://members.shaw.ca/nicholas.fong/dig/ ) niż nslookup każdego dnia.

Jeśli musisz przetestować / administrować DNS ze stacji roboczej Windows, weź to narzędzie. Następnie:

C:\dig>dig -x <IP Address>

... pamiętaj też, aby dodać c: \ dig do swojej ścieżki!


0

To moje podejście do pełniejszego wyszukiwania wstecznego DNS. Mam nadzieję, że przyda się to przyszłym użytkownikom tej strony.

for ip in {1..254..1}; do dig -x 1.1.1.$ip | grep $ip >> dns.txt; done;

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.