Kan man pinga ett NIC med MAC

Jag har ett NIC-kort på en Debian-maskin någonstans. Maskinen är avstängd, men jag måste veta om NIC-kortet är påslaget så att jag kan skicka ett magiskt paket för uppvakning senare (från en annan Debian-maskin) för att väcka det. Jag har kortets MAC-adress. Finns det något sätt jag kan pinga Ethernet-kortet av MAC för att se om det är på?

Jag försökte skapa en ARP-post:

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

Det fungerade inte, eftersom NIC-kortet inte har den här IP-adressen. Så NIC-kortet skulle få ping-begäran men skulle inte svara på det. Finns det något sätt att kringgå det?

I använder etherwake-paketet för att skicka ett wake-on-lan-meddelande.

Svar

Du kan ha bättre tur med verktyget arping istället. Verktyget ping fungerar på lager 3-nivån i OSI-modellen , medan arping fungerar i lager 2.

Du behöver fortfarande känna till systemets IP men med det här verktyget. Det finns två versioner av det, den standard som ingår i de flesta Unixes (Alexey Kuznetsov ”s) är den version som bara kan hantera IP-adresser. den andra versionen (Thomas Habets ”) kan förmodligen fråga med 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 fungerar på samma sätt som ping utom i stället för att skicka ICMP-paket skickar det ARP-paket.

Få ett system ” s IP med bara MAC

Här är några metoder för att göra omvänd sökning av MAC till IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Leta sedan efter i din arp-cache efter motsvarande maskin arp -an.

  2. fping

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

    Titta sedan i din arp-cache, samma som ovan.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Titta sedan i din arp-cache, samma som ovan.

  4. nbtscan (endast Windows-värdar)

    $ 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-adress som parameter: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Jag gjorde det efter att någon i princip hade lagt upp mitt svar som en kommentar och inte hade ’ inte läst vad jag sa om två versioner av arping. Det andra svaret ser ut att ha tagits bort så tack för att du tog ut min djärva frustration.
  • Tack för hjälpen. Markerar detta som löst. Vi kunde inte ’ inte hitta ett WOL-alternativ i BIOS-installationen. Det här är min gissning: BIOS hade inte WOL påslagen, men NIC gjorde det. Så NIC vaknade upp på det första WOL-paketet och skickade ett meddelande till BIOS. Men eftersom det inte var påslaget i BIOS gjorde BIOS inte något. Från och med nu svarade NIC på ping eftersom det var vaken, men maskinen inte. Så snabb fråga: Är det möjligt för BIOS att ha WOL avstängt och NIC att ha den påslagen samtidigt?
  • @AlastorMoody – Jag skulle säga att du ’ har antagligen tillåtit att stänga av BIOS WOL w / NIC ’ s WOL påslagen. Men om din BIOS inte stöder ’ t stöder WOL, tror jag inte ’ t tror att du ’ Jag kommer att kunna använda det även om NIC gör det. Se wikipedia-artikeln på WOL: en.wikipedia.org/wiki/Wake-on-LAN . Säger samma sak som jag i ” felsökning av magiska paket ”.
  • @niervol: arping till en MAC-adress: Ja, det finns två implementeringar av arping 1. från Linux iputils 2. arping av Thomas Habets . — Endast implementeringen 2. kan pinga en MAC-adress men en sådan ping är väldigt knepig: Den pingade maskinen måste fortfarande ha TCP / IP konfigurerad (åtminstone en IP-adress) och den måste vara kan svara på ett ping till en IP-adress för sändningar.

Svar

Du kan inte pinga en vanlig nätverkskort eftersom NIC ensam inte skickar några svar.

Endast en löpande dator kan skicka svar

Normala nätverksgränssnittskort skickar inga svar ensamma. De behöver alltid en löpande programvara på datorn för att göra det.

När datorns CPU stängs av finns det ingen programvara som kan skicka ett svar till en ping.

Wake-on-LAN är enkelriktad

Wake-on-LAN gör att datorn bara låter nätverkskortet vara påslaget för att ta emot Ethernet-ramar och leta efter den magiska väckningssekvensen i dem men NIC skickar fortfarande inte något svar. Wake-on-LAN är strikt enkelriktad. Det finns inga svar skickade.

Undantag

Det finns vissa speciella nätverkskort som kan skicka svar själva som till exempel sådana som implementerar en fullständig TCP-handskakningsavlastning .

Kommentarer

  • +1 – detta är det enda svaret som verkligen adresserar OP ’ s fråga. ” Wake-on-LAN är enkelriktad ”.

Svar

ether-wake -kommandot fungerar med mac-adress, så säkert behöver du (a) inte en IP-adress och (b) kan skicka kommandot utan skada (om det redan är vaken, har det ingen påverkan att väcka det?)

Du kan se listan över din befintliga arp-cache genom att använda arp -an och grepping för din MAC för att få målvärdens IP. Eftersom arp är en cache kan den dock ha ”time-out” från cachen (och fortfarande vara ”vaken”). Du kan då behöva använda en brute force-metod för att hitta IP: s, såsom:

 sudo nmap -sP 192.168.2.0/24 | less 

(och leta sedan efter 00: 0c: 0d: ef: 02: 03) – förutsatt att brandväggar och andra sådana saker inte kommer i vägen!

Kommentarer

  • Jag don ’ t vill väcka maskinen just nu. Men jag vill se till att nätverkskortet kan ta emot mina meddelanden så att när jag går utanför anläggningen och slår på maskinen via ett WOL-paket vet jag att den kommer att sättas på. Det är ’ varför jag vill pinga med IP eller MAC och inte väcka det.
  • Sovmaskiner svarar inte på ping. Om maskinen är påslagen och du pingar med IP (och värden svarar) kommer den att lägga in en post i arp-cachen. Om posten där matchar värdens MAC-adress finns det en rimlig chans att den kommer att fungera (spärra andra nätverksbrandväggar, routrar och andra fysiska problem som kan orsaka att ether-wake inte nå det). Jag skulle faktiskt få tillgång till en annan värd på plats, sätta målmaskinen i viloläge och försöka ether-wake. Av typen WOL fungerar måste förfrågan skickas i samma undernät som värden ändå
  • @DravSloan Bonjour Proxy tillgänglig på t.ex. Apples Time Capsule är ett ganska genialt sätt att hantera detta problem. Maskinen sover men routern svarar för det och väcker den bara när proxyn kan ’ t hantera den längre.
  • Don ’ lita inte på WOL utan att testa det först. Skaffa snarare ett IPMI-kort i så fall.

Svar

Min applikation var en server som RSYNCing till en arbetsstation för att hämta arbetsstationens dokumentkatalog … men arbetsstationen hade ingen garanterad IP-adress men hade en känd MAC-adress (IP-adressen gjordes av DHCP). den här koden använder ENDAST 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

Här är ett enkelt skript att pinga via mac-adress. Spara bara och kör t.ex. macping aa:bb:cc:dd:ee:ff

Du kan också kedja resultatet för att villkorligt göra andra saker, t.ex.:

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

Detta förlitar sig inte på olika versioner av arping eller på komplexa bash-skript:

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

Jag har använt arp-scan snarare än arp eftersom det verkar springa mycket snabbare.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *