it-swarm-es.com

Redes - Compartidas con otras computadoras - ¿Cómo encontrar la dirección IP de un cliente?

El hardware es así:

  • Portátil con acceso a internet a través de WiFi. El enrutador es prácticamente inaccesible.
  • Plátano sin cabeza/Frambuesa/Your-Favorite-Flavor Pi que necesita una imagen SD y algunos paquetes adicionales.

Así que obtengo un cable cruzado temporal entre el Pi y la computadora portátil, configuro el puerto ethernet de la computadora portátil como "Compartido con otras computadoras" (*), tomo la imagen de la tarjeta SD y arranco la Pi. Ahora, ¿qué dirección tiene el Pi para que pueda ingresar SSH?

No tengo que forzar una dirección en particular, como esta pregunta quiere . Solo quiero saber de qué se trata.


(*) Notificación de red -> Editar conexiones ... -> Conexión por cable 1 -> Botón Editar -> Pestaña Configuración IPv4 -> Método = Compartido con otras computadoras

5
AaronD

Hay un par de cosas que puedes hacer. Suponiendo que tiene una conexión Ethernet única que va de la computadora portátil a la frambuesa, entonces arp-scan será suficiente. Primero, descubra cuál es el nombre de su interfaz ethernet. En mi caso eso es eth3. Por lo tanto, aquí hay un ejemplo:

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

En la salida puede ver que mi Raspberry tiene una dirección IP 10.42.0.40.

El arp-scan es un enfoque muy simple y no requiere demasiado sudor. También se pueden usar métodos alternativos. Aquí hay algunos de ellos:

  • Conociendo los primeros 3 octetos de la red (por ejemplo, a través del comando ip addr show eth3 en mi caso), podría escribir un script simple que emita una gama de hosts. (Consulte a continuación la secuencia de comandos python que hace eso).
  • fping es una alternativa al comando estándar ping, que permite sondear el rango de Host
  • Puede usar nmap para realizar el descubrimiento de Host en una variedad de métodos. En particular, este comando: nmap -e eth3 -sn 10.42.0.0/24 funcionaría mejor - indica a nmap que solo realice el descubrimiento de Host con la opción -sn (que debajo del capó envía solicitudes ARP para transmitir la dirección MAC), en interfaz especificada por la opción -e. El 10.42.0.0/24 es la notación CIDR para la red. Bastante sencillo.
  • Wireshark también se puede utilizar para capturar paquetes en su interfaz Ethernet. Por supuesto, su Raspberry tiene que enviar algunos paquetes en primer lugar para que sean capturados, por lo que podría no funcionar si no tiene una frambuesa "comunicativa". Sin embargo, puede iniciar la captura, filtrar por protocolo UDP, desenchufar y volver a conectar Raspberry. Debería ver la solicitud y la respuesta de DHCP dirigiéndose a ella

    enter image description here

  • Los dispositivos crean su tabla arp con el tiempo cuando los hosts aparecen/desaparecen de la red, por lo que también puede usar el comando arp -a.

  • Si está utilizando Ubuntu estándar y no instaló ningún servidor DHCP alternativo, puede verificar el archivo de arrendamientos dnsmasq para el que se asignó la IP a sus dispositivos. Por ejemplo:

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

    Vea mi pregunta relacionada aquí: contrato de arrendamiento de DHCP para Raspberry Pi no encontrado


Los enfoques nmap y Wireshark serán bastante útiles si tiene un conmutador ethernet con varios dispositivos conectados.

Como mencioné las secuencias de comandos con ping, aquí hay una:

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')

Esto hará un rango de ping de 256 direcciones de mi red (10.42.0.x) e indicará cuál de los hosts está activo. El ping agota el tiempo de espera después de 1 segundo, por lo tanto, llevará 256 segundos escanear todo. Si solo tiene una frambuesa, puede editar el script para salir si una IP responde al ping, lo que acelera el proceso. También puede crear una cierta cantidad de hilos. arp-scan sin embargo, sigue siendo una alternativa más rápida.

5

Quizás este enlace pueda ser útil: https://www.raspberrypi.org/documentation/remote-access/ip-address.md

La parte central es:

Instalar nmap:

apt-get install nmap

Ejecute un escaneo de ping:

nmap -sn <your-subnet>

Por ejemplo:

nmap -sn 192.168.1.0/24

Entonces tendrá una salida similar a esta:

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

A veces uso también una aplicación móvil si el wifi está disponible: https://play.google.com/store/apps/details?id=ua.com.streamsoft.pingtools

1
Lorenzo Pizzari