web-dev-qa-db-fra.com

Mise en réseau - Partagé avec d'autres ordinateurs - Comment trouver l'adresse IP d'un client?

Le matériel est comme ça:

  • Ordinateur portable avec accès Internet via WiFi. Le routeur est pratiquement inaccessible.
  • Sans tête banane/framboise/Your-Favorite-Flavor Pi qui nécessite une image SD et des packages supplémentaires.

Je reçois donc un câble croisé temporaire entre le Pi et l'ordinateur portable, configure le port Ethernet de l'ordinateur portable comme étant "Partagé avec d'autres ordinateurs" (*), crée une image de la carte SD et démarre le Pi. Maintenant, quelle adresse a le Pi pour que je puisse utiliser SSH?

Je n'ai pas à forcer une adresse particulière, comme le veut cette question . Je veux juste savoir ce que c'est.


(*) Notification réseau -> Modifier les connexions ... -> Connexion filaire 1 -> bouton Modifier -> onglet Paramètres IPv4 -> Méthode = Partagé avec d'autres ordinateurs

5
AaronD

Il y a deux choses que vous pouvez faire. En supposant que vous ayez une seule connexion Ethernet allant d'un ordinateur portable à une framboise, alors arp-scan suffira. Tout d’abord, déterminez le nom de votre interface Ethernet. Dans mon cas, c'est eth3. Voici donc un exemple:

bash-4.3$ Sudo arp-scan -I eth3 --localnet
[Sudo] password for xieerqi: 
Interface: eth3, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.42.0.40  b8:27:eb:96:38:91   (Unknown)

1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.459 seconds (175.46 hosts/sec). 1 responded

Dans la sortie, vous pouvez voir que mon Raspberry a une adresse IP de 10.42.0.40.

Le arp-scan est une approche très simple et ne nécessite pas trop de transpiration. Des méthodes alternatives peuvent aussi être utilisées. En voici quelques unes:

  • Connaissant les 3 premiers octets du réseau (par exemple, via la commande ip addr show eth3 dans mon cas), vous pourriez écrire un script simple qui interroge une plage d'hôtes. (Voir ci-dessous pour le script python qui le fait).
  • fping est une alternative à la commande standard ping, qui permet de détecter la plage d'hôtes
  • Vous pouvez utiliser nmap pour effectuer la découverte d'hôte selon diverses méthodes. En particulier, la commande suivante: nmap -e eth3 -sn 10.42.0.0/24 fonctionnerait au mieux - elle demande à nmap d’effectuer la découverte d’hôte uniquement avec l’option -sn (qui, sous le capot, envoie des demandes ARP pour la diffusion de l’adresse MAC), le interface spécifiée par l'option -e. Le 10.42.0.0/24 est la notation CIDR pour le réseau. Assez facile.
  • Wireshark peut également être utilisé pour capturer des paquets sur votre interface Ethernet. Bien sûr, votre framboise doit commencer par envoyer des paquets pour qu'ils soient capturés, de sorte que cela pourrait ne pas fonctionner si vous n'avez pas de framboise "bavarde". Vous pouvez cependant démarrer la capture, filtrer par protocole UDP, débrancher et rebrancher Raspberry. Vous devriez voir la requête DHCP et la réponse y aller

    enter image description here

  • Les périphériques construisent leur table d'arp au fil du temps lorsque les hôtes apparaissent/disparaissent du réseau. Vous pouvez donc également utiliser la commande arp -a.

  • Si vous utilisez Ubuntu standard et que vous n'avez pas installé de serveur DHCP alternatif, vous pouvez vérifier le fichier dnsmasq leases pour lequel l'IP a été attribué à vos appareils. Par exemple:

    bash-4.3$ cat /var/lib/misc/dnsmasq.leases 
    1479095355 b8:27:eb:96:38:91 10.42.0.40 localhost *
    

    Voir ma question connexe ici: bail DHCP pour Raspberry Pi introuvable


Les approches nmap et Wireshark seront très utiles si vous avez un commutateur Ethernet auquel plusieurs périphériques sont connectés.

Depuis que j'ai mentionné les scripts avec ping, en voici un:

from subprocess import *
network = '10.42.0.'
for num in range(255):
    i = str(num)
    dn = open('/dev/null','w')
    try:
        print('checking ' + network + i)
        check_call(['ping', '-c','1', '-W',
                    '1','-q',network + i],stdout=dn)
    except CalledProcessError:
        pass
        #print('10.42.0.' + i + ' is down')
    else:
        print('>>> ' + network + i + ' is up')

Ceci enverra une commande ping sur la plage de 256 adresses de mon réseau (10.42.0.x), et indiquera lequel des hôtes est actif. Le ping expire au bout de 1 seconde, il faudra donc 256 secondes pour tout analyser. Si vous ne possédez qu'une framboise, vous pouvez modifier le script à quitter si une adresse IP répond au ping, accélérant ainsi le processus. Vous pouvez également créer un certain nombre de threads. arp-scan reste toutefois une alternative plus rapide.

5

Peut-être que ce lien peut être utile: https://www.raspberrypi.org/documentation/remote-access/ip-address.md

La partie principale est:

Installez nmap:

apt-get install nmap

Exécuter un scan de ping:

nmap -sn <your-subnet>

Par exemple:

nmap -sn 192.168.1.0/24

Ensuite, vous obtiendrez une sortie similaire à celle-ci:

Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-10 12:46 GMT
Nmap scan report for hpprinter (192.168.1.2)
Host is up (0.00044s latency).
Nmap scan report for Gordons-MBP (192.168.1.4)
Host is up (0.0010s latency).
Nmap scan report for ubuntu (192.168.1.5)
Host is up (0.0010s latency).
Nmap scan report for raspberrypi (192.168.1.8)
Host is up (0.0030s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.41 seconds

Parfois, j'utilise aussi une application mobile si le wifi est disponible: https://play.google.com/store/apps/details?id=ua.com.streamsoft.pingtools

1
Lorenzo Pizzari