Poate cineva să pingă o NIC prin MAC

Am undeva un card NIC pe o mașină Debian. Mașina este oprită, dar trebuie să știu dacă cardul NIC este pornit, astfel încât să pot trimite mai târziu un pachet magic wake-on-lan (de la o altă mașină Debian) pentru a-l trezi. Am adresa MAC a cardului. Există vreo modalitate de a face ping pe placa Ethernet de către MAC pentru a vedea dacă este activată?

Am încercat să creez o intrare ARP:

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

Asta nu a funcționat, deoarece cardul NIC nu are această adresă IP. Deci, cardul NIC ar primi cererea de ping, dar nu i-ar răspunde. Există vreo cale în acest sens?

I folosesc pachetul etherwake pentru a trimite un mesaj wake-on-lan.

Răspunde

S-ar putea să ai mai mult noroc folosind instrumentul arping în schimb. Instrumentul ping funcționează la nivelul de nivel 3 al modelului OSI , în timp ce arping funcționează la nivelul 2.

Totuși, trebuie să cunoașteți adresa IP a sistemului cu acest instrument. Există 2 versiuni ale aceasta, cea standard inclusă în majoritatea Unixes-urilor (Alexey Kuznetsov) este versiunea care se poate ocupa doar de adrese IP. cealaltă versiune (Thomas Habets „) presupune că poate interoga folosind adrese MAC.

$ 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 funcționează similar cu ping, cu excepția cazului în care trimite pachete ICMP, trimite pachete ARP.

Obținerea unui sistem ” IP utilizând doar MAC

Iată câteva metode pentru efectuarea căutării inversă a MAC către IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Apoi căutați în cache-ul dvs. arp mașina corespunzătoare arp -an.

  2. fping

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

    Apoi, căutați în memoria cache arp, la fel ca mai sus.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Apoi, căutați în memoria cache arp, la fel ca mai sus.

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

Comentarii

  • arping poate lua o adresă MAC ca parametru: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Am făcut-o după ce cineva a postat în principiu răspunsul meu ca un comentariu și nu ‘ nu a citit ce am spus despre 2 versiuni de arping. Celălalt răspuns pare să fi fost șters, așa că mulțumesc că mi-ai scos frustrările îndrăznețe.
  • Vă mulțumim pentru ajutor. Marcând acest lucru ca rezolvat. Nu am putut ‘ să găsim o opțiune WOL în configurarea BIOS-ului. Aceasta este presupunerea mea: BIOS-ul nu a activat WOL, dar NIC-ul a făcut-o. Așadar, NIC se trezea pe primul pachet WOL și trimitea un mesaj către BIOS. Dar, deoarece nu a fost pornit în BIOS, BIOS-ul nu a făcut nimic. Din acest moment înainte, NIC a răspuns la ping, deoarece era treaz, dar mașina nu a fost. Întrebare atât de rapidă: Este posibil ca BIOS-ul să aibă oprit WOL și NIC să-l activeze în același timp?
  • @AlastorMoody – aș spune că tu ‘ probabil că este permis să dezactivați BIOS WOL w / NIC ‘ s WOL este activat. Cu toate acestea, dacă BIOS-ul nu ‘ nu acceptă WOL, atunci nu ‘ nu cred că ‘ Voi putea să-l folosesc chiar dacă NIC o face. Consultați articolul de pe Wikipedia despre WOL: en.wikipedia.org/wiki/Wake-on-LAN . Spune același lucru ca și mine în secțiunea ” de depanare a pachetelor magice „.
  • @niervol: arping la o adresă MAC: Da, există două implementări ale arping 1. din Linux iputils 2. arping de Thomas Habets . — Doar implementarea 2. poate face ping la o adresă MAC, dar un astfel de ping este foarte dificil: mașina ping trebuie să aibă în continuare configurat TCP / IP (cel puțin o adresă IP) și trebuie să fie capabil să răspundă la un ping către o adresă IP difuzată.

Răspuns

Nu puteți face ping la un NIC normal, deoarece NIC singur nu trimite niciun răspuns.

Numai un computer care rulează poate trimite răspunsuri

