ฉันจะรับชื่อเครื่องจาก IP ผ่าน Multicast DNS ได้อย่างไร


17

ฉันมีรายการที่อยู่ IP ในเครือข่ายและส่วนใหญ่สนับสนุน DNS แบบหลายผู้รับ ฉันต้องการแก้ไขชื่อเซิร์ฟเวอร์แทนที่จะมีที่อยู่ IP

ping computer.local
64 bytes from 192.168.0.52: icmp_seq=1 ttl=64 time=5.510 ms
64 bytes from 192.168.0.52: icmp_seq=2 ttl=64 time=5.396 ms
64 bytes from 192.168.0.52: icmp_seq=3 ttl=64 time=5.273 ms

ใช้งานได้ แต่ฉันต้องการทราบชื่อนั้นจาก IP นอกจากนี้อุปกรณ์ไม่จำเป็นต้องออกอากาศบริการใด ๆ แต่รองรับการออกอากาศ mDNS อย่างแน่นอน ดังนั้นการมองผ่านบริการต่างๆจะไม่ทำงาน


1
คุณใช้ระบบปฏิบัติการอะไร? mdns-scanน่าจะเป็นตัวเลือกใน linux
Zoredache

1
OS X แต่ถ้าฉันสามารถหาโซลูชันลินุกซ์ฉันแน่ใจว่าฉันสามารถหาอะนาล็อกในโลกแม็ค mdns-scan ค้นหาบริการที่ออกอากาศดังนั้นมันจะไม่ทำงาน อุปกรณ์บางตัวไม่ออกอากาศบริการใด ๆ แต่จะแก้ไขที่อยู่ของพวกเขาเมื่อสอบถามโดยใช้ชื่อ
Adam

คำตอบ:


23

เนื่องจากคุณทราบที่อยู่ IP แล้วคุณสามารถค้นหารายการย้อนกลับสำหรับที่อยู่ IP แต่ละแห่งเพื่อรับที่อยู่ส่งต่อที่เกี่ยวข้อง:

$ dig -x 10.0.0.200 @224.0.0.251 -p 5353

; <<>> DiG 9.6.0-APPLE-P2 <<>> -x 10.0.0.200 @224.0.0.251 -p 5353
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54300
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
200.0.0.10.in-addr.arpa. 10 IN  PTR atj-mbp.local.

;; ADDITIONAL SECTION:
atj-mbp._device-info._tcp.local. 10 IN  TXT "model=MacBookPro3,1"

;; Query time: 2 msec
;; SERVER: 10.0.0.200#5353(224.0.0.251)
;; WHEN: Sat Jun 26 07:53:44 2010
;; MSG SIZE  rcvd: 126

สำหรับเอาต์พุตที่เป็นมิตรกับเชลล์สคริปต์ให้ใช้ '+ short':

$ dig +short -x 10.0.0.200 @224.0.0.251 -p 5353
atj-mbp.local.

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


2
ความคิดใด ๆ ที่ทำให้สิ่งนี้อาจล้มเหลวเมื่อเทียบกับอุปกรณ์ iOS ที่ไม่ได้ใช้บริการ Bonjour ใด ๆ ใช้งานได้กับ Mac ที่ไม่ได้ใช้บริการของ Bonjour
John Wright

น่าสังเกตว่าคุณสามารถค้นหาที่อยู่ IP ที่อยู่ในเครือข่ายโดยใช้การarp-scanติดตั้งจาก homebrew หรือ macports หรือถ้าคุณเพียงต้องการที่จะได้รับความรู้สึกสำหรับโฮสต์บนเครือข่ายคุณสามารถดูตาราง ARP ปัจจุบันของคุณโดยใช้คำสั่งแล้วใน OS arpX: โดยเฉพาะคุณสามารถใช้คำสั่งarp -n -i <interface> -l -aซึ่ง<interface>ควรเป็นชื่อของอินเทอร์เฟซเครือข่ายที่คุณอยากรู้ (เช่นen0)
คู่ปรับ Shot

5

บน Linux คุณสามารถใช้คำสั่ง getent จาก libc:

getent hosts 192.168.0.52

หรือติดตั้ง avahi-utils แล้วเรียกใช้

avahi-resolve-address 192.168.0.52

แพคเกจavahi-toolsใน Fedora และมันเป็นสิ่งเดียวในหน้านี้ที่ทำงาน :)
นาวิน


-1

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

หวังว่าสิ่งนี้จะช่วยคนอื่นอย่างที่ฉันเคยใช้เวลาติดตามสิ่งนี้มากเกินไป

หากใครมีความคิดเห็นอื่น ๆ เกี่ยวกับปัญหานี้ฉันชอบที่จะได้ยินพวกเขา

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