วิธีค้นหาชื่อโฮสต์จาก IP โดยไม่ต้องล็อกอินเข้าสู่โฮสต์


128

ฉันต้องการค้นหาชื่อโฮสต์ของโฮสต์ UNIX ที่รู้จัก IP โดยไม่ต้องลงชื่อเข้าใช้โฮสต์ UNIX นั้น


19
NBTSTAT -A 10.10.10.10 สำหรับ windows
Kanagavelu Sugumar

2
คุณจะยอมรับคำตอบไหม?
เปาโลสเตฟาน

2
@PolooloStefan หากผู้ใช้เห็นครั้งสุดท้ายในปี 2009 มันเป็นเหตุการณ์ที่ไม่น่าจะเป็นไปได้สูงมาก
Boris Treukhov

คำตอบ:


163

ใช้nslookup

nslookup 208.77.188.166 
...
Non-authoritative answer:
166.188.77.208.in-addr.arpa     name = www.example.com.

2
บน Centos ที่ติดตั้งคุณจะต้องเรียกใช้sudo yum install bind-utilsก่อน สิ่งนี้จะติดตั้งการค้นหา nslookup ให้คุณ
lfender6445

nslookup เลิกใช้แล้ว คุณสามารถใช้ 'dig' หรือ 'host' แทนได้
P. Barbadew

74

คุณสามารถทำการค้นหา DNS ย้อนกลับด้วยhostเช่นกัน เพียงให้ที่อยู่ IP เป็นอาร์กิวเมนต์:

$ host 192.168.0.10
server10 has address 192.168.0.10

43

ยูทิลิตี้อีก NS ค้นหาที่สามารถนำมาใช้สำหรับการค้นหาเป็นตรงกันข้ามdigกับ-xตัวเลือก:

$ dig -x 72.51.34.34

; <<>> DiG 9.9.2-P1 <<>> -x 72.51.34.34
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12770
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1460
;; QUESTION SECTION:
;34.34.51.72.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
34.34.51.72.in-addr.arpa. 42652 IN      PTR     sb.lwn.net.

;; Query time: 4 msec
;; SERVER: 192.168.178.1#53(192.168.178.1)
;; WHEN: Fri Jan 25 21:23:40 2013
;; MSG SIZE  rcvd: 77

หรือ

$ dig -x 127.0.0.1

; <<>> DiG 9.9.2-P1 <<>> -x 127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11689
;; flags: qr aa ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa.                IN      PTR

;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 10      IN      PTR     localhost.

;; Query time: 2 msec
;; SERVER: 192.168.178.1#53(192.168.178.1)
;; WHEN: Fri Jan 25 21:23:49 2013
;; MSG SIZE  rcvd: 63

การอ้างอิงจากขุด manpage :

การค้นหาแบบย้อนกลับ - การจับคู่ที่อยู่กับชื่อ - ทำได้ง่ายขึ้นด้วย ตัวเลือก-x addr เป็นที่อยู่ IPv4 ในรูปแบบเลขฐานสิบจุดหรือที่อยู่ IPv6 ที่คั่นด้วยโคลอน เมื่อใช้ตัวเลือกนี้ไม่จำเป็นต้องระบุอาร์กิวเมนต์ชื่อคลาสและชนิด ขุดทำการค้นหาโดยอัตโนมัติสำหรับชื่อเช่น 11.12.13.10.in-addr.arpa และตั้งประเภทการสืบค้นและคลาสเป็น PTR และ IN ตามลำดับ



17
  • สำหรับ Windows ลอง:

    NBTSTAT -A 10.100.3.104
    

    หรือ

    ping -a 10.100.3.104
    
  • สำหรับ Linux ให้ลอง:

    nmblookup -A 10.100.3.104
    

พวกเขาเกือบจะเหมือนกัน


2
nmblookup ทำงานได้ดีฉันไม่ได้พยายามหาชื่อโฮสต์ของเว็บเซิร์ฟเวอร์ แต่คอมพิวเตอร์ที่ทำสิ่งที่ไม่ควรทำ การเปิดเผยนี้ไม่เพียง แต่ชื่อโฮสต์ของ Windows แต่ที่อยู่ Mac ซึ่งอยู่ถัดจากรายการของฉัน!
FreeSoftwareServers

9
python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"

หากคุณต้องการชื่อไม่มีข้อมูลเพิ่มเติมเพิ่ม [0] ในตอนท้าย:

python -c "import socket;print(socket.gethostbyaddr('8.8.8.8'))[0]"

มันบอกว่าซ็อกเก็ตเน้นไวยากรณ์ที่ไม่ถูกต้อง
Sandeep Roy

1
สำหรับ python3 เปลี่ยนการพิมพ์ไปยังฟังก์ชันที่มีวงเล็บ:python -c "import socket;print(socket.gethostbyaddr('10.16.7.10'))"
Corey Goldberg

7

