Ich habe irgendwo eine Netzwerkkarte auf einem Debian-Computer. Das Gerät ist ausgeschaltet, aber ich muss wissen, ob die NIC-Karte eingeschaltet ist, damit ich später (von einem anderen Debian-Gerät) ein Wake-on-Lan-Magiepaket senden kann, um es aufzuwecken. Ich habe die MAC-Adresse der Karte. Kann ich die Ethernet-Karte auf irgendeine Weise per MAC anpingen, um festzustellen, ob sie aktiviert 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?
I. Ich verwende das Etherwake-Paket, um eine Wake-on-LAN-Nachricht zu senden.
Antwort
Mit dem Tool haben Sie möglicherweise mehr Glück arping
stattdessen. Das Tool ping
arbeitet auf Ebene 3 des OSI-Modells , während arping
auf Schicht 2 funktioniert.
Sie müssen die IP-Adresse des Systems jedoch mit diesem Tool noch kennen. Es gibt 2 Versionen von Die Standardversion der meisten Unixe (Alexey Kuznetsov) ist die Version, die nur IP-Adressen verarbeiten kann. Die andere Version (Thomas Habets „) kann angeblich unter Verwendung von 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)
arping
funktioniert ähnlich wie ping
, außer dass anstelle von ICMP-Paketen ARP-Pakete gesendet werden.
Ein System abrufen “ s IP nur mit dem MAC
Hier sind einige Methoden für die umgekehrte Suche von MAC zu IP.
-
nmap
$ nmap -sP 192.168.1.0/24
Suchen Sie dann in Ihrem Arp-Cache nach dem entsprechenden Computer
arp -an
. -
fping
$ fping -a -g 192.168.1.0/24 -c 1
Schauen Sie dann wie oben in Ihrem Arp-Cache nach.
-
ping
$ ping -b -c1 192.168.1.255
Schauen Sie dann wie oben in Ihrem Arp-Cache nach.
-
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
Kommentare
-
arping
kann eine MAC-Adresse als Parameter verwenden:arping -c 5 38:e7:d8:63:5e:a6
- @MichaelMr ozek – 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. Vielen Dank, dass Sie meine kühnen Frustrationen beseitigt haben.
- Vielen Dank für die Hilfe. Markieren Sie dies als gelöst. ‚ konnte im BIOS-Setup keine WOL-Option finden. Dies ist meine Vermutung: Im BIOS war WOL nicht aktiviert, in der Netzwerkkarte jedoch. Die Netzwerkkarte wachte also beim ersten WOL-Paket auf 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 und die Netzwerkkarte gleichzeitig aktiviert haben?
- @AlastorMoody – Ich würde sagen, dass Sie ‚ darf BIOS WOL wahrscheinlich mit NIC ‚ s WOL ausschalten. Wenn Ihr BIOS jedoch ‚ WOL nicht unterstützt, denke ich ‚ nicht, dass Sie ‚ Ich kann es auch dann nutzen, wenn die Netzwerkkarte dies tut. Siehe den Wikipedia-Artikel zu WOL: en.wikipedia.org/wiki/Wake-on-LAN . Sagt dasselbe wie ich im Abschnitt “ zur Fehlerbehebung bei magischen Paketen „.
- @niervol:
arping
an eine MAC-Adresse: Ja, es gibt zwei Implementierungen von arping 1. unter Linux iputils 2. Arping von Thomas Habets . — Nur die 2. -Implementierung kann eine MAC-Adresse anpingen, aber ein solcher Ping ist sehr schwierig: Auf dem Ping-Computer muss noch TCP / IP konfiguriert sein (mindestens eine IP-Adresse), und das muss sein kann auf einen Ping an eine Broadcast-IP-Adresse antworten.
Antwort
Sie können eine normale Netzwerkkarte nicht anpingen, da die Netzwerkkarte allein keine Antworten sendet.
Nur ein laufender Computer kann Antworten senden
Normale Netzwerkkarten senden selbst keine Antworten. Dazu benötigen sie immer eine laufende Software auf dem Computer.
Wenn die CPU des Computers ausgeschaltet ist, gibt es keine laufende Software, 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 zum Einschalten teilweise einzuschalten Ethernet-Frames und suchen Sie nach der magischen Wecksequenz in ihnen, aber die Netzwerkkarte sendet immer noch keine Antwort. Wake-on-LAN ist streng unidirektional. Es werden keine Antworten gesendet.
Ausnahmen
Es gibt bestimmte spezielle Netzwerkkarten, die selbst Antworten senden können, z. B. solche, die ein vollständiges TCP-Handshake-Offload implementieren. a>.
Kommentare
- +1 – Dies ist die einzige Antwort, die das OP wirklich anspricht. ‚ s Frage. “ Wake-on-LAN ist unidirektional „.
Antwort
Der Befehl ether-wake
funktioniert nach Mac-Adresse, sodass Sie (a) sicher keine IP-Adresse benötigen und (b) kann den Befehl ohne Schaden senden (wenn er bereits wach ist, hat das Aufwachen keine Auswirkungen?)
Sie können die Liste Ihres vorhandenen Arp-Cache mithilfe von arp -an
und grepping nach Ihrem MAC, um die IP des Zielhosts zu erhalten. Da es sich bei arp jedoch um einen Cache handelt, wurde möglicherweise eine Zeitüberschreitung im Cache festgestellt (und es ist immer noch „wach“). Möglicherweise müssen Sie dann eine Brute-Force-Methode verwenden, um die IP-Adresse zu ermitteln, z. B.:
sudo nmap -sP 192.168.2.0/24 | less
(und dann nach 00: 0c: 0d suchen: ef: 02: 03) – vorausgesetzt, Firewalls und andere solche Dinge stören nicht!
Kommentare
- Ich ‚ möchte die Maschine jetzt nicht aufwecken. Ich möchte jedoch sicherstellen, dass die Netzwerkkarte meine Nachrichten empfangen kann, damit ich weiß, dass sie sich einschalten wird, wenn ich außerhalb des Unternehmens den Computer über ein WOL-Paket einschalte. Aus diesem Grund möchte ich ‚ per IP oder MAC pingen und nicht aufwecken.
- Schlafende Maschinen reagieren nicht auf Ping. Wenn der Computer eingeschaltet ist und Sie per IP pingen (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 (abgesehen von anderen Netzwerkfirewalls, Routern und anderen physischen Problemen, die dazu führen können, dass
ether-wake
dies nicht tut erreiche es). Ich würde tatsächlich vor Ort Zugriff auf einen anderen Host erhalten, den Zielcomputer in den Ruhezustand versetzen und versuchen,ether-wake
auszuführen. Aufgrund der Funktionsweise von WOL muss die Anforderung ohnehin im selben Subnetz wie der Host gesendet werden. - @DravSloan the Bonjour Proxy, verfügbar auf z. Apples Time Capsule ist eine ziemlich geniale Methode, um mit diesem Problem umzugehen. Der Computer schläft, aber der Router antwortet darauf und weckt ihn nur, wenn der Proxy ‚ nicht mehr damit umgehen kann.
- Nicht ‚ Verlassen Sie sich nicht auf WOL, ohne es vorher testen zu lassen. In diesem Fall erhalten Sie lieber eine IPMI-Karte.
Antwort
Meine Anwendung war ein Server, der eine RSYNC-Verbindung zu einer Workstation herstellte Holen Sie sich das Dokumentverzeichnis der Workstation … aber die Workstation hatte keine garantierte IP-Adresse, aber eine bekannte MAC-Adresse (IP-Adresse wurde von DHCP erstellt). 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
Antwort
Hier ist ein einfaches Skript zum Pingen über die Mac-Adresse. Speichern und einfach ausführen, z. B.
macping aa:bb:cc:dd:ee:ff
Sie können das Ergebnis auch verketten, um andere Dinge bedingt auszuführen, z. B.:
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;
Antwort
Dies beruht nicht auf Unterschieden Versionen von Arping oder komplexen Bash-Skripten:
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.