Kan men een NIC pingen via MAC

Ik heb ergens een NIC-kaart op een Debian-machine. De machine is uitgeschakeld, maar ik moet weten of de NIC-kaart is ingeschakeld, zodat ik later een wake-on-lan magisch pakket kan verzenden (vanaf een andere Debian-machine) om hem wakker te maken. Ik heb het MAC-adres van de kaart. Is er een manier waarop ik de Ethernet-kaart via MAC kan pingen om te zien of deze is ingeschakeld?

Ik heb geprobeerd een ARP-vermelding te maken:

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

Dat werkte niet, aangezien de NIC-kaart dit ip-adres niet heeft. Dus de NIC-kaart zou het ping-verzoek ontvangen, maar er niet op antwoorden. Is er een manier om dit te omzeilen?

I gebruik het etherwake-pakket om een wake-on-lan-bericht te sturen.

Answer

Misschien heb je meer geluk met het gebruik van de tool arping. De tool ping werkt op laag 3-niveau van het OSI-model , terwijl arping werkt op laag 2.

Je moet echter nog steeds het IP-adres van het systeem weten met deze tool. Er zijn 2 versies van het, de standaard versie die bij de meeste Unixen wordt geleverd (Alexey Kuznetsovs) is de versie die alleen IP-adressen kan verwerken. De andere versie (Thomas Habets “) zou zogenaamd kunnen zoeken met MAC-adressen.

$ 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 werkt op dezelfde manier als ping behalve dat het in plaats van ICMP-pakketten, ARP-pakketten verzendt.

Een systeem ophalen ” s IP met alleen de MAC

Hier zijn een aantal methoden voor het omgekeerd opzoeken van MAC naar IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Zoek dan in je arp-cache naar de corresponderende machine arp -an.

  2. fping

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

    Kijk dan in je arp-cache, hetzelfde als hierboven.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Kijk dan in je arp-cache, hetzelfde als hierboven.

  4. nbtscan (alleen 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 

Reacties

  • arping kan een MAC-adres als parameter gebruiken: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Ik deed het nadat iemand in feite mijn antwoord als een opmerking had gepost en ‘ niet had gelezen wat ik zei over twee versies van arping. Het andere antwoord lijkt te zijn verwijderd, dus bedankt voor het wegnemen van mijn brutale frustraties.
  • Bedankt voor de hulp. Dit markeren als opgelost. We konden ‘ geen WOL-optie vinden in de BIOS-setup. Dit is mijn gok: het BIOS had WOL niet ingeschakeld, maar de NIC wel. Dus de NIC werd wakker met het eerste WOL-pakket en stuurde een bericht naar het BIOS. Maar aangezien het niet was ingeschakeld in het BIOS, deed het BIOS niets. Vanaf dit moment reageerde de NIC op ping omdat hij wakker was, maar de machine niet. Zo snelle vraag: is het mogelijk dat het BIOS WOL heeft uitgeschakeld en de NIC het tegelijkertijd heeft ingeschakeld?
  • @AlastorMoody – ik zou zeggen dat je ‘ mag waarschijnlijk BIOS WOL uitschakelen met NIC ‘ s WOL ingeschakeld. Als je BIOS echter geen ‘ t WOL ondersteunt, dan denk ik niet ‘ niet dat je ‘ Ik zal er gebruik van kunnen maken, zelfs als de NIC dat doet. Zie het wikipedia-artikel over WOL: en.wikipedia.org/wiki/Wake-on-LAN . Zegt hetzelfde als ik in de ” probleemoplossing voor magische pakketten ” sectie.
  • @niervol: arping naar een MAC-adres: ja, er zijn twee implementaties van arping 1. onder Linux iputils 2. arping door Thomas Habets . — Alleen de 2. implementatie kan een MAC-adres pingen, maar zon ping is erg lastig: de gepingde machine moet nog steeds TCP / IP hebben geconfigureerd (ten minste een IP-adres) en het moet in staat om te reageren op een ping van een uitgezonden IP-adres.

Antwoord

Je kunt een normale NIC niet pingen omdat NIC alleen geen antwoorden verzendt.

Alleen een draaiende computer kan antwoorden verzenden

Normale netwerkinterfacekaarten sturen zelf geen antwoorden. Ze hebben altijd software op de computer nodig om dit te doen.

Als de CPU van de computer is uitgeschakeld, is er geen actieve software die een antwoord op een ping kan sturen.

Wake-on-LAN is unidirectioneel

Wake-on-LAN stelt de computer in staat om alleen de NIC gedeeltelijk aan te zetten om te ontvangen Ethernet-frames en zoek de magische weksequentie daarin, maar de NIC zal nog steeds geen antwoord verzenden. Wake-on-LAN is strikt unidirectioneel. Er zijn geen reacties verzonden.

Uitzonderingen

Er zijn bepaalde speciale NICs die zelf antwoorden kunnen verzenden, zoals bijvoorbeeld NICs die een volledige TCP-handshake-offload .

Reacties

  • +1 – dit is het enige antwoord dat echt het OP betreft ‘ s vraag. ” Wake-on-LAN is unidirectioneel “.

Antwoord

Het ether-wake commando zal werken per mac-adres, dus je (a) hebt zeker geen IP-adres nodig en (b) kan het commando zonder schade verzenden (als het “al wakker is, heeft het wakker worden geen impact?)

Je kunt de lijst van je bestaande arp-cache zien met arp -an en grepping voor uw MAC om het IP-adres van de doelhost te krijgen. Echter, omdat arp een cache is, kan het een “time-out” zijn geweest uit de cache (en nog steeds “wakker” zijn). Mogelijk moet u dan een brute force-methode gebruiken om het IP-adres te vinden, zoals:

 sudo nmap -sP 192.168.2.0/24 | less 

(en zoek dan naar 00: 0c: 0d: ef: 02: 03) – mits firewalls en dergelijke “niet in de weg zitten!

Reacties

  • Ik don ‘ wil de machine nu niet uit de slaapstand halen. Maar ik wil er zeker van zijn dat de NIC mijn berichten kan ontvangen, zodat wanneer ik naar een andere locatie ga en de machine aanzet via een WOL-pakket, ik weet dat het zal worden ingeschakeld. Daarom ‘ is waarom ik wil pingen via IP of MAC en het niet wakker wil maken.
  • Slapende machines reageren niet op ping. Als de machine is ingeschakeld en u pingt via IP (en de host antwoordt), wordt er een item in de arp-cache geplaatst. Als de vermelding daar overeenkomt met het MAC-adres van de host, is er een redelijke kans dat het werkt (andere netwerkfirewalls, routers en andere fysieke problemen blokkeren die ervoor kunnen zorgen dat de ether-wake niet bereik het). Ik zou daadwerkelijk toegang krijgen tot een andere host ter plaatse, de doelcomputer in slaapstand zetten en de ether-wake proberen. Door de aard van hoe WOL werkt, moet het verzoek hoe dan ook op hetzelfde subnet als de host worden verzonden.
  • @DravSloan de Bonjour-proxy die beschikbaar is op bijv. Apples Time Capsule is een vrij ingenieuze manier om met dit probleem om te gaan. De machine slaapt maar de router reageert erop, en maakt hem alleen wakker als de proxy het ‘ niet meer aankan.
  • Don ‘ vertrouw niet op WOL zonder het eerst te laten testen. Koop in dat geval liever een IPMI-kaart.

Answer

Mijn applicatie was een server die RSYNC naar een werkstation haal de documentdirectory van het werkstation op … maar het werkstation had geen gegarandeerd IP-adres, maar had wel een bekend MAC-adres (IP-adres werd gedaan door DHCP). Deze code gebruikt ALLEEN 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 

Antwoord

Hier is een eenvoudig script om te pingen via het mac-adres. Gewoon opslaan en uitvoeren, bijv.
macping aa:bb:cc:dd:ee:ff

U kunt het resultaat ook doorlussen om voorwaardelijk andere dingen te doen, bijvoorbeeld:

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; 

Antwoord

Dit is niet afhankelijk van verschillende versies van arping noch op complexe bash-scripts:

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

Ik heb arp-scan gebruikt in plaats van arp, omdat het veel sneller lijkt te werken.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *