Saya punya beberapa Mac di jaringan rumah saya, dan akses shell ke salah satunya saja dari luar. Bagaimana saya bisa mengetahui apa alamat IP dari mesin lain?
Saya punya beberapa Mac di jaringan rumah saya, dan akses shell ke salah satunya saja dari luar. Bagaimana saya bisa mengetahui apa alamat IP dari mesin lain?
Jawaban:
Coba arp -a
lihat tabel arp komputer Anda saat ini. Ini akan menunjukkan hanya alamat IP yang komputer Anda telah berinteraksi. Keluaran seperti ini (dikaburkan sedikit untuk menyembunyikan alamat MAC di jaringan saya):
$ 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]
Jika Anda tidak memiliki informasi lebih lanjut tentang yang komputer yang, Anda dapat memperoleh sedikit informasi lebih lanjut dengan mengidentifikasi produsen kartu jaringan melalui alamat MAC lookup .
arp -a
hanya akan menampilkan alamat IP yang berinteraksi dengan komputer Anda." ? Haruskah saya melakukan ping siaran (192.168.110.255) pertama dan mendapatkan respon dari setiap perangkat dan kemudian menggunakan arp untuk mendapatkan daftar lengkap karena saya baru saja berinteraksi / melakukan ping semua perangkat?
Dengan asumsi semua mesin lain berada dalam domain broadcast yang sama dengan yang Anda akses, ping alamat broadcast sering kali sudah cukup. Ini tidak akan menemukan mesin yang tertidur, atau mereka yang dikonfigurasi untuk tidak menanggapi ping, atau mereka yang akan menanggapi ping tetapi tidak untuk menyiarkan 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
Respons pertama dan terakhir hampir selalu akan menjadi mesin lokal Anda. The (DUP!)
tanggapan yang dari mesin lain (meskipun contoh ini juga menunjukkan beberapa mesin merespon dengan alamat broadcast itu sendiri, yang tidak terlalu berguna).
Anda juga dapat mencoba alamat siaran yang semuanya:
% 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
Contoh ini menunjukkan sedikit cacat. Semua ini (DUP!)
adalah mesin lain dan mesin lokal mudah diidentifikasi sebagai 127.0.0.1.
Semua Mac Anda memiliki nama host sehingga Anda tidak perlu tahu alamat IP. Sebaliknya Anda hanya akan menggunakan nama host.
Nama host didasarkan pada nama apa pun yang Anda berikan pada komputer. Jadi, jika komputer bernama "Jon's Mac" nama host yang akan Anda gunakan adalah sesuatu seperti "jons-mac.local".
$ ssh jons-mac.local
Jika Anda belum mengetahui nama host komputer Anda, maka Anda dapat mengetahui nama host komputer dalam preferensi berbagi di komputer itu, atau Anda dapat mengetahui nama host komputer lain di jaringan menggunakan perintah dns-sd. Perintah ini menggunakan Bonjour untuk membiarkan Anda menjelajahi layanan jaringan; Anda hanya akan menemukan komputer yang benar-benar mengiklankan beberapa layanan jaringan (yang pada umumnya adalah satu-satunya yang Anda pedulikan).
Jika Anda ingin terhubung ke beberapa komputer yang menyediakan ssh, Anda dapat menemukan komputer yang tersedia menggunakan:
dns-sd -B _ssh._tcp .
Secara umum Anda dapat mencari host yang menyediakan layanan tertentu menggunakan nama layanan: http://www.dns-sd.org/ServiceTypes.html
Protokol Bonjour juga menyediakan kemampuan untuk menelusuri semua layanan, bukan hanya layanan tertentu. Anda dapat melakukan ini dengan menjelajahi layanan khusus_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
Pertanyaannya adalah bertanya tentang menemukan komputer lain di jaringan dari baris perintah, tetapi Anda juga dapat menelusuri layanan yang diiklankan dns-sd di GUI. Misalnya Terminal.app> Koneksi Jarak Jauh Baru ... menampilkan jendela yang menampilkan layanan ssh, sftp, ftp, dan telnet yang diiklankan.
dns-sd -B _ssh._tcp .
dijalankan?
Anda dapat mencoba menggunakan dns-sd
untuk melakukan permintaan Bonjour di LAN.
dns-sd -B _ssh._tcp .
Mungkin sedikit berlebihan tetapi Anda bisa menggunakan nmap
CLI satu liner cepat untuk melewati / 24 subnet ping setiap alamat IP. Cepat dan agak kotor, tetapi berhasil.
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
Penjelasan: Untuk mengubah rentang, ubah x = 1 ke x = 130, atau apa pun yang Anda ingin mulai, dan 254 sampai akhir, katakan 135.
for (( x=130; x <= 135; x++ ));
ping -c 3 mengirim tiga ping. Untuk mengubah jumlah ping, ubah 3 ke yang lain, dan untuk mengubah kisaran alamat, ubah 192.168.0 menjadi sesuatu yang lain.
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
Jika Anda tahu nama komputer lain di LAN, cara paling sederhana adalah dengan melakukan 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
Ini mungkin tergantung pada router lokal Anda atau server DHCP. Jika nama host kosong tidak berfungsi, coba tambahkan .local (mis. Ping hostname.local ).
Jelas ini tidak bekerja dengan baik untuk LAN besar atau orang dengan ingatan yang buruk.
Jika Anda menggunakan Mac, (dengan asumsi 10,5 atau lebih besar), cukup aktifkan VNC untuk akses desktop dan gunakan Flame.app.
Ini adalah utilitas kecil yang sangat bagus yang memberi Anda apa yang Anda butuhkan, sangat cepat. Satu-satunya hal adalah Anda harus pergi lebih jauh dari SSH.
Untuk Windows:
1) Tulis: untuk / L% I di (1,1.254) DO ping -w 30 -n 1 168.29.0.% I Ini akan melakukan ping ke semua alamat di jaringan lokal Anda
2) Kemudian tulis: arp -a Ini akan memberi Anda semua alamat yang menjawab