Jeg har et NIC-kort på en Debian-maskine et eller andet sted. Maskinen er slukket, men jeg har brug for at vide, om NIC-kortet er tændt, så jeg senere kan sende en wake-on-lan-magisk pakke (fra en anden Debian-maskine) for at vække den. Jeg har kortets MAC-adresse. Er der nogen måde, jeg kan pinge ethernet-kortet af MAC for at se, om det er tændt?
Jeg forsøgte at oprette en ARP-post:
arp -s 192.168.2.2 00-0c-0d-ef-02-03 ping 192.168.2.2
Det fungerede ikke, da NIC-kortet ikke har denne ip-adresse. Så NIC-kortet modtog ping-anmodningen, men ville ikke svare på det. Er der nogen vej rundt dette?
I bruger etherwake-pakken til at sende en wake-on-lan-besked.
Svar
Du har måske bedre held ved hjælp af værktøjet arping
i stedet. Værktøjet ping
fungerer på lag 3-niveau i OSI-modellen , mens arping
fungerer i lag 2.
Du skal dog stadig kende systemets IP, men med dette værktøj. Der er to versioner af det, den standard, der følger med de fleste Unixes (Alexey Kuznetsov “s) er den version, der kun kan håndtere IP-adresser. anden version (Thomas Habets “) kan angiveligt forespørge ved hjælp af MAC-adresser.
$ 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
fungerer på samme måde som ping
undtagen i stedet for at sende ICMP-pakker, sender den ARP-pakker.
At få et system ” s IP ved hjælp af kun MAC
Her er et par metoder til at foretage den omvendte opslag af MAC til IP.
-
nmap
$ nmap -sP 192.168.1.0/24
Se derefter i din arp-cache efter den tilsvarende maskine
arp -an
. -
fping
$ fping -a -g 192.168.1.0/24 -c 1
Se så i din arp-cache, som ovenfor.
-
ping
$ ping -b -c1 192.168.1.255
Se derefter i din arp-cache, som ovenfor.
-
nbtscan (kun Windows er vært)
$ 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
Kommentarer
Svar
Du kan ikke pinge et normalt NIC, fordi NIC alene ikke sender nogen svar.
Kun en kørende computer kan sende svar
Normale netværksinterfacekort sender ikke svar alene. De har altid brug for en kørende software på computeren for at gøre det.
Når computerens CPU er slukket, er der ingen kørende software, der kan sende et svar til et ping.
Wake-on-LAN er ensrettet
Wake-on-LAN tillader computeren at lade netværkskortet delvist tændes for at modtage Ethernet rammer og se efter den magiske vækningssekvens i dem, men NIC sender stadig ikke noget svar. Wake-on-LAN er strengt ensrettet. Der er ingen svar sendt.
Undtagelser
Der er visse specielle NICer, der kan sende svar alene som f.eks. dem, der implementerer en komplet TCP-håndtryksaflastning .
Kommentarer
- +1 – dette er det eneste svar, der virkelig adresserer OP ‘ s spørgsmål. ” Wake-on-LAN er ensrettet “.
Svar
ether-wake
kommandoen fungerer efter mac-adresse, så helt sikkert behøver du (a) ikke en IP-adresse og (b) kan sende kommandoen uden skade (hvis den allerede er vågen, har den ingen indflydelse at vække?)
Du kan se listen over din eksisterende arp-cache ved at bruge arp -an
og grepping for din MAC for at få IP-adressen til målværten. Men fordi arp er en cache, er den muligvis blevet “udløbet” af cachen (og stadig være “vågen”). Du bliver muligvis nødt til at bruge en brute force-metode til at finde IPens, såsom:
sudo nmap -sP 192.168.2.0/24 | less
(og derefter kigge efter 00: 0c: 0d: ef: 02: 03) – forudsat at firewalls og andre sådanne ting ikke kommer i vejen!
Kommentarer
- Jeg don ‘ t ønsker at vække maskinen lige nu. Men jeg vil sikre, at netværkskortet kan modtage mine meddelelser, så når jeg går uden for stedet og tænder maskinen via en WOL-pakke, ved jeg, at den tænder. Det er ‘, hvorfor jeg vil pinge med IP eller MAC og ikke vække det.
- Sovemaskiner reagerer ikke på ping. Hvis maskinen er tændt, og du pinger med IP (og værten svarer), placerer den en post i arp-cachen. Hvis posten derinde matcher MAC-adressen på værten, er der en rimelig chance for, at den fungerer (spærring af andre netværksfirewalls, routere og andre fysiske problemer, der kan få
ether-wake
til ikke nå det). Jeg ville faktisk få adgang til en anden vært på stedet, sætte målmaskinen i dvale og forsøgeether-wake
. Af karakteren af hvordan WOL fungerer, skal anmodningen alligevel sendes på det samme undernet som værten - @DravSloan Bonjour Proxy tilgængelig på f.eks. Apples Time Capsule er en ret genial måde at håndtere dette problem på. Maskinen sover, men routeren reagerer på det og vækker det kun, når proxyen ‘ ikke kan håndtere det længere.
- Don ‘ ikke stole på WOL uden at have testet den først. I stedet får du et IPMI-kort.
Svar
Min ansøgning var en server, der RSYNCede ind i en arbejdsstation til få arbejdsstationens dokumentmappe … men arbejdsstationen havde ikke en garanteret IP-adresse, men havde en kendt MAC-adresse (IP-adresse blev udført af DHCP). Denne kode bruger KUN 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
Svar
Her er et simpelt script til ping via mac-adresse. Gem bare og kør f.eks.
macping aa:bb:cc:dd:ee:ff
Du kan også kæde resultatet for at gøre andre ting betinget, fx:
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;
Svar
Dette er ikke afhængig af forskellige versioner af arping eller på komplekse bash-scripts:
ping $(arp-scan --localnet | grep 80:1f:02:fa:90:b7 | awk " { printf $1 } ")
Jeg har brugt arp-scan i stedet for arp, da det ser ud til at køre meget hurtigere.
arping
kan tage en MAC-adresse som parameter:arping -c 5 38:e7:d8:63:5e:a6
arping
til en MAC-adresse: Ja, der er to implementeringer af arping 1. fra Linux iputils 2. arping af Thomas Habets . — Kun implementeringen af 2. kan pinge en MAC-adresse, men sådan en ping er meget vanskelig: Den pingede maskine skal stadig have konfigureret TCP / IP (mindst en IP-adresse), og den skal være i stand til at svare på et ping til en udsendt IP-adresse.