Ho una manciata di Mac sulla mia rete domestica e l'accesso shell solo a uno di loro dall'esterno. Come posso capire quale indirizzo IP delle altre macchine sono?
Ho una manciata di Mac sulla mia rete domestica e l'accesso shell solo a uno di loro dall'esterno. Come posso capire quale indirizzo IP delle altre macchine sono?
Risposte:
Prova arp -a
a vedere l'attuale tabella arp del tuo computer. Mostrerà solo quegli indirizzi IP con cui il tuo computer ha interagito. Output in questo modo (oscurato un po 'per nascondere gli indirizzi MAC sulla mia rete):
$ 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]
Se non si dispone di ulteriori informazioni su quale computer è quale, è possibile ottenere un po ' più di informazioni identificando i produttori delle schede di rete tramite la ricerca dell'indirizzo MAC .
arp -a
mostrerà solo gli indirizzi IP con cui il tuo computer ha interagito". ? Devo prima eseguire il ping della trasmissione (192.168.110.255) e ottenere risposta da ogni dispositivo, quindi utilizzare arp per ottenere un elenco completo poiché ho appena interagito / eseguito il ping di tutto il dispositivo?
Supponendo che tutte le altre macchine si trovino nello stesso dominio di trasmissione a cui hai accesso, è spesso sufficiente eseguire il ping dell'indirizzo di trasmissione. Non troverà macchine che dormono, né quelle configurate per non rispondere ai ping, né quelle che risponderanno ai ping ma non a trasmettere 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
La prima e ultima risposta sarà quasi sempre la tua macchina locale. Le (DUP!)
risposte provengono da altre macchine (anche se questo esempio mostra anche alcune macchine che rispondono con l'indirizzo di trasmissione stesso, il che non è molto utile).
Potresti anche provare l'indirizzo di trasmissione all-one:
% 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
Questo esempio mostra meno cruft. Tutte le (DUP!)
s sono altre macchine e la macchina locale è facilmente identificabile come 127.0.0.1.
Tutti i tuoi Mac hanno nomi host, quindi non dovresti avere bisogno di conoscere gli indirizzi IP. Invece utilizzerai solo il nome host.
I nomi host si basano sul nome che hai assegnato al computer. Quindi, se il computer si chiama "Jon's Mac", il nome host che userete è qualcosa come "jons-mac.local".
$ ssh jons-mac.local
Se non conosci già i nomi host dei tuoi computer, puoi scoprire i nomi host di un computer nelle preferenze di condivisione su quel computer, oppure puoi scoprire i nomi host di altri computer sulla rete usando il comando dns-sd. Questo comando usa Bonjour per farti navigare tra i servizi di rete; troverai solo computer che pubblicizzano effettivamente alcuni servizi di rete (che, in linea di massima, sono gli unici a cui tieni).
Se vuoi connetterti ad alcuni computer che forniscono ssh, puoi trovare i computer disponibili usando:
dns-sd -B _ssh._tcp .
In generale è possibile cercare host che forniscono servizi particolari utilizzando i nomi dei servizi: http://www.dns-sd.org/ServiceTypes.html
Il protocollo Bonjour offre anche la possibilità di cercare tutti i servizi, non solo quelli particolari. Puoi farlo sfogliando il servizio speciale_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
La domanda è: trovare altri computer in rete dalla riga di comando, ma è anche possibile sfogliare i servizi pubblicizzati dns-sd nella GUI. Ad esempio Terminal.app> Nuova connessione remota ... visualizza una finestra che mostra i servizi pubblicizzati ssh, sftp, ftp e telnet.
dns-sd -B _ssh._tcp .
esecuzione di questo comando ?
È possibile provare a utilizzare dns-sd
per eseguire query Bonjour sulla LAN.
dns-sd -B _ssh._tcp .
Forse è un po 'eccessivo ma potresti usare nmap
Una breve riga di comando CLI per passare da / 24 subnet ping a ciascun indirizzo IP. Veloce e un po 'sporco, ma funziona.
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
Spiegazione: Per cambiare l'intervallo, cambia x = 1 in x = 130, o qualunque cosa tu voglia iniziare, e 254 alla fine, diciamo 135.
for (( x=130; x <= 135; x++ ));
ping -c 3 viene inviato tre ping. Per cambiare il numero di ping, cambia il 3 in qualcos'altro e per cambiare l'intervallo di indirizzi, cambia il 192.168.0 in qualcos'altro.
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
Se conosci il nome degli altri computer nella LAN, il modo più semplice è eseguire il 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
Ciò può dipendere dal router locale o dal server DHCP. Se il nome host nudo non funziona, prova ad aggiungere .local (ovvero ping nomehost.local ).
Ovviamente questo non funziona bene per grandi LAN o persone con scarse memorie.
Se stai utilizzando Mac, (supponendo 10.5 o versione successiva), abilita VNC per l'accesso al desktop e usa Flame.app.
È una piccola utility davvero bella che ti dà esattamente quello che ti serve, molto velocemente. L'unica cosa è che dovresti andare più lontano di SSH.
Per Windows:
1) Scrivi: per / L% I in (1.1.254) DO ping -w 30 -n 1 168,29,0.% I Verrà ping di tutti gli indirizzi nella rete locale
2) Quindi scrivi: arp -a Questo ti darà tutti gli indirizzi a cui hai risposto