Kann man eine NIC per MAC anpingen


28

Ich habe irgendwo eine NIC-Karte auf einem Debian-Rechner. Die Maschine ist ausgeschaltet, aber ich muss wissen, ob die NIC-Karte eingeschaltet ist, damit ich später (von einer anderen Debian-Maschine) ein Wake-on-LAN-Zauberpaket senden kann, um sie zu aktivieren. Ich habe die MAC-Adresse der Karte. Kann ich die Ethernet-Karte per MAC anpingen, um festzustellen, ob sie eingeschaltet ist?

Ich habe versucht, einen ARP-Eintrag zu erstellen:

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

Das hat nicht funktioniert, da die NIC-Karte diese IP-Adresse nicht hat. Die NIC-Karte würde also die Ping-Anfrage erhalten, aber nicht darauf antworten. Gibt es einen Weg, dies zu umgehen?

Ich verwende das Etherwake-Paket, um eine Wake-on-Lan-Nachricht zu senden.

Antworten:


23

Vielleicht haben Sie arpingstattdessen mehr Glück mit dem Tool . Das Tool pingarbeitet auf Ebene 3 des OSI-Modells , während es arpingauf Ebene 2 arbeitet.

Sie müssen jedoch mit diesem Tool die IP des Systems kennen. Es gibt 2 Versionen davon, die Standardversion, die in den meisten Unixen enthalten ist (Alexey Kuznetsovs), ist die Version, die nur mit IP-Adressen umgehen kann. Die andere Version (Thomas Habets ') kann angeblich über MAC-Adressen abfragen.

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

arpingFunktioniert ähnlich wie, pingaußer dass anstelle von ICMP-Paketen ARP-Pakete gesendet werden.

Abrufen der IP-Adresse eines Systems nur über den MAC

Im Folgenden finden Sie einige Methoden für die umgekehrte Suche von MAC nach IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24
    

    Dann suchen Sie in Ihrem Arp-Cache nach der entsprechenden Maschine arp -an.

  2. fping

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

    Dann schau in deinen Arp-Cache, genauso wie oben.

  3. Klingeln

    $ ping -b -c1 192.168.1.255
    

    Dann schau in deinen Arp-Cache, genauso wie oben.

  4. nbtscan (nur Windows-Hosts)

    $ 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
    

3
arpingkann eine MAC-Adresse als Parameter verwenden:arping -c 5 38:e7:d8:63:5e:a6

@MichaelMrozek - Ich habe es getan, nachdem jemand meine Antwort im Grunde genommen als Kommentar gepostet und nicht gelesen hatte, was ich über 2 Versionen von Arping gesagt habe. Die andere Antwort scheint gelöscht worden zu sein, also danke, dass du meine kühnen Frustrationen beseitigt hast.
SLM

Danke für die Hilfe. Markieren Sie dies als gelöst. Wir konnten im BIOS-Setup keine WOL-Option finden. Dies ist meine Vermutung: Im BIOS war WOL nicht aktiviert, aber die Netzwerkkarte. Die Netzwerkkarte wurde beim ersten WOL-Paket aktiviert und sendete eine Nachricht an das BIOS. Da es jedoch im BIOS nicht aktiviert war, hat das BIOS nichts unternommen. Von diesem Moment an reagierte die Netzwerkkarte auf Ping, da es wach war, die Maschine jedoch nicht. So kurze Frage: Ist es möglich, dass das BIOS WOL ausgeschaltet und die Netzwerkkarte gleichzeitig eingeschaltet hat?
Alastor Moody

1
@AlastorMoody - Ich würde sagen, dass Sie wahrscheinlich das BIOS-WOL ausschalten dürfen, wenn das WOL der Netzwerkkarte eingeschaltet ist. Wenn Ihr BIOS jedoch WOL nicht unterstützt, können Sie es meines Erachtens auch dann nicht verwenden, wenn dies auf der Netzwerkkarte der Fall ist. Siehe den Wikipedia-Artikel zu WOL: en.wikipedia.org/wiki/Wake-on-LAN . Sagt dasselbe wie ich im Abschnitt "Fehlerbehebung bei Magic Packets".
slm

@niervol: arpingan eine MAC-Adresse: Ja, es gibt zwei Implementierungen von Arping 1. von Linux iputils 2. Arping von Thomas Habets . --- Nur die 2. Implementierung kann eine MAC-Adresse pingen, aber ein solcher Ping ist sehr schwierig: Auf dem Ping-Rechner muss noch TCP / IP konfiguriert sein (mindestens eine IP-Adresse) und er muss in der Lage sein, auf einen Ping zu antworten eine Broadcast-IP-Adresse.
Pabouk

12

Sie können keine normale Netzwerkkarte anpingen, da die Netzwerkkarte allein keine Antworten sendet.

Nur ein laufender Computer kann Antworten senden

Normale Netzwerkkarten senden selbst keine Antworten. Sie benötigen dazu immer eine laufende Software auf dem Computer.

Wenn die CPU des Computers ausgeschaltet ist, wird keine Software ausgeführt, die eine Antwort auf einen Ping senden würde.

Wake-on-LAN ist unidirektional

Wake-on-LAN ermöglicht es dem Computer, nur die Netzwerkkarte teilweise einzuschalten, um Ethernet-Frames zu empfangen und nach der magischen Aktivierungssequenz in ihnen zu suchen. Die Netzwerkkarte sendet jedoch weiterhin keine Antwort. Wake-on-LAN ist streng unidirektional. Es werden keine Antworten gesendet.

Ausnahmen

Es gibt bestimmte spezielle NICs, die von sich aus Antworten senden können, z. B. solche, die ein vollständiges TCP-Handshake-Offload implementieren .


1
+1 - Dies ist die einzige Antwort, die die Frage des OP wirklich beantwortet. "Wake-on-LAN ist unidirektional".
Celada

5

Der ether-wakeBefehl funktioniert mit der Mac-Adresse, sodass Sie (a) keine IP-Adresse benötigen und (b) den Befehl ohne Schaden senden können (wenn er bereits wach ist, hat das Aufwecken keine Auswirkungen?)

Sie können die Liste Ihres vorhandenen Arp-Caches anzeigen, indem arp -anSie Ihren MAC verwenden und nach ihm suchen, um die IP des Zielhosts abzurufen. Da es sich bei arp jedoch um einen Cache handelt, wurde möglicherweise eine Zeitüberschreitung für den Cache festgestellt (und er ist immer noch "aktiv"). In diesem Fall müssen Sie möglicherweise eine Brute-Force-Methode verwenden, um die IP-Adresse zu ermitteln. Beispiel:

 sudo nmap -sP 192.168.2.0/24 | less  

(und dann nach 00: 0c: 0d: ef: 02: 03 suchen) - vorausgesetzt, Firewalls und andere solche Dinge stören nicht!


Ich möchte die Maschine jetzt nicht aufwecken. Ich möchte jedoch sicherstellen, dass die Netzwerkkarte meine Nachrichten empfangen kann, sodass ich weiß, dass sie sich einschalten wird, wenn ich den Computer über ein WOL-Paket außerhalb des Standorts einschalte. Deshalb möchte ich per IP oder MAC pingen und nicht aufwecken.
Alastor Moody

2
Schlafmaschinen reagieren nicht auf Ping. Wenn der Computer eingeschaltet ist und Sie einen Ping-Befehl per IP senden (und der Host antwortet), wird ein Eintrag in den Arp-Cache eingefügt. Wenn der Eintrag dort mit der MAC-Adresse des Hosts übereinstimmt, besteht eine vernünftige Wahrscheinlichkeit, dass er funktioniert (mit Ausnahme anderer Netzwerk-Firewalls, Router und anderer physischer Probleme, die dazu führen können, dass der Host ihn ether-wakenicht erreicht). Ich würde tatsächlich Zugriff auf einen anderen Host vor Ort erhalten, den Zielcomputer in den Ruhezustand versetzen und versuchen, die ether-wake.
Aufgrund

2
@DravSloan, der Bonjour-Proxy, der z. B. auf Apples Time Capsule verfügbar ist, ist eine geniale Möglichkeit, mit diesem Problem umzugehen. Das Gerät geht in den Ruhezustand, aber der Router reagiert darauf und aktiviert es nur, wenn der Proxy nicht mehr damit umgehen kann.
Thorbjørn Ravn Andersen

Verlassen Sie sich nicht auf WOL, ohne es zuerst testen zu lassen. Besorgen Sie sich in diesem Fall lieber eine IPMI-Karte.
So

0

Meine Anwendung war ein Server, der eine RSYNC-Verbindung zu einer Arbeitsstation herstellte, um das Dokumentverzeichnis der Arbeitsstation abzurufen. Die Arbeitsstation hatte jedoch keine garantierte IP-Adresse, sondern eine bekannte MAC-Adresse (die IP-Adresse wurde von DHCP vorgenommen). Dieser Code verwendet NUR 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

0

Hier ist ein einfaches Skript, um über die Mac-Adresse zu pingen. Einfach speichern und zB ausführen
macping aa:bb:cc:dd:ee:ff

Sie können das Ergebnis auch verketten, um unter bestimmten Bedingungen andere Dinge zu tun, z.

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;

0

Dies hängt weder von unterschiedlichen Versionen von Arping noch von komplexen Bash-Skripten ab:

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

Ich habe Arp-Scan anstelle von Arp verwendet, da es viel schneller zu laufen scheint.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.