J'ai une poignée de Mac sur mon réseau domestique et l'accès shell à un seul d'entre eux depuis l'extérieur. Comment savoir quelle est l'adresse IP des autres machines?
J'ai une poignée de Mac sur mon réseau domestique et l'accès shell à un seul d'entre eux depuis l'extérieur. Comment savoir quelle est l'adresse IP des autres machines?
Réponses:
Essayez arp -a
de voir la table d'arp actuelle de votre ordinateur. Il n'affichera que les adresses IP avec lesquelles votre ordinateur a interagi. Sortie comme ceci (obscurci un peu pour masquer les adresses MAC sur mon réseau):
$ 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]
Si vous ne disposez pas d'informations supplémentaires sur quel ordinateur est lequel, vous pouvez obtenir un peu plus d'informations en identifiant les fabricants des cartes réseau via la recherche d'adresse MAC .
arp -a
n'affichera que les adresses IP avec lesquelles votre ordinateur a interagi". ? Dois-je d'abord envoyer une requête ping à la diffusion (192.168.110.255) et obtenir la réponse de chaque appareil, puis utiliser arp pour obtenir une liste complète, car je viens d'interagir / de faire un ping sur tout l'appareil?
En supposant que toutes les autres machines se trouvent dans le même domaine de diffusion que celui auquel vous avez accès, le ping de l'adresse de diffusion suffit souvent. Il ne trouvera pas les machines endormies, ni celles configurées pour ne pas répondre aux pings, ni celles qui répondront aux pings mais pas aux pings de diffusion.
% 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 première et la dernière réponse seront presque toujours votre machine locale. Les (DUP!)
réponses proviennent d'autres machines (bien que cet exemple montre également une machine répondant avec l'adresse de diffusion elle-même, ce qui n'est pas très utile).
Vous pouvez également essayer l'adresse de diffusion tout-en-un:
% 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
Cet exemple montre moins de corruption. Tous les (DUP!)
s sont d'autres machines et la machine locale est facilement identifiée comme 127.0.0.1.
Vos Mac ont tous des noms d'hôte, vous ne devriez donc pas avoir besoin de connaître les adresses IP. Au lieu de cela, vous utiliserez simplement le nom d'hôte.
Les noms d'hôtes sont basés sur le nom que vous avez donné à l'ordinateur. Donc, si l'ordinateur s'appelle "Jon's Mac", le nom d'hôte que vous utiliserez est quelque chose comme "jons-mac.local".
$ ssh jons-mac.local
Si vous ne connaissez pas déjà les noms d'hôte de vos ordinateurs, vous pouvez trouver les noms d'hôte d'un ordinateur dans les préférences de partage sur cet ordinateur, ou vous pouvez trouver les noms d'hôte d'autres ordinateurs sur le réseau à l'aide de la commande dns-sd. Cette commande utilise Bonjour pour vous permettre de parcourir les services réseau; vous ne trouverez que des ordinateurs qui font de la publicité pour un service réseau (qui, dans l'ensemble, sont les seuls dont vous vous souciez).
Si vous souhaitez vous connecter à un ordinateur fournissant ssh, vous pouvez trouver les ordinateurs disponibles en utilisant:
dns-sd -B _ssh._tcp .
En général, vous pouvez rechercher des hôtes fournissant des services particuliers en utilisant les noms de service: http://www.dns-sd.org/ServiceTypes.html
Le protocole Bonjour offre également la possibilité de parcourir tous les services, pas seulement certains. Vous pouvez le faire en recherchant le service spécial_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
La question porte sur la recherche d'autres ordinateurs sur le réseau à partir de la ligne de commande, mais vous pouvez également parcourir les services publiés dns-sd dans l'interface graphique. Par exemple, Terminal.app> Nouvelle connexion à distance ... affiche une fenêtre qui affiche les services ssh, sftp, ftp et telnet annoncés.
dns-sd -B _ssh._tcp .
exécution de cette commande ?
Vous pouvez essayer d'utiliser dns-sd
afin d'effectuer des requêtes Bonjour sur le LAN.
dns-sd -B _ssh._tcp .
C'est peut-être un peu exagéré, mais vous pouvez utiliser nmap
Une doublure CLI rapide pour passer à travers / 24 sous-réseau ping chaque adresse IP. Rapide et plutôt sale, mais ça marche.
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
Explication: pour modifier la plage, remplacez x = 1 par x = 130, ou tout ce que vous voulez commencer, et 254 jusqu'à la fin, disons 135.
for (( x=130; x <= 135; x++ ));
ping -c 3 envoie trois pings. Pour changer le nombre de pings, changez le 3 en quelque chose d'autre et pour changer la plage d'adresses, changez le 192.168.0 en autre chose.
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
Si vous connaissez le nom des autres ordinateurs du réseau local, la manière la plus simple est de leur envoyer une requête 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
Cela peut dépendre de votre routeur local ou de votre serveur DHCP. Si le nom d'hôte nu ne fonctionne pas, essayez d'ajouter .local (c'est-à-dire, ping hostname.local ).
Évidemment, cela ne fonctionne pas bien pour les grands réseaux locaux ou les personnes ayant de mauvais souvenirs.
Si vous utilisez un Mac, (en supposant que la version 10.5 ou supérieure), activez simplement VNC pour l'accès au bureau et utilisez Flame.app.
C'est un petit utilitaire vraiment sympa qui vous donne exactement ce dont vous avez besoin, très rapidement. La seule chose est que vous devrez aller plus loin que SSH.
Pour les fenêtres:
1) Écriture: pour / L% I dans (1,1,254) DO ping -w 30 -n 1168.29.0.% I Ceci toutes les adresses de votre réseau local
2) Puis écrivez: arp -a Cela vous donnera toutes les adresses qui ont répondu