Apa utilitas garis perintah DNS terbalik?


Jawaban:


56

gali dan host harus menjadi yang Anda cari;)

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

Pada sistem * nix Anda dapat melakukan perintah ini: dig -x [address]

Atau Anda dapat menambahkan +shortdi akhir digperintah untuk hanya menghasilkan hasil dns.

Di Windows , gunakannslookup

EDIT: nslookup berfungsi juga pada sistem * nix. Lebih banyak info tentang perintah nslookup apakah tampaknya telah diganti sejak beberapa waktu sekarang: http://linuxreviews.org/man/nslookup/


Sintaks yang sama juga berfungsi dengan drillutilitas dari ldns, yaitudrill -x 123.123.123.123
Tullo_x86

53

Pada * nix Anda dapat menggunakan:

dig -x [address]

16
Ini jelas merupakan cara termudah. Tambahkan + pendek di akhir untuk mengembalikan apa-apa selain hasil rdns. dig -x [address] +short
ColinM

3
Itu +shortbendera benar-benar berguna!
Neil

Apakah ini berfungsi dengan alamat IPv6?
Geremia

@ColinM Poin bagus. Saya telah mengedit jawaban saya berdasarkan ini. Terima kasih!
Marc-Andre R.

Ya, @Geremia, menurut man dig, addr adalah alamat IPv4 dalam notasi desimal bertitik, atau alamat IPv6 yang dibatasi titik dua.
Ricardo

8

Pada sebagian besar sistem Linux yang saya tahu Anda dapat gunakan:

 nslookup <ip-number EX: 127.0.0.1>

akan bekerja pada baris perintah.

Kalau dipikir-pikir, bukankah nslookup tersedia di Windows XP?


Ya memang. Dan di versi Windows sebelumnya.
kubanczyk

4

Pertanyaan ini sudah memiliki sejuta jawaban, tetapi saya akan menambahkan satu lagi. Inilah sedikit fungsi yang saya tulis untuk melakukan reverse DNS dengan mudah dengan menggali. Tambahkan ini ke ~/.bashrcfile Anda , muat ulang shell Anda, dan kemudian Anda dapat melakukan pencarian DNS terbalik dengan 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}"
}

Reverse DNS lookup dilakukan dengan memeriksa catatan pointer (PTR). Jika Anda ingin melakukan reverse DNS untuk "1.2.3.4", Anda harus mencari catatan pointer untuk "4.3.2.1.in-addr.arpa". Fungsi saya mengambil alamat IP, membalik urutan oktet (yaitu mengubahnya dari 1.2.3.4 ke 4.3.2.1), dan kemudian menggunakan diguntuk menjalankan pencarian PTR yang baru saja saya jelaskan.

Anda dapat, tentu saja, hanya menggunakan nslookup 1.2.3.4jika Anda memilikinya, tetapi saya lebih suka solusi berbasis-penggalian ini karena ia menggunakan server DNS OS dan bukannya yang disediakan nslookup (jika Anda mau, Anda dapat menambahkan flag dig tambahan ketika Anda menelepon revdns, dan mereka akan lolos untuk menggali)


Menurut bantuannya dig -x dot-notationadalah "jalan pintas untuk pencarian terbalik". Saya bertanya-tanya apa versi panjangnya. Terima kasih telah menjelaskan! :)
webwurst

from man dig: Ketika -x digunakan, tidak perlu memberikan nama, kelas dan tipe argumen. gali secara otomatis melakukan pencarian untuk nama seperti 94.2.0.192.in-addr.arpa dan setel tipe kueri dan kelas menjadi masing-masing PTR dan IN.
Ricardo

3

Saya sadar betul bahwa dig / host / nslookup adalah alat standar untuk ini, tetapi saya tetap menggunakannya untuk menguji resolusi OS (pada dasarnya, untuk menguji nsswitch.conf bekerja dengan benar):

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";
}

contoh:

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
Anda dapat melakukan "getent hosts [IP atau HOSTNAME]"
hayalci

Hmmm ... Saya menulis alat awalnya hanya untuk bermain dengan fungsi, jadi tidak ada kerugian di sana tapi saya pasti tidak akan menempelkannya ke serverfault jika saya tahu tentang alat getent. Terima kasih untuk penunjuknya.
jj33

-1: mereka terbatas pada IPv4, gethostbyname tidak mengambil alamat IPv6 ketika mereka ada dan gethostbyaddr tidak menerima alamat IPv6.
bortzmeyer

Fungsi-fungsi ini sudah bertahun-tahun usang. Mereka bahkan usang ketika ini ditulis. Dalam perl dan sebagian besar bahasa lain Anda harus menggunakan getaddrinfo dan getnameinfo.
Michael Hampton

3

Pada Windows saya terbiasa menggunakan:

ping -a <ip address>

karena ini juga akan mencerminkan data dari hostsfile Anda dan MENANG dan seterusnya.


3

Coba "tuan rumah"

  • Teruskan pencarian dengan 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
    
  • Membalikkan pencarian dengan host:

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

Mirip dengan menggali

  • Teruskan pencarian dengan dig:

    $ dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • Membalikkan pencarian dengan dig:

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

1

Jika Anda menggunakan nslookup, ini adalah ini (dengan asumsi 192.168.0.1 sebagai IP yang dimaksud)

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

EDIT: Ingat pencarian terbalik hanya berfungsi jika ada catatan PTR yang dibuat untuk IP, dan itu tidak dijamin untuk mengembalikan nama host yang Anda cari. Sepenuhnya tergantung pada bagaimana DNS dikonfigurasi dan dipertahankan dalam situasi Anda.


5
nsloookup tidak lagi dipertahankan dan penulisnya merekomendasikan menggali. Selain itu, gali -x jauh lebih sederhana daripada inversing byte sendiri.
bortzmeyer

Itu bagus untuk diketahui, terima kasih banyak atas masukannya! Kebiasaan lama mati keras;)
squillman

1

Powershell:

[net.dns]::gethostentry("69.59.196.212").HostName

0

Nah, beberapa orang yang ramah baru saja menulis nslookup adalah perintah, dan dia benar. Ia bekerja di kedua Unix dan Windows. Tidak yakin mengapa Anda menghapus jawaban Anda, tetapi Anda benar, Tuan.


err, mungkin tidak.
Peter Turner

Ya baik, saya melakukan posting sedikit cepat, dan setelah cek saya tidak yakin sama sekali dengan jawaban saya, saya hanya meletakkan kembali posting saya dan mengeditnya untuk menambahkan lebih detail;)
Marc-Andre R.

OK, memang, tapi saya tidak menerima jawaban itu. Sayang sekali kami tidak bisa mendapatkan waktu sebenarnya Googley AJAX di sini.
Peter Turner

lol ya baik, kita tidak bisa memiliki segalanya;) Have a nice day, saya berharap saya membantu Anda;)
Marc-Andre R.

0

Saya lebih suka penggalian baris perintah untuk Windows (tersedia di sini: http://members.shaw.ca/nicholas.fong/dig/ ) daripada nslookup setiap hari.

Jika Anda harus menguji / mengelola DNS dari workstation Windows, ambil alat ini. Kemudian:

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

... juga, ingatlah untuk menambahkan c: \ dig ke jalur Anda!


0

Ini pendapat saya tentang pencarian reverse DNS yang lebih lengkap. Semoga ini berguna bagi pemirsa halaman ini di masa depan.

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.