Co to jest narzędzie wiersza polecenia odwrotnego DNS?

71

Jakie jest polecenie, aby znaleźć nazwę komputera, biorąc pod uwagę jego adres IP?

Zawsze zapominam, co to za polecenie, ale wiem, że istnieje ono w systemie Windows i zakładam, że istnieje ono w wierszu poleceń * nix.

Peter Turner
źródło

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/

Marc-Andre R.
źródło
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]
Blady koń
źródło
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?

mdpc
źródło
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)

Hayden Schiff
źródło
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
jj33
źródło
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.

Dave Webb
źródło
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.
    
StackzOfZtuff
źródło
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.

squillman
źródło
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
1

PowerShell:

[net.dns]::gethostentry("69.59.196.212").HostName
Richard
źródło
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ę.

Peter Turner
źródło
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!

Cory J.
źródło
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;
Boschko
źródło
-1

nbtstat -a <adres ip>

Peter Turner
źródło
nbstat nie jest narzędziem DNS, ale WINS / NetBIOS
użytkownik2320464