ยูทิลิตีบรรทัดคำสั่ง reverse DNS คืออะไร


71

คำสั่งในการค้นหาชื่อของคอมพิวเตอร์ที่ให้ที่อยู่ IP ของมันคืออะไร?

ฉันมักจะลืมว่าคำสั่งนี้คืออะไร แต่ฉันรู้ว่ามันมีอยู่ใน Windows และฉันคิดว่ามันมีอยู่ในบรรทัดคำสั่ง * nix

คำตอบ:


56

ขุดและโฮสต์ควรเป็นสิ่งที่คุณกำลังมองหา;)

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

บนระบบ * nix คุณสามารถทำคำสั่งนี้: dig -x [address]

หรือคุณสามารถเพิ่ม+shortที่ส่วนท้ายของdigคำสั่งเพื่อแสดงผลผลลัพธ์ dns เท่านั้น

บน Windowsให้ใช้nslookup

แก้ไข: nslookup ทำงานบนระบบ * nix ด้วย ข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง nslookup ไม่ว่าจะถูกแทนที่มานานแล้ว: http://linuxreviews.org/man/nslookup/


ไวยากรณ์เดียวกันนี้ยังใช้งานได้กับdrillยูทิลิตี้จาก ldns เช่นdrill -x 123.123.123.123
Tullo_x86

52

ใน * ระวังคุณสามารถใช้:

dig -x [address]

16
นี่เป็นวิธีที่ง่ายที่สุดแน่นอน เพิ่ม + สั้นที่ท้ายเพื่อส่งคืนอะไร แต่ผลลัพธ์ rdns dig -x [address] +short
ColinM

3
นั่น+shortธงเป็นประโยชน์จริงๆ!
Neil

สิ่งนี้ใช้ได้กับที่อยู่ IPv6 หรือไม่
Geremia

@ColinM จุดดี ฉันได้แก้ไขคำตอบของฉันตามสิ่งนี้ ขอบคุณ!
Marc-Andre R.

ใช่ @Geremia ตามman dig, addr คือที่อยู่ IPv4 ในสัญกรณ์ประทศนิยมหรือลำไส้ใหญ่ที่คั่นอยู่ IPv6
Ricardo

8

ในระบบ Linux ส่วนใหญ่ที่ฉันตระหนักถึงคุณสามารถใช้:

 nslookup <ip-number EX: 127.0.0.1>

จะทำงานบนบรรทัดคำสั่ง

ลองคิดดูสิ Windows XP ไม่สามารถใช้ได้


ใช่แน่นอน. และใน Windows รุ่นก่อนหน้า
kubanczyk

4

คำถามนี้มีคำตอบนับล้านข้อ แต่ฉันจะเพิ่มอีกหนึ่งคำถาม นี่คือฟังก์ชั่นเล็ก ๆ น้อย ๆ ที่ฉันเขียนเพื่อทำ DNS ย้อนกลับอย่างง่ายด้วยการขุด เพิ่มลงใน~/.bashrcไฟล์ของคุณโหลดเชลล์ของคุณใหม่จากนั้นคุณสามารถย้อนกลับการค้นหา DNS ด้วย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}"
}

การค้นหา DNS แบบย้อนกลับทำได้โดยการตรวจสอบตัวชี้ (PTR) ถ้าคุณต้องการทำ DNS ย้อนกลับสำหรับ "1.2.3.4" คุณต้องค้นหาเรคคอร์ดตัวชี้สำหรับ "4.3.2.1.in-addr.arpa" ฟังก์ชั่นของฉันใช้เวลาในที่อยู่ IP กลับคำสั่งของออคเต็ต (เช่นเปลี่ยนจาก 1.2.3.4 เป็น 4.3.2.1) จากนั้นใช้digเพื่อดำเนินการค้นหา PTR ที่ฉันเพิ่งอธิบาย

แน่นอนคุณสามารถใช้เพียงแค่nslookup 1.2.3.4ถ้าคุณมี แต่ฉันชอบโซลูชันที่ใช้ dig นี้เพราะใช้เซิร์ฟเวอร์ DNS ของระบบปฏิบัติการแทนการใช้ nslookup ที่ให้มา (ถ้าคุณต้องการคุณสามารถเพิ่มค่าสถานะ dig เพิ่มเติมได้ เมื่อคุณโทรrevdnsและพวกเขาจะถูกส่งผ่านไปยังขุด)


ตามความช่วยเหลือของมันdig -x dot-notationคือ "ทางลัดสำหรับการค้นหาแบบย้อนกลับ" ฉันสงสัยว่าเวอร์ชั่นยาวจะเป็นอย่างไร ขอบคุณที่อธิบาย! :)
webwurst

จากman dig: เมื่อใช้ -x ไม่จำเป็นต้องระบุอาร์กิวเมนต์ class และ type ขุดทำการค้นหาโดยอัตโนมัติสำหรับชื่อเช่น 94.2.0.192.in-addr.arpa และตั้งค่าชนิดของแบบสอบถามและคลาสเป็น PTR และ IN ตามลำดับ
Ricardo

3

ฉันรู้ดีว่าการขุด / host / nslookup เป็นเครื่องมือมาตรฐานสำหรับสิ่งเหล่านี้ แต่ฉันเก็บไว้รอบ ๆ เพื่อทดสอบความละเอียดของระบบปฏิบัติการ (เป็นหลักเพื่อทดสอบ nsswitch.conf ทำงานอย่างถูกต้อง):

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

ตัวอย่าง:

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
ที่คุณสามารถทำได้ "เจ้าภาพ getent [IP หรือ HOSTNAME]"
hayalci

อืม ... ฉันเขียนเครื่องมือ แต่เดิมเพื่อเล่นกับฟังก์ชั่นดังนั้นไม่มีการสูญเสียที่นั่น แต่แน่นอนว่าฉันจะไม่วางมันลงใน serverfault ถ้าฉันรู้เกี่ยวกับเครื่องมือ getent ขอบคุณสำหรับตัวชี้
jj33

-1: พวกเขาถูก จำกัด ที่ IPv4, gethostbyname จะไม่ดึงข้อมูลที่อยู่ IPv6 เมื่อมีอยู่และ gethostbyaddr ไม่ยอมรับที่อยู่ IPv6
bortzmeyer

ฟังก์ชั่นเหล่านี้ล้าสมัยไปหลายปี พวกเขาล้าสมัยไปแล้วเมื่อสิ่งนี้ถูกเขียนขึ้น ในภาษา Perl และภาษาอื่น ๆ ส่วนใหญ่คุณควรใช้ getaddrinfo และ getnameinfo
Michael Hampton

3

ใน Windows ฉันเข้าสู่นิสัยการใช้:

ping -a <ip address>

เช่นนี้จะสะท้อนข้อมูลจากhostsไฟล์ของคุณและ WINS และอื่น ๆ


2

ลอง "โฮสต์"

  • ส่งต่อการค้นหาด้วย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
    
  • ย้อนกลับการค้นหาด้วยhost:

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

คล้ายกับขุด

  • ส่งต่อการค้นหาด้วยdig:

    $ dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • ย้อนกลับการค้นหาด้วยdig:

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

1

หากคุณใช้ nslookup สิ่งนี้ (สมมติว่า 192.168.0.1 เป็น IP ที่เป็นปัญหา)

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

แก้ไข: จำไว้ว่าการค้นหาแบบย้อนกลับจะทำงานได้ก็ต่อเมื่อมีเรคคอร์ด PTR ที่สร้างขึ้นสำหรับ IP และไม่รับประกันว่าจะส่งคืนชื่อโฮสต์ที่คุณกำลังมองหา ขึ้นอยู่กับวิธีการกำหนดค่า DNS และดูแลรักษาในสถานการณ์ของคุณ


5
nsloookup ไม่ได้รับการดูแลรักษาอีกต่อไปและผู้เขียนแนะนำให้ขุด นอกจากนี้ dig -x ยังง่ายกว่าการเรียกไบต์ด้วยตัวคุณเอง
bortzmeyer

ขอบคุณมากสำหรับการป้อนข้อมูล! นิสัยเก่า ๆ ตายยาก)
squillman


0

คนที่เป็นมิตรบางคนเพิ่งเขียน nslookup คือคำสั่งและเขาพูดถูก มันทำงานได้ทั้ง Unix และ Windows ไม่แน่ใจว่าทำไมคุณลบคำตอบของคุณ แต่คุณเป็นคนที่ถูกต้อง


เอาละอาจจะไม่
Peter Turner

ใช่ดีที่ฉันได้โพสต์บิตได้อย่างรวดเร็วและหลังจากการตรวจสอบผมไม่แน่ใจว่าทุกอย่างของคำตอบของฉันฉันเพียงแค่นำกลับมาโพสต์ของฉันและแก้ไขเพื่อเพิ่มรายละเอียด;)
มาร์คอังเดรอาร์

ตกลงมันเป็น แต่ฉันไม่ยอมรับคำตอบนั้น น่าเสียดายที่เราไม่สามารถรับ AJAX แบบเรียลไทม์ได้ที่นี่
Peter Turner

ฮ่า ๆ ๆ ดีเราไม่สามารถมีทุกอย่าง;) มีวันที่ดีฉันหวังว่าฉันช่วยให้คุณ;)
มาร์คอังเดรอาร์

0

ฉันชอบขุดบรรทัดคำสั่งสำหรับ Windows (ใช้ได้ที่นี่: http://members.shaw.ca/nicholas.fong/dig/ ) เพื่อ nslookup ทุกวัน

หากคุณต้องทดสอบ / ดูแล DNS จากเวิร์กสเตชัน Windows ให้คว้าเครื่องมือนี้ แล้ว:

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

... นอกจากนี้อย่าลืมเพิ่ม c: \ dig ไปยังเส้นทางของคุณ!


0

เธอคือฉันใช้เวลาในการค้นหา DNS ย้อนกลับที่สมบูรณ์มากขึ้น หวังว่าสิ่งนี้จะมีประโยชน์สำหรับผู้ดูหน้านี้ในอนาคต

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.