มันขึ้นอยู่กับบริบท ฉันคิดว่าคุณหมายถึงชื่อโฮสต์ของระบบปฏิบัติการ (ส่งคืนhostnameเมื่อคุณเข้าสู่ระบบ) คำสั่งนี้ใช้สำหรับชื่อภายในเท่านั้นดังนั้นเมื่อต้องการเคียวรีชื่อของเครื่องต้องใช้ระบบการตั้งชื่ออื่น มีหลายระบบที่ใช้ชื่อเพื่อระบุโฮสต์รวมถึง DNS, DHCP, LDAP (DN's) hostname, ฯลฯ และหลายระบบใช้zeroconfเพื่อซิงโครไนซ์ชื่อระหว่างระบบตั้งชื่อหลายระบบ ด้วยเหตุผลนี้hostnameบางครั้งผลลัพธ์จากจะจับคู่ผลลัพธ์จากdig(ดูด้านล่าง) หรือระบบการตั้งชื่ออื่น ๆ แต่บ่อยครั้งที่มันไม่ตรงกัน

DNSพบได้บ่อยที่สุดและใช้ทั้งบนอินเทอร์เน็ต (เช่นgoogle.com. A 216.58.218.142) และที่บ้าน (mDNS / LLMNR) ดังนั้นนี่คือวิธีทำการค้นหา DNS แบบย้อนกลับ : dig -x <address>( nslookupและhostเรียบง่ายขึ้นให้รายละเอียดน้อยลงและอาจกลับมาที่แตกต่างกัน ผลลัพธ์อย่างไรก็ตามdigไม่รวมอยู่ใน Windows)

โปรดทราบว่าชื่อโฮสต์ภายในCDNจะไม่สามารถแก้ไขชื่อโดเมนแบบบัญญัติ (เช่น "google.com") แต่ให้ใช้ชื่อโฮสต์ของโฮสต์ IP ที่คุณสอบถาม (เช่น "dfw25s08-in-f142.1e100.net"; 1e100 คือ 1 googol)

โปรดทราบว่าโฮสต์ DNS สามารถมีชื่อได้มากกว่าหนึ่งชื่อ นี่เป็นเรื่องปกติสำหรับโฮสต์ที่มีเว็บเซิร์ฟเวอร์มากกว่าหนึ่งแห่ง (การโฮสต์เสมือน) แม้ว่าสิ่งนี้จะกลายเป็นเรื่องธรรมดาน้อยลงด้วยการเพิ่มจำนวนของเทคโนโลยีการจำลองเสมือน โฮสต์เหล่านี้มีระเบียน PTR DNS หลายรายการหลายระเบียน

สุดท้ายทราบว่า DNS ระเบียนโฮสต์สามารถแทนที่โดยเครื่องท้องถิ่นผ่าน/ etc / hosts หากคุณไม่ได้รับชื่อโฮสต์ที่คุณคาดว่าให้ตรวจสอบไฟล์นี้

การสอบถามชื่อโฮสต์DHCPแตกต่างกันไปขึ้นอยู่กับซอฟต์แวร์เซิร์ฟเวอร์ DHCP ที่ใช้เพราะ (เท่าที่ฉันรู้) โปรโตคอลไม่ได้กำหนดวิธีการสอบถาม อย่างไรก็ตามเซิร์ฟเวอร์ส่วนใหญ่มีวิธีการทำเช่นนี้ (โดยปกติจะมีบัญชีพิเศษ)

หมายเหตุชื่อ DHCP มักจะถูกซิงโครไนซ์กับเซิร์ฟเวอร์ DNS ดังนั้นจึงเป็นเรื่องธรรมดาที่จะเห็นชื่อโฮสต์เดียวกันในตารางอย่างน้อยที่สุดไคลเอ็นต์ DHCP และในระเบียน A (หรือ AAAA สำหรับ IPv6) ของเซิร์ฟเวอร์ DNS อีกครั้งนี้มักจะทำเป็นส่วนหนึ่งของ zeroconf

โปรดทราบว่าเพียงเพราะ DHCP lease มีอยู่สำหรับลูกค้าไม่ได้หมายความว่ายังคงมีการใช้งานอยู่

NetBIOS สำหรับ TCP / IP (NBT)ถูกใช้มานานหลายทศวรรษเพื่อดำเนินการแก้ไขชื่อ แต่หลังจากนั้นถูกแทนที่ด้วย LLMNR สำหรับการจำแนกชื่อ (ส่วนหนึ่งของ zeroconf บน Windows) ระบบดั้งเดิมนี้ยังสามารถสอบถามได้ด้วยnbtstat(Windows) หรือnmblookup(Linux)


@John Syrinek คุณสามารถอธิบายเกี่ยวกับการสืบค้นชื่อโฮสต์ DHCP ได้ไหม? ฉันต้องการสอบถามชื่อโฮสต์ของเครื่องอื่น (ใน wlan เดียวกัน) โดย IP เป็นไปได้หรือไม่
jfly

2

คำตอบอื่น ๆ ที่นี่ถูกต้อง - ใช้การค้นหา DNS ย้อนกลับ หากคุณต้องการใช้ภาษาสคริปต์ (Python, Perl) คุณสามารถใช้ gethostbyaddr API


0

หากคุณกำลังมองหาเครื่อง Windows โดยเฉพาะลองใช้คำสั่งด้านล่าง:

nbtstat -a 10.228.42.57

-1

คุณสามารถใช้คำสั่ง traceroute ได้เช่นกัน

http://linux.die.net/man/8/traceroute

เพียงแค่ใช้ traceroute มันจะแสดงเส้นทางเส้นทางที่มีชื่อโฮสต์ (แก้ไข IP ได้)


ดูความคิดเห็นโดย Ottavio Campana ด้านล่าง: stackoverflow.com/questions/657482/…
icedwater

-1

ในกรณีส่วนใหญ่คำสั่ง traceroute ทำงานได้ดี คำสั่ง nslookup และโฮสต์อาจล้มเหลว


4
สิ่งนี้ผิด: เมื่อได้รับ IP สิ่งเดียวที่ต้องทำคือแบบสอบถามแบบย้อนกลับไปยัง DNS ดังนั้น traceroute จึงไม่ใช่เครื่องมือที่ถูกต้องที่จะแนะนำ
Ottavio Campana
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.