Tiện ích dòng lệnh DNS ngược là gì?


Câu trả lời:


56

đàomáy chủ nên là những gì bạn đang tìm kiếm;)

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

Trên hệ thống * nix bạn có thể thực hiện lệnh này: dig -x [address]

Ngoài ra, bạn có thể thêm +shortvào cuối diglệnh để chỉ xuất kết quả dns.

Trên Windows , sử dụngnslookup

EDIT: nslookup cũng hoạt động trên các hệ thống * nix. Thêm thông tin về lệnh nslookup cho dù nó dường như đã được thay thế từ bây giờ: http://linuxreviews.org/man/nslookup/


Cú pháp tương tự cũng hoạt động với drilltiện ích từ ldns, tức làdrill -x 123.123.123.123
Tullo_x86

52

Trên * nix bạn có thể sử dụng:

dig -x [address]

16
Đây chắc chắn là cách dễ nhất. Thêm + ngắn ở cuối để trả về không có gì ngoài kết quả thứ bảy. dig -x [address] +short
ColinM

3
+shortLá cờ đó thực sự hữu ích!
Neil

Cái này có hoạt động với địa chỉ IPv6 không?
Geremia

@ColinM Điểm tốt. Tôi đã chỉnh sửa câu trả lời của mình dựa trên điều này. Cảm ơn!
Marc-Andre R.

Vâng, @Geremia, theo man dig, Các addr là một địa chỉ IPv4 trong ký hiệu chấm thập phân, hoặc một địa chỉ IPv6 ruột được phân định.
Ricardo

8

Trên hầu hết các hệ thống Linux mà tôi biết bạn có thể sử dụng:

 nslookup <ip-number EX: 127.0.0.1>

sẽ làm việc trên dòng lệnh.

Hãy nghĩ về nó, không phải nslookup có sẵn trên Windows XP?


Vâng, thực sự. Và trong các phiên bản trước của Windows.
kubanchot

4

Câu hỏi này đã có một triệu câu trả lời, nhưng tôi sẽ thêm một câu hỏi khác. Đây là một chức năng nhỏ tôi đã viết để dễ dàng thực hiện đảo ngược DNS với đào. Thêm phần này vào ~/.bashrctệp của bạn , tải lại trình bao của bạn và sau đó bạn có thể thực hiện tra cứu DNS ngược với 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}"
}

Tra cứu DNS ngược được thực hiện bằng cách kiểm tra các bản ghi con trỏ (PTR). Nếu bạn muốn thực hiện đảo ngược DNS cho "1.2.3.4", bạn phải tra cứu các bản ghi con trỏ cho "4.3.2.1.in-addr.arpa". Hàm của tôi nhận một địa chỉ IP, đảo ngược thứ tự của các octet (tức là thay đổi nó từ 1.2.3.4 thành 4.3.2.1), sau đó sử dụng digđể thực hiện tra cứu PTR mà tôi vừa mô tả.

Tất nhiên, nslookup 1.2.3.4bạn có thể chỉ sử dụng nếu bạn có nó, nhưng tôi thích giải pháp dựa trên đào này vì nó sử dụng các máy chủ DNS của HĐH thay vì các máy chủ do nslookup cung cấp (nếu bạn muốn, nhân tiện, bạn có thể thêm các cờ đào bổ sung khi bạn gọi revdns, và họ sẽ được thông qua để đào)


Theo sự giúp đỡ của nó dig -x dot-notationlà "lối tắt cho tra cứu ngược". Tôi đã tự hỏi những gì phiên bản dài sẽ là. Cảm ơn vì đã giải thích! :)
webwurst

from man dig: Khi -x được sử dụng, không cần cung cấp các đối số tên, lớp và kiểu. đào tự động thực hiện tìm kiếm một tên như 94.2.0.192.in-addr.arpa và đặt loại truy vấn và lớp tương ứng thành PTR và IN.
Ricardo

3

Tôi biết rõ rằng dig / host / nslookup là những công cụ tiêu chuẩn cho những thứ này, nhưng tôi giữ chúng xung quanh để kiểm tra độ phân giải của HĐH (về cơ bản, để kiểm tra nsswitch.conf đang hoạt động chính xác):

tên gethostby:

#!/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";
}

thí dụ:

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
bạn có thể thực hiện "máy chủ getent [IP hoặc HOSTNAME]"
hayalci

Hmmm ... Tôi đã viết các công cụ ban đầu chỉ để chơi với các chức năng, vì vậy không mất gì ở đó nhưng tôi chắc chắn sẽ không dán chúng vào serverfault nếu tôi biết về công cụ getent. Cảm ơn con trỏ.
jj33

-1: chúng bị giới hạn ở IPv4, gethostbyname không truy xuất địa chỉ IPv6 khi chúng tồn tại và gethostbyaddr không chấp nhận địa chỉ IPv6.
bortzmeyer

Những chức năng này đã nhiều năm lỗi thời. Họ thậm chí đã lỗi thời khi điều này được viết. Trong perl và hầu hết các ngôn ngữ khác, bạn nên sử dụng getaddrinfo và getnameinfo.
Michael Hampton

3

Trên Windows tôi có thói quen sử dụng:

ping -a <ip address>

vì điều này cũng sẽ phản ánh dữ liệu từ hoststệp của bạn và THẮNG, v.v.


2

Hãy thử "máy chủ"

  • Tra cứu chuyển tiếp với 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
    
  • Tra cứu ngược với host:

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

Tương tự như đào

  • Tra cứu chuyển tiếp với dig:

    $ dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • Tra cứu ngược với dig:

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

1

Nếu bạn đang sử dụng nslookup thì đây là (giả sử 192.168.0.1 là IP được đề cập)

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

EDIT: Hãy nhớ tra cứu ngược chỉ hoạt động nếu có bản ghi PTR được tạo cho IP và không đảm bảo trả lại tên máy chủ bạn đang tìm kiếm. Hoàn toàn phụ thuộc vào cách DNS được cấu hình và duy trì trong tình huống của bạn.


5
nsloookup không còn được duy trì và các tác giả của nó khuyên bạn nên đào. Bên cạnh đó, dig -x đơn giản hơn nhiều so với việc tự đảo ngược các byte.
bortzmeyer

Đó là điều tốt để biết, cảm ơn rất nhiều cho đầu vào! Thói quen cũ chết cứng;)
squillman

1

Quyền hạn:

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

0

Chà, một người thân thiện vừa viết nslookup là mệnh lệnh, và anh ấy đúng. Nó hoạt động trên cả Unix và Windows. Không chắc chắn tại sao bạn xóa câu trả lời của bạn, nhưng bạn là chính xác thưa ông.


sai, có thể không.
Peter Turner

Vâng, tôi đã đăng nhanh một chút và sau khi kiểm tra tôi không chắc chắn về câu trả lời của mình, tôi chỉ cần đặt lại bài đăng của mình và chỉnh sửa nó để thêm chi tiết;)
Marc-Andre R.

OK, đúng vậy, nhưng tôi không chấp nhận câu trả lời đó. Quá tệ, chúng tôi không thể có được GoogleAX AJAX thời gian thực ở đây.
Peter Turner

lol vâng, chúng ta không thể có tất cả mọi thứ;) Chúc một ngày tốt lành, tôi hy vọng tôi sẽ giúp bạn;)
Marc-Andre R.

0

Tôi thích đào dòng lệnh cho Windows (có sẵn tại đây: http://members.shaw.ca/nicholas.fong/dig/ ) cho nslookup bất cứ ngày nào.

Nếu bạn phải kiểm tra / quản trị DNS từ máy trạm Windows, hãy lấy công cụ này. Sau đó:

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

... Ngoài ra, hãy nhớ thêm c: \ dig vào đường dẫn của bạn!


0

Đây là ý kiến ​​của tôi về việc tra cứu ngược DNS hoàn chỉnh hơn. Hy vọng điều này sẽ có ích cho người xem trong tương lai của trang này.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.