Cardurile de interfață de rețea normale nu trimit niciun răspuns de la sine. Ei au întotdeauna nevoie de un software care rulează pe computer pentru a face acest lucru.

Când CPU-ul computerului este oprit, atunci nu există niciun software care să trimită un răspuns la un ping.

Wake-on-LAN este unidirecțional

Wake-on-LAN permite computerului să permită doar alimentarea parțială a NIC pentru a primi Cadre Ethernet și căutați secvența de trezire magică în ele, dar NIC nu va trimite în continuare niciun răspuns. Wake-on-LAN este strict unidirecțional. Nu există răspunsuri trimise.

Excepții

Există anumite NIC-uri speciale care ar putea trimite răspunsuri de la sine, de exemplu cele care implementează o descărcare completă a strângerii de mână TCP a>.

Comentarii

  • +1 – acesta este singurul răspuns care se adresează cu adevărat OP ‘ întrebarea. ” Wake-on-LAN este unidirecțional „.

Răspuns

Comanda ether-wake va funcționa în funcție de adresa Mac, deci sigur (a) nu veți avea nevoie de o adresă IP și (b) poate trimite comanda fără daune (dacă este deja treaz, trezirea nu va avea niciun impact?)

Puteți vedea lista cache-ului dvs. arp existent utilizând arp -an și grepping pentru MAC-ul dvs. pentru a obține IP-ul gazdei țintă. Cu toate acestea, deoarece arp este un cache, este posibil să fi fost „expirat” din cache (și totuși să fie „treaz”). Poate că va trebui să utilizați o metodă de forță brută pentru a-i găsi adresa IP, cum ar fi:

 sudo nmap -sP 192.168.2.0/24 | less 

(și apoi căutați 00: 0c: 0d: ef: 02: 03) – cu condiția ca paravanele de protecție și alte astfel de lucruri să nu vă împiedice!

Comentarii

  • Nu ‘ nu doresc să trezească aparatul chiar acum. Dar vreau să mă asigur că NIC-ul îmi poate primi mesajele, astfel încât atunci când plec de pe site și pornesc aparatul printr-un pachet WOL, știu că va porni. De aceea, ‘ este motivul pentru care vreau să fac ping prin IP sau MAC și să nu-l trezesc.
  • Aparatele de dormit nu vor răspunde la ping. Dacă mașina este pornită și faceți ping după IP (și gazda răspunde), va introduce o intrare în cache-ul arp. Dacă intrarea de acolo se potrivește cu adresa MAC a gazdei, există o șansă rezonabilă ca aceasta să funcționeze (fără alte firewall-uri de rețea, routere și alte probleme fizice care ar putea cauza ether-wake ajunge la el). Aș avea de fapt acces la o altă gazdă la fața locului, aș pune mașina țintă în repaus și aș încerca ether-wake. După natura funcționării WOL, solicitarea va trebui trimisă oricum pe aceeași subrețea cu gazda
  • @DravSloan Proxy Bonjour disponibil pe de ex. Apples Time Capsule este un mod destul de ingenios de a rezolva acest proble. Aparatul doarme, dar routerul răspunde pentru el și îl trezește numai atunci când proxy-ul nu mai poate ‘ să-l mai gestioneze.
  • Nu ‘ nu se bazează pe WOL fără a fi testat mai întâi. Obțineți mai degrabă un card IPMI în acest caz.

Răspuns

Aplicația mea a fost un server RSYNCing într-o stație de lucru pentru obțineți directorul de documente al stației de lucru … dar stația de lucru nu avea o adresă IP garantată, dar avea o adresă MAC cunoscută (adresa IP a fost făcută de DHCP). Acest cod folosește DOAR 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 

Răspuns

Iată un script simplu pentru a face ping prin adresa Mac. Doar salvați și rulați de ex.
macping aa:bb:cc:dd:ee:ff

Puteți, de asemenea, să lanțați rezultatul pentru a face condiționat alte lucruri, de exemplu:

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; 

Răspuns

Acest lucru nu se bazează pe diferențe versiuni de arping și nici pe scripturi bash complexe:

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

Am folosit arp-scan mai degrabă decât arp, deoarece pare să ruleze mult mai repede.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *