Kan man pinge et NIC av MAC

Jeg har et NIC-kort på en Debian-maskin et sted. Maskinen er slått av, men jeg må vite om NIC-kortet er slått på slik at jeg senere kan sende en wake-on-lan-magisk pakke (fra en annen Debian-maskin) for å vekke den. Jeg har MAC-adressen til kortet. Er det noen måte jeg kan pinge ethernet-kortet av MAC for å se om det er på?

Jeg prøvde å lage en ARP-oppføring:

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

Det fungerte ikke, siden NIC-kortet ikke har denne ip-adressen. Så NIC-kortet ville motta ping-forespørselen, men ville ikke svare på det. Er det noen vei rundt dette?

I bruker etherwake-pakken til å sende en wake-on-lan-melding.

Svar

Du kan ha bedre lykke med verktøyet arping i stedet. Verktøyet ping fungerer på lag 3-nivå i OSI-modellen , mens arping fungerer i lag 2.

Du trenger fortsatt å vite IP-en til systemet, men med dette verktøyet. Det er to versjoner av det, den standard som følger med de fleste Unixes (Alexey Kuznetsov «s) er versjonen som bare kan håndtere IP-adresser. den andre versjonen (Thomas Habets «) kan angivelig spørre ved hjelp av 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åte som ping bortsett fra i stedet for å sende ICMP-pakker, sender den ARP-pakker.

Få et system » s IP bruker bare MAC

Her er et par metoder for å gjøre omvendt oppslag av MAC til IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Se deretter i arp-cachen din for den tilsvarende maskinen arp -an.

  2. fping

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

    Så se i arp-cachen din, samme som ovenfor.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Se deretter i arp-cachen din, samme som ovenfor.

  4. nbtscan (bare Windows er verter)

    $ 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

  • arping kan ta en MAC-adresse som parameter: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Jeg gjorde det etter at noen i utgangspunktet hadde lagt ut svaret mitt som en kommentar og ikke hadde ‘ ikke lest hva jeg sa om to versjoner av arping. Det andre svaret ser ut til å være slettet, så takk for at du tok ut mine dristige frustrasjoner.
  • Takk for hjelpen. Merker dette som løst. Vi kunne ikke ‘ ikke finne et WOL-alternativ i BIOS-oppsettet. Dette er min gjetning: BIOS hadde ikke WOL slått på, men NIC gjorde det. Så NIC våknet opp på den første WOL-pakken, og sendte en melding til BIOS. Men siden den ikke ble slått på i BIOS, gjorde BIOS ikke noe. Fra dette øyeblikket svarte NIC på ping siden den var våken, men maskinen ikke. Så raskt spørsmål: Er det mulig for BIOS å ha WOL slått av og NIC å ha den på samtidig?
  • @AlastorMoody – Jeg vil si at du ‘ har sannsynligvis tillatt å slå BIOS WOL av w / NIC ‘ s WOL slått på. Men hvis BIOS ikke støtter ‘ t WOL, så tror jeg ikke ‘ t tror du ‘ Jeg kan gjøre bruk av det selv om nettverkskortet gjør det. Se wikipedia-artikkelen på WOL: en.wikipedia.org/wiki/Wake-on-LAN . Sier det samme som jeg i » feilsøking av magiske pakker » -seksjonen.
  • @niervol: arping til en MAC-adresse: Ja, det er to implementeringer av arping 1. fra Linux iputils 2. arping av Thomas Habets . — Bare implementeringen av 2. kan pinge en MAC-adresse, men en slik ping er veldig vanskelig: Den pingede maskinen må fortsatt ha TCP / IP konfigurert (i det minste en IP-adresse), og den må være i stand til å svare på et ping til en kringkastet IP-adresse.

Svar

Du kan ikke pinge et normalt nettverk fordi NIC alene ikke sender noen svar.

Bare en datamaskin som kjører kan sende svar

Vanlige nettverksgrensesnittkort sender ikke svar alene. De trenger alltid en programvare som kjører på datamaskinen for å gjøre det.

Når datamaskinens CPU er slått av, er det ingen programvare som kjører som vil sende et svar til en ping.

Wake-on-LAN er ensrettet

Wake-on-LAN lar datamaskinen bare la nettverkskortet være delvis slått på for å motta Ethernet-rammer og se etter den magiske vekke-sekvensen i dem, men NIC vil fortsatt ikke sende noe svar. Wake-on-LAN er strengt ensrettet. Det er ingen svar sendt.

Unntak

Det er visse spesielle NIC-er som kan sende svar av seg selv som for eksempel de som implementerer en komplett TCP-håndtrykkavlastning .

Kommentarer

  • +1 – dette er det eneste svaret som virkelig adresserer OP ‘ s spørsmål. » Wake-on-LAN er ensrettet «.

Svar

ether-wake -kommandoen vil fungere etter mac-adresse, så sikkert (a) trenger du ikke en IP-adresse og (b) kan sende kommandoen uten skade (hvis den allerede er våken, vil den ikke våkne?)

Du kan se listen over din eksisterende arp-cache ved å bruke arp -an og grepping for din MAC for å få IP-adressen til målverten. Men fordi arp er en hurtigbuffer, kan den ha blitt «tidsavbrutt» fra hurtigbufferen (og fremdeles være «våken»). Det kan hende du må bruke en brute force-metode for å finne IP-en, for eksempel:

 sudo nmap -sP 192.168.2.0/24 | less 

(og se etter 00: 0c: 0d: ef: 02: 03) – forutsatt at brannmurer og andre slike ting ikke kommer i veien!

Kommentarer

  • Jeg don ‘ t vil vekke maskinen akkurat nå. Men jeg vil sikre at NIC kan motta meldingene mine, slik at når jeg går utenfor stedet og slår på maskinen via en WOL-pakke, vet jeg at den kommer til å slå på. Det er ‘ hvorfor jeg vil pinge med IP eller MAC og ikke vekke det.
  • Sovemaskiner vil ikke svare på ping. Hvis maskinen er slått på og du pinger etter IP (og verten svarer), vil den legge inn en oppføring i arp-cachen. Hvis oppføringen der samsvarer med MAC-adressen til verten, er det en rimelig sjanse for at den vil fungere (sperring av andre nettverksbrannmurer, rutere og andre fysiske problemer som kan føre til at ether-wake ikke nå det). Jeg ville faktisk få tilgang til en annen vert på stedet, sette maskinen i dvale og prøve ether-wake. Av karakteren til hvordan WOL fungerer, må forespørselen sendes på samme delnett som verten uansett
  • @DravSloan Bonjour Proxy tilgjengelig på f.eks. Apples Time Capsule er en ganske genial måte å håndtere dette problemet på. Maskinen sover, men ruteren reagerer på den, og vekker den bare når proxyen kan ‘ t håndtere den lenger.
  • Don ‘ ikke stole på WOL uten å ha testet den først. Skaff deg heller et IPMI-kort i så fall.

Svar

Programmet mitt var en server som RSYNCing til en arbeidsstasjon for å få arbeidsstasjonens dokumentkatalog … men arbeidsstasjonen hadde ikke en garantert IP-adresse, men hadde en kjent MAC-adresse (IP-adresse ble utført av DHCP). Denne koden bruker 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 enkelt skript å pinge via mac-adresse. Bare lagre og kjør f.eks. macping aa:bb:cc:dd:ee:ff

Du kan også kjede resultatet for å gjøre andre ting betinget, for eksempel:

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 stoler ikke på forskjellige versjoner av arping eller på komplekse bash-skript:

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

Jeg har brukt arp-scan i stedet for arp, da det ser ut til å løpe mye raskere.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *