Peut-on envoyer un ping à un NIC par MAC

Jai une carte NIC sur une machine Debian quelque part. La machine est éteinte, mais jai besoin de savoir si la carte NIC est activée pour que je puisse envoyer un paquet magique de réveil plus tard (depuis une autre machine Debian) pour la réveiller. Jai ladresse MAC de la carte. Est-il possible que je puisse envoyer un ping à la carte Ethernet par MAC pour voir si elle est allumée?

Jai essayé de créer une entrée ARP:

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

Cela na pas fonctionné, car la carte NIC na pas cette adresse IP. La carte NIC recevrait donc la requête ping mais ny répondrait pas. Y a-t-il un moyen de contourner ce problème?

I Jutilise le package etherwake pour envoyer un message de réveil sur le réseau.

Réponse

Vous aurez peut-être plus de chance en utilisant loutil arping à la place. Loutil ping fonctionne au niveau de la couche 3 du modèle OSI , alors que arping fonctionne à la couche 2.

Vous devez cependant connaître ladresse IP du système avec cet outil. Il existe 2 versions de elle, la version standard incluse avec la plupart des Unix (Alexey Kuznetsov) est la version qui ne peut traiter que les adresses IP. L autre version (Thomas Habets « ) peut prétendument interroger à laide dadresses 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 fonctionne de manière similaire à ping sauf quau lieu denvoyer des paquets ICMP, il envoie des paquets ARP.

Obtenir un système  » s IP en utilisant uniquement le MAC

Voici quelques méthodes pour effectuer la recherche inversée de MAC vers IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Ensuite, recherchez dans votre cache arp la machine correspondante arp -an.

  2. fping

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

    Ensuite, regardez dans votre cache arp, comme ci-dessus.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Ensuite, regardez dans votre cache arp, comme ci-dessus.

  4. nbtscan (hôtes Windows uniquement)

    $ 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 

Commentaires

  • arping peut prendre une adresse MAC comme paramètre: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Je lai fait après que quelquun ait posté ma réponse sous forme de commentaire et nait ‘ pas lu ce que jai dit à propos de 2 versions darping. Lautre réponse semble avoir été supprimée, merci davoir éliminé mes frustrations audacieuses.
  • Merci pour laide. Marquer ceci comme résolu. Nous navons pas pu ‘ trouver une option WOL dans la configuration du BIOS. Cest mon hypothèse: le BIOS navait pas activé WOL, mais le NIC la fait. Ainsi, le NIC se réveillait sur le premier paquet WOL et envoyait un message au BIOS. Mais comme il nétait pas activé dans le BIOS, le BIOS na rien fait. A partir de ce moment, la carte réseau a répondu au ping car elle était réveillée, mais pas la machine. Question si rapide: est-il possible pour le BIOS de désactiver WOL et dactiver la carte réseau en même temps?
  • @AlastorMoody – je dirais que vous ‘ est probablement autorisé à désactiver le BIOS WOL avec le NIC ‘ s WOL activé. Cependant, si votre BIOS ne ‘ ne prend pas en charge WOL, alors je ne ‘ pense pas que vous ‘ Je serai en mesure de lutiliser même si le NIC le fait. Voir larticle de wikipedia sur WOL: en.wikipedia.org/wiki/Wake-on-LAN . Dit la même chose que moi dans la section  » dépannage des paquets magiques « .
  • @niervol: arping à une adresse MAC: Oui, il existe deux implémentations de arping 1. de Linux iputils 2. arping par Thomas Habets . — Seule limplémentation 2. peut envoyer un ping à une adresse MAC mais un tel ping est très délicat: la machine ping doit toujours avoir TCP / IP configuré (au moins une adresse IP) et il doit être capable de répondre à un ping sur une adresse IP de diffusion.

Réponse

Vous ne pouvez pas envoyer de ping à une carte réseau normale car la carte réseau seule nenvoie aucune réponse.

Seul un ordinateur en cours dexécution peut envoyer des réponses

Les cartes dinterface réseau normales nenvoient aucune réponse par elles-mêmes. Ils ont toujours besoin dun logiciel en cours dexécution sur lordinateur pour ce faire.

Lorsque le processeur de lordinateur est éteint, il ny a aucun logiciel en cours dexécution qui enverrait une réponse à un ping.

Wake-on-LAN est unidirectionnel

Wake-on-LAN permet à lordinateur de ne laisser que la carte réseau être partiellement allumée pour recevoir Trames Ethernet et recherchez la séquence de réveil magique dans celles-ci, mais le NIC nenverra toujours aucune réponse. Wake-on-LAN est strictement unidirectionnel. Aucune réponse na été envoyée.

Exceptions

Il existe certaines cartes réseau spéciales qui pourraient envoyer des réponses par elles-mêmes, comme par exemple celles implémentant un déchargement complet de TCP handshake .

Commentaires

  • +1 – cest la seule réponse qui aborde vraiment lOP ‘ question de s.  » Wake-on-LAN est unidirectionnel « .

Réponse

La commande ether-wake fonctionnera par adresse mac, donc vous naurez sûrement pas besoin dune adresse IP et (b) peut envoyer la commande sans dommage (sil « est déjà réveillé, le réveiller naura aucun impact?)

Vous pouvez voir la liste de votre cache arp existant en utilisant arp -an et grepping pour que votre MAC obtienne ladresse IP de lhôte cible. Cependant, comme arp est un cache, il peut avoir été « expiré » du cache (et être toujours « éveillé »). Vous devrez peut-être utiliser une méthode de force brute pour trouver son adresse IP, telle que:

 sudo nmap -sP 192.168.2.0/24 | less 

(puis recherchez 00: 0c: 0d: ef: 02: 03) – à condition que les pare-feu et autres choses du même genre ne gênent pas!

Commentaires

  • Je ne ‘ Je ne veux pas réveiller la machine maintenant. Mais je veux massurer que la carte réseau peut recevoir mes messages de sorte que lorsque je sors du site et que jallume la machine via un paquet WOL, je sache quelle va sallumer. Cest ‘ pourquoi je veux envoyer un ping par IP ou MAC et ne pas le réveiller.
  • Les machines endormies ne répondront pas au ping. Si la machine est allumée et que vous envoyez un ping par IP (et que lhôte réponde), il mettra une entrée dans le cache arp. Si lentrée correspond à ladresse MAC de lhôte, il y a une chance raisonnable que cela fonctionne (en excluant dautres pare-feu réseau, routeurs et autres problèmes physiques qui peuvent empêcher ether-wake de latteindre). Jaurais en fait accès à un autre hôte sur place, mettre la machine cible en veille et tenter le ether-wake. De par la nature du fonctionnement de WOL, la demande devra de toute façon être envoyée sur le même sous-réseau que lhôte
  • @DravSloan le proxy Bonjour disponible par ex. Apples Time Capsule est une manière assez ingénieuse de gérer ce problème. La machine dort mais le routeur répond pour cela, et ne le réveille que lorsque le proxy ne peut plus ‘ le gérer.
  • Don ‘ ne comptez pas sur WOL sans lavoir testé au préalable. Dans ce cas, procurez-vous plutôt une carte IPMI.

Réponse

Mon application était un serveur RSYNCing dans un poste de travail pour obtenir le répertoire de documents du poste de travail … mais le poste de travail navait pas dadresse IP garantie mais avait une adresse MAC connue (ladresse IP a été effectuée par DHCP). ce code utilise UNIQUEMENT le ping.

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 

Réponse

Voici un script simple pour envoyer un ping via ladresse mac. Il suffit denregistrer et dexécuter par exemple
macping aa:bb:cc:dd:ee:ff

Vous pouvez également chaîner le résultat pour faire dautres choses de manière conditionnelle, par exemple:

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; 

Réponse

Cela ne repose pas sur des différences versions darping ni de scripts bash complexes:

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

Jai « utilisé arp-scan plutôt que arp car il semble fonctionner beaucoup plus vite.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *