¿Se puede hacer ping a una NIC por MAC

Tengo una tarjeta NIC en una máquina Debian en alguna parte. La máquina está apagada, pero necesito saber si la tarjeta NIC está encendida para poder enviar un paquete mágico de activación en lan más tarde (desde otra máquina Debian) para activarla. Tengo la dirección MAC de la tarjeta. ¿Hay alguna forma de que pueda hacer ping a la tarjeta Ethernet mediante MAC para ver si está encendida?

Intenté crear una entrada ARP:

arp -s 192.168.2.2 00-0c-0d-ef-02-03 ping 192.168.2.2 

Eso no funcionó, ya que la tarjeta NIC no tiene esta dirección IP. Por lo tanto, la tarjeta NIC recibiría la solicitud de ping pero no respondería. ¿Hay alguna forma de evitar esto?

I estoy usando el paquete etherwake para enviar un mensaje wake-on-lan.

Responder

Es posible que tenga más suerte con la herramienta arping en su lugar. La herramienta ping funciona en el nivel de capa 3 del modelo OSI , mientras que arping funciona en la capa 2.

Sin embargo, con esta herramienta, aún necesita conocer la IP del sistema. Hay 2 versiones de Ésta, la estándar incluida con la mayoría de Unixes (Alexey Kuznetsov «s) es la versión que solo puede manejar direcciones IP. La otra versión (Thomas Habets «) supuestamente puede realizar consultas utilizando direcciones MAC.

$ sudo arping 192.168.1.1 -c 1 ARPING 192.168.1.1 from 192.168.1.218 eth0 Unicast reply from 192.168.1.1 [00:90:7F:85:BE:9A] 1.216ms Sent 1 probes (1 broadcast(s)) Received 1 response(s) 

arping funciona de manera similar a ping excepto que en lugar de enviar paquetes ICMP, envía paquetes ARP.

Obtener un sistema » s IP usando solo la MAC

Aquí hay un par de métodos para realizar la búsqueda inversa de MAC a IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Luego busque en su caché arp la máquina correspondiente arp -an.

  2. fping

    $ fping -a -g 192.168.1.0/24 -c 1 

    Luego busque en su caché arp, igual que arriba.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Luego busque en su caché arp, igual que arriba.

  4. nbtscan (solo hosts de Windows)

    $ nbtscan 192.168.1.0/24 Doing NBT name scan for addresses from 192.168.1.0/24 IP address NetBIOS Name Server User MAC address ------------------------------------------------------------------------------ 192.168.1.0 Sendto failed: Permission denied 192.168.1.4 MACH1 <server> <unknown> 00-0b-12-60-21-dd 192.168.1.5 MACH2 <server> <unknown> 00-1b-a0-3d-e7-be 192.168.1.6 MACH3 <server> <unknown> 00-21-9b-12-b6-a7 

Comentarios

  • arping puede tomar una dirección MAC como parámetro: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Lo hice después de que alguien básicamente publicó mi respuesta como comentario y no ‘ no había leído lo que dije sobre 2 versiones de arping. La otra respuesta parece haber sido eliminada, así que gracias por sacar mis frustraciones audaces.
  • Gracias por la ayuda. Marcando esto como resuelto. No pudimos ‘ t encontrar una opción WOL en la configuración del BIOS. Esta es mi suposición: el BIOS no tenía WOL activado, pero la NIC sí. Entonces, la NIC se estaba despertando con el primer paquete WOL y estaba enviando un mensaje al BIOS. Pero como no estaba encendido en el BIOS, el BIOS no hizo nada. A partir de este momento, la NIC respondió al ping ya que estaba despierta, pero la máquina no. Pregunta rápida: ¿Es posible que el BIOS tenga WOL apagado y la NIC encendido al mismo tiempo?
  • @AlastorMoody – Yo diría que usted ‘ probablemente se le permita apagar BIOS WOL con NIC ‘ s WOL encendido. Sin embargo, si su BIOS no ‘ t es compatible con WOL, entonces ‘ no creo que ‘ Podrá utilizarlo incluso si la NIC lo hace. Consulte el artículo de Wikipedia sobre WOL: en.wikipedia.org/wiki/Wake-on-LAN . Dice lo mismo que yo en la sección » solución de problemas de paquetes mágicos «.
  • @niervol: arping a una dirección MAC: Sí, hay dos implementaciones de arping 1. desde Linux iputils 2. arpeado de Thomas Habets . — Solo la implementación 2. puede hacer ping a una dirección MAC, pero tal ping es muy complicado: la máquina a la que se le ha hecho ping todavía tiene que tener TCP / IP configurado (al menos una dirección IP) y capaz de responder a un ping a una dirección IP de transmisión.

Responder

No puede hacer ping a una NIC normal porque la NIC por sí sola no envía ninguna respuesta.

Solo una computadora en ejecución puede enviar respuestas

Las tarjetas de interfaz de red normales no envían respuestas por sí mismas. Siempre necesitan un software en ejecución en la computadora para hacerlo.

Cuando la CPU de la computadora está apagada, no hay ningún software en ejecución que envíe una respuesta a un ping.

Wake-on-LAN es unidireccional

Wake-on-LAN permite que la computadora permita que solo la NIC se encienda parcialmente para recibir Tramas de Ethernet y busque la secuencia mágica de activación en ellas, pero la NIC aún no enviará ninguna respuesta. Wake-on-LAN es estrictamente unidireccional. No se han enviado respuestas.

Excepciones

Hay ciertas NIC especiales que pueden enviar respuestas por sí mismas como, por ejemplo, las que implementan una TCP handshake offload .

Comentarios

  • +1: esta es la única respuesta que realmente aborda el OP ‘ s pregunta. » Wake-on-LAN es unidireccional «.

Respuesta

El comando ether-wake funcionará con la dirección mac, así que seguramente (a) no necesitará una dirección IP y (b) puede enviar el comando sin dañarlo (si ya está activo, ¿despertarlo no tendrá ningún impacto?)

Puede ver la lista de su caché arp existente usando arp -an y grepping para que su MAC obtenga la IP del host de destino. Sin embargo, debido a que arp es un caché, es posible que se haya agotado el tiempo de espera del caché (y aún esté «activo»). Luego, puede que tenga que usar un método de fuerza bruta para encontrar su IP, como:

 sudo nmap -sP 192.168.2.0/24 | less 

(y luego busque 00: 0c: 0d: ef: 02: 03) – ¡los firewalls proporcionados y otras cosas similares no se interponen en el camino!

Comentarios

  • Yo no ‘ No quiero reactivar la máquina ahora mismo. Pero quiero asegurarme de que la NIC pueda recibir mis mensajes para que cuando salga del sitio y enciendo la máquina a través de un paquete WOL, sepa que se encenderá. Esa ‘ es la razón por la que quiero hacer ping por IP o MAC y no despertarlo.
  • Las máquinas durmientes no responderán al ping. Si la máquina está encendida y hace ping por IP (y el host responde), colocará una entrada en el caché arp. Si la entrada allí coincide con la dirección MAC del host, existe una posibilidad razonable de que funcione (dejando al descubierto otros firewalls de red, enrutadores y otros problemas físicos que pueden hacer que ether-wake no alcanzalo). De hecho, obtendría acceso a otro host en el sitio, pondría la máquina de destino en suspensión e intentaría ether-wake. Por la naturaleza de cómo funciona WOL, la solicitud tendrá que enviarse en la misma subred que el host de todos modos
  • @DravSloan el Proxy Bonjour disponible en p. Ej. Apples Time Capsule es una forma bastante ingeniosa de manejar este problema. La máquina está inactiva, pero el enrutador responde y solo la activa cuando el proxy ‘ ya no puede manejarla.
  • No ‘ t confíe en WOL sin haberlo probado primero. Prefiero obtener una tarjeta IPMI en ese caso.

Responder

Mi aplicación era un servidor RSYNC que ingresaba a una estación de trabajo para obtener el directorio de documentos de la estación de trabajo … pero la estación de trabajo no tenía una dirección IP garantizada, pero tenía una dirección MAC conocida (la dirección IP fue realizada por DHCP). Este código usa ping ÚNICAMENTE.

export COUNTER=1 while [ $COUNTER -lt 255 ] do #ping $1$COUNTER -c 1 -w 400 | grep -B 1 "Lost = 0" & # activate all 254 addresses in the subnet.. dont really need to grep the ping output ping 192.168.0.$COUNTER -c 1 -w 4 2> /dev/null | grep -B 1 " 0\% packet loss" > /dev/null & COUNTER=$(( $COUNTER + 1 )) done # wait till 254 background processes finished wait # the arp cache will automatically flush it"s incomplete entries in about 10 minutes... #echo "finished" # #SRC_SERVER_IP="192.168.0.160:873" SRC_SERVER_IP=$(arp -a | grep "00:22:4d:81:8f:76" | awk "{print $2}" | sed "s/[()]//g")":873" if [ $SRC_SERVER_IP == ":873" ] ; then echo "ws1.example.com is not on the network... exiting..." exit 0 fi 

Responder

Aquí hay una secuencia de comandos simple para hacer ping a través de la dirección Mac. Simplemente guarde y ejecute, por ejemplo,
macping aa:bb:cc:dd:ee:ff

También puede conectar en cadena el resultado para hacer otras cosas condicionalmente, por ejemplo:

macping aa:bb:cc:dd:ee:ff && echo do something if online || echo do something if offline 

#!/bin/bash network=192.168.1.1/24 if [ "$#" -ne 1 ]; then echo Usage example: $0 aa:bb:cc:dd:ee:ff; exit 2; fi; nmap -sP $network >& /dev/null ip=$(arp -n | grep $1 | awk " { print $1 }") ping $ip -n -q -c 2 -i 0.2 -w 1 >& /dev/null if [ $? -eq 0 ]; then echo Device is online \($ip\) else echo Device is offline exit 1 fi; 

Responder

Esto no se basa en diferencias versiones de arping ni en scripts bash complejos:

ping $(arp-scan --localnet | grep 80:1f:02:fa:90:b7 | awk " { printf $1 } ") 

He usado arp-scan en lugar de arp, ya que parece ejecutarse mucho más rápido.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *