ฉันมี Macs จำนวนหนึ่งในเครือข่ายในบ้านของฉันและใช้การเข้าถึงเพียงหนึ่งในนั้นจากภายนอก ฉันจะทราบได้อย่างไรว่าที่อยู่ IP ของเครื่องอื่นเป็นอย่างไร
ฉันมี Macs จำนวนหนึ่งในเครือข่ายในบ้านของฉันและใช้การเข้าถึงเพียงหนึ่งในนั้นจากภายนอก ฉันจะทราบได้อย่างไรว่าที่อยู่ IP ของเครื่องอื่นเป็นอย่างไร
คำตอบ:
ลองarp -a
ดูตาราง arp ปัจจุบันของคอมพิวเตอร์ มันจะแสดงเฉพาะที่อยู่ IP ที่คอมพิวเตอร์ของคุณมีปฏิสัมพันธ์ เอาต์พุตเช่นนี้ (บดบังเล็กน้อยเพื่อซ่อนที่อยู่ MAC บนเครือข่ายของฉัน):
$ arp -a
? (10.1.168.1) at xx:xx:9e:82:ab:f6 on en1 ifscope [ethernet]
? (10.1.168.16) at xx:xx:29:d3:17:8 on en1 ifscope [ethernet]
? (10.1.168.115) at xx:xx:2:4f:76:14 on en1 ifscope [ethernet]
? (10.1.168.131) at xx:xx:6b:d0:36:a5 on en1 ifscope [ethernet]
? (10.1.168.134) at (incomplete) on en1 ifscope [ethernet]
? (10.1.168.137) at xx:xx:65:46:cd:b8 on en1 ifscope [ethernet]
? (10.1.168.255) at ff:ff:ff:ff:ff:ff on en1 ifscope [ethernet]
? (192.168.4.255) at ff:ff:ff:ff:ff:ff on vmnet8 ifscope [ethernet]
? (192.168.110.255) at (incomplete) on vmnet1 ifscope [ethernet]
หากคุณไม่ได้มีข้อมูลเพิ่มเติมเกี่ยวกับการที่คอมพิวเตอร์ซึ่งคุณสามารถได้รับเพียงเล็กน้อยข้อมูลเพิ่มเติมโดยการระบุผู้ผลิตของการ์ดเครือข่ายผ่านการค้นหาที่อยู่ MAC
arp -a
จะแสดงเฉพาะที่อยู่ IP ที่คอมพิวเตอร์ของคุณโต้ตอบด้วย" ? ฉันควรส่งสัญญาณออกอากาศ (192.168.110.255) ก่อนและรับการตอบกลับจากทุกอุปกรณ์แล้วใช้ arp เพื่อรับรายการทั้งหมดเนื่องจากฉันเพิ่งมีการโต้ตอบ / ping อุปกรณ์ทั้งหมดหรือไม่
สมมติว่าเครื่องอื่น ๆ ทั้งหมดอยู่ในโดเมนการออกอากาศเดียวกันกับเครื่องที่คุณเข้าถึงการส่ง Ping ไปยังที่อยู่ออกอากาศมักจะเพียงพอ มันจะไม่พบเครื่องที่หลับหรือเครื่องที่กำหนดค่าให้ไม่ตอบสนองต่อการปิงหรือเครื่องที่จะตอบสนองต่อการปิง แต่ไม่ออกอากาศปิง
% ifconfig -a | grep broadcast
inet 192.168.1.241 netmask 0xffffff00 broadcast 192.168.1.255
% ping -i 5 -c 2 192.168.1.255
PING 192.168.1.255 (192.168.1.255): 56 data bytes
64 bytes from 192.168.1.241: icmp_seq=0 ttl=64 time=0.393 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=2.511 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=5.810 ms (DUP!)
64 bytes from 192.168.1.255: icmp_seq=0 ttl=64 time=7.886 ms (DUP!)
64 bytes from 192.168.1.241: icmp_seq=1 ttl=64 time=0.312 ms
--- 192.168.1.255 ping statistics ---
2 packets transmitted, 2 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.312/3.382/7.886/3.010 ms
การตอบกลับครั้งแรกและครั้งสุดท้ายมักจะเป็นเครื่องของคุณ การ(DUP!)
ตอบสนองมาจากเครื่องอื่น ๆ (แม้ว่าตัวอย่างนี้จะแสดงเครื่องบางเครื่องที่ตอบกลับด้วยที่อยู่การออกอากาศด้วยตนเองซึ่งไม่มีประโยชน์มากนัก)
คุณอาจลองที่อยู่ที่ออกอากาศทั้งหมด:
% ping -i 5 -c 2 255.255.255.255
PING 255.255.255.255 (255.255.255.255): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.392 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=3.053 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=8.685 ms (DUP!)
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.319 ms
--- 255.255.255.255 ping statistics ---
2 packets transmitted, 2 packets received, +2 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.319/3.112/8.685/3.401 ms
ตัวอย่างนี้แสดงว่า cruft น้อยลง ทั้งหมด(DUP!)
เป็นเครื่องอื่น ๆ และเครื่องท้องถิ่นได้อย่างง่ายดายระบุว่าเป็น 127.0.0.1
Mac ของคุณทั้งหมดมีชื่อโฮสต์ดังนั้นคุณไม่จำเป็นต้องรู้ที่อยู่ IP แต่คุณจะใช้ชื่อโฮสต์แทน
ชื่อโฮสต์จะขึ้นอยู่กับชื่อที่คุณให้กับคอมพิวเตอร์ ดังนั้นหากคอมพิวเตอร์ชื่อ "Jon's Mac" ชื่อโฮสต์ที่คุณจะใช้คือ "jons-mac.local"
$ ssh jons-mac.local
หากคุณยังไม่ทราบชื่อโฮสต์ของคอมพิวเตอร์คุณสามารถค้นหาชื่อโฮสต์ของคอมพิวเตอร์ในการตั้งค่าการแชร์ในคอมพิวเตอร์เครื่องนั้นหรือคุณสามารถค้นหาชื่อโฮสต์ของคอมพิวเตอร์เครื่องอื่นบนเครือข่ายโดยใช้คำสั่ง dns-sd คำสั่งนี้ใช้ Bonjour เพื่อให้คุณเรียกดูบริการเครือข่าย คุณจะพบคอมพิวเตอร์ที่โฆษณาบริการเครือข่ายบางอย่างเท่านั้น (ซึ่งเป็นคอมพิวเตอร์ขนาดใหญ่ที่คุณสนใจ)
หากคุณต้องการเชื่อมต่อกับคอมพิวเตอร์บางเครื่องที่มี ssh คุณสามารถค้นหาคอมพิวเตอร์ที่มีอยู่โดยใช้:
dns-sd -B _ssh._tcp .
โดยทั่วไปคุณสามารถค้นหาโฮสต์ที่ให้บริการเฉพาะโดยใช้ชื่อบริการ: http://www.dns-sd.org/ServiceTypes.html
โปรโตคอล Bonjour ยังให้ความสามารถในการค้นหาบริการทั้งหมดไม่ใช่เฉพาะ คุณสามารถทำได้โดยค้นหาบริการพิเศษ_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
คำถามกำลังถามเกี่ยวกับการค้นหาคอมพิวเตอร์เครื่องอื่นบนเครือข่ายจากบรรทัดคำสั่ง แต่คุณยังสามารถเรียกดูบริการโฆษณา dns-sd ใน GUI ตัวอย่างเช่น Terminal.app> การเชื่อมต่อระยะไกลใหม่ ... เปิดหน้าต่างที่แสดงบริการ ssh, sftp, ftp และ telnet ที่โฆษณา
dns-sd -B _ssh._tcp .
จะทำงานเร็วแค่ไหน?
คุณสามารถลองใช้dns-sd
เพื่อดำเนินการสอบถาม Bonjour บน LAN
dns-sd -B _ssh._tcp .
อาจจะเป็น overkill เล็กน้อย แต่คุณสามารถใช้nmap
CLI แบบย่อหนึ่งซับเพื่อก้าวผ่าน / 24 ซับเน็ต ping แต่ละที่อยู่ IP รวดเร็วและสกปรกชนิด แต่ใช้งานได้
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
คำอธิบาย: หากต้องการเปลี่ยนช่วงให้เปลี่ยน x = 1 เป็น x = 130 หรืออะไรก็ตามที่คุณต้องการเริ่มต้นและ 254 ถึงจุดสิ้นสุดให้พูด 135
for (( x=130; x <= 135; x++ ));
ping -c 3 คือส่ง Ping สามครั้ง ในการเปลี่ยนจำนวนปิงเปลี่ยน 3 เป็นอย่างอื่นและเปลี่ยนช่วงที่อยู่ให้เปลี่ยน 192.168.0 เป็นอย่างอื่น
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
หากคุณรู้ชื่อของคอมพิวเตอร์เครื่องอื่นใน LAN วิธีที่ง่ายที่สุดคือการ ping พวกเขา:
$ ping foobar
Pinging foobar.lan [192.168.0.25] with 32 bytes of data:
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
สิ่งนี้อาจขึ้นอยู่กับเราเตอร์ในพื้นที่หรือเซิร์ฟเวอร์ DHCP ของคุณ หากชื่อโฮสต์เปล่าไม่ทำงานให้ลองผนวก. local (เช่นping hostname.local )
เห็นได้ชัดว่าวิธีนี้ใช้งานไม่ได้กับ LAN ขนาดใหญ่หรือผู้ที่มีความจำไม่ดี
หากคุณใช้ Macs (สมมติว่า 10.5 หรือสูงกว่า) เพียงเปิดใช้งาน VNC สำหรับการเข้าถึงเดสก์ท็อปและใช้ Flame.app
มันเป็นยูทิลิตี้เล็ก ๆ ที่ดีจริงๆที่ให้สิ่งที่คุณต้องการได้อย่างรวดเร็ว สิ่งเดียวคือคุณจะต้องไปให้ไกลกว่า SSH
สำหรับ Windows:
1) เขียน: สำหรับ / L% I ใน (1,1,254) DO ping -w 30 -n 1 168.29.0.% I นี่จะ ping ที่อยู่ทั้งหมดในเครือข่ายท้องถิ่นของคุณ
2) จากนั้นเขียน: arp -a สิ่งนี้จะให้ที่อยู่ทั้งหมดที่ตอบไว้