Czy można pingować kartę sieciową z adresu MAC

Mam gdzieś kartę NIC na maszynie Debiana. Maszyna jest wyłączona, ale muszę wiedzieć, czy karta NIC jest włączona, abym mógł później wysłać magiczny pakiet Wake-on-Lan (z innej maszyny Debiana), aby ją obudzić. Mam adres MAC karty. Czy istnieje sposób, w jaki mogę wysłać ping do karty sieciowej za pomocą adresu MAC, aby sprawdzić, czy jest włączona?

Próbowałem utworzyć wpis ARP:

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

To nie zadziałało, ponieważ karta NIC nie ma tego adresu IP. Więc karta NIC otrzymałaby żądanie ping, ale nie odpowiedziałaby na nie. Czy jest jakiś sposób na obejście tego?

I używam pakietu etherwake do wysyłania wiadomości wake-on-lan.

Odpowiedź

Możesz mieć więcej szczęścia używając tego narzędzia Zamiast tego arping. Narzędzie ping działa na poziomie 3 warstwy modelu OSI , podczas gdy arping działa w warstwie 2.

Nadal musisz znać adres IP systemu, jednak z tym narzędziem. Istnieją 2 wersje to, standardowa wersja dołączona do większości Uniksów (Alexey Kuznetsov) jest wersją, która radzi sobie tylko z adresami IP. inna wersja (Thomas Habets „) przypuszczalnie może wykonywać zapytania przy użyciu adresów 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 działa podobnie do ping z tym wyjątkiem, że zamiast wysyłać pakiety ICMP, wysyła pakiety ARP.

Pobieranie systemu ” s IP używając tylko adresu MAC

Oto kilka metod odwrotnego wyszukiwania adresu MAC na IP.

  1. nmap

    $ nmap -sP 192.168.1.0/24 

    Następnie poszukaj w pamięci podręcznej arp odpowiedniej maszyny arp -an.

  2. fping

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

    Następnie zajrzyj do pamięci podręcznej arp, tak samo jak powyżej.

  3. ping

    $ ping -b -c1 192.168.1.255 

    Następnie zajrzyj do pamięci podręcznej arp, tak samo jak powyżej.

  4. nbtscan (hosty tylko dla systemu Windows)

    $ 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 

Komentarze

  • arping może przyjąć adres MAC jako parametr: arping -c 5 38:e7:d8:63:5e:a6
  • @MichaelMr ozek – Zrobiłem to po tym, jak ktoś w zasadzie zamieścił moją odpowiedź jako komentarz i nie ' nie przeczytałem tego, co powiedziałem o 2 wersjach arpingu. Wygląda na to, że druga odpowiedź została usunięta, więc dziękuję za rozładowanie moich śmiałych frustracji.
  • Dziękuję za pomoc. Oznaczanie tego jako rozwiązane. Nie mogliśmy ' znaleźć opcji WOL w konfiguracji BIOS. To jest moje przypuszczenie: BIOS nie miał włączonej funkcji WOL, ale karta sieciowa tak. Tak więc karta sieciowa budziła się po pierwszym pakiecie WOL i wysyłała wiadomość do BIOS-u. Ale ponieważ nie został włączony w BIOS-ie, BIOS nic nie zrobił. Od tego momentu karta sieciowa odpowiadała na ping, ponieważ była aktywna, ale maszyna nie. Więc szybkie pytanie: czy możliwe jest, aby w BIOS-ie było wyłączone WOL, a karta NIC była włączona w tym samym czasie?
  • @AlastorMoody – powiedziałbym, że ' prawdopodobnie można wyłączyć BIOS WOL z włączoną kartą sieciową ' s WOL. Jeśli jednak system BIOS nie ' nie obsługuje WOL, to nie ' nie sądzę, że ' Będę mógł z niego korzystać, nawet jeśli robi to karta sieciowa. Zobacz artykuł Wikipedii na temat WOL: en.wikipedia.org/wiki/Wake-on-LAN . Mówi to samo co ja w sekcji ” rozwiązywania problemów z magicznymi pakietami „.
  • @niervol: arping na adres MAC: Tak, istnieją dwie implementacje arping 1. z Linuksa iputils 2. arping autorstwa Thomasa Habetsa . — Tylko implementacja 2. może pingować adres MAC, ale taki ping jest bardzo trudny: pingowana maszyna nadal musi mieć skonfigurowany protokół TCP / IP (przynajmniej adres IP) i musi być w stanie odpowiedzieć na ping do rozgłoszeniowego adresu IP.

Odpowiedź

Nie możesz pingować zwykłej karty sieciowej, ponieważ sama karta sieciowa nie wysyła żadnych odpowiedzi.

Tylko uruchomiony komputer może wysyłać odpowiedzi

Zwykłe karty sieciowe same nie wysyłają odpowiedzi. Zawsze potrzebują do tego działającego oprogramowania na komputerze.

Gdy procesor komputera jest wyłączony, nie ma uruchomionego oprogramowania, które wysłałoby odpowiedź na ping.

Wake-on-LAN jest jednokierunkowy

Wake-on-LAN pozwala komputerowi na częściowe włączenie karty sieciowej w celu odbioru Ramki Ethernet i poszukaj w nich magicznej sekwencji budzenia, ale karta sieciowa nadal nie wyśle żadnej odpowiedzi. Funkcja Wake-on-LAN jest ściśle jednokierunkowa. Brak wysłanych odpowiedzi.

Wyjątki

Istnieją specjalne karty sieciowe, które mogą samodzielnie wysyłać odpowiedzi, na przykład implementujące kompletne odciążanie uzgadniania TCP .

Komentarze

  • +1 – to jedyna odpowiedź, która naprawdę odnosi się do OP ' pytanie. ” Wake-on-LAN jest jednokierunkowy „.

Odpowiedź

Polecenie ether-wake będzie działać na adresach mac, więc z pewnością (a) nie będziesz potrzebować adresu IP oraz (b) może wysłać polecenie bez szkody (jeśli jest już obudzona, budzenie nie będzie miało żadnego wpływu?)

Możesz zobaczyć listę istniejącej pamięci podręcznej arp, używając arp -an i grepping dla twojego MAC, aby uzyskać adres IP hosta docelowego. Jednakże, ponieważ arp jest pamięcią podręczną, mógł zostać przekroczony limit czasu pamięci podręcznej (i nadal być „aktywny”). Wtedy może być konieczne użycie metody brutalnej siły, aby znaleźć adres IP, na przykład:

 sudo nmap -sP 192.168.2.0/24 | less 

(a następnie poszukaj 00: 0c: 0d: ef: 02: 03) – pod warunkiem, że zapory ogniowe i inne tego typu rzeczy nie przeszkadzają!

Komentarze

  • Nie ' nie chcę teraz obudzić komputera. Ale chcę mieć pewność, że karta sieciowa będzie mogła odbierać moje wiadomości, tak aby gdy wychodzę poza siedzibę firmy i włączam komputer za pośrednictwem pakietu WOL, wiem, że się włączy. To ' jest powodem, dla którego chcę pingować przez IP lub MAC i nie budzić go.
  • Uśpione maszyny nie odpowiadają na ping. Jeśli maszyna jest włączona i wykonujesz ping z adresu IP (a host odpowie), umieści wpis w pamięci podręcznej arp. Jeśli wpis w tym miejscu jest zgodny z adresem MAC hosta, istnieje uzasadnione prawdopodobieństwo, że zadziała (zablokowanie innych zapór sieciowych, routerów i innych problemów fizycznych, które mogą spowodować, że ether-wake nie będzie osiągnąć to). W rzeczywistości uzyskałbym dostęp do innego hosta na miejscu, uśpiłbym maszynę docelową i spróbowałbym wykonać ether-wake. Ze względu na sposób działania WOL żądanie i tak będzie musiało zostać wysłane do tej samej podsieci co host
  • @DravSloan, a serwer proxy Bonjour dostępny np. Apples Time Capsule to dość genialny sposób na rozwiązanie tego problemu. Maszyna śpi, ale router odpowiada na nią i budzi ją tylko wtedy, gdy serwer proxy nie może ' nie obsługiwać go już.
  • Nie ' nie polegaj na WOL bez uprzedniego przetestowania. W takim przypadku raczej weź kartę IPMI.

Odpowiedź

Moja aplikacja była serwerem RSYNC łączącym się ze stacją roboczą w celu pobierz katalog dokumentów stacji roboczej … ale stacja robocza nie miała gwarantowanego adresu IP, ale miała znany adres MAC (adres IP został utworzony przez DHCP). ten kod używa TYLKO polecenia 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 

Odpowiedź

Oto prosty skrypt do pingowania przez adres mac. Po prostu zapisz i uruchom np.
macping aa:bb:cc:dd:ee:ff

Możesz także połączyć wynik w łańcuch, aby warunkowo wykonać inne czynności, np .:

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; 

Odpowiedź

To nie polega na różnicach wersje arping ani na złożonych skryptach bash:

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

Używałem raczej arp-scan niż arp, ponieważ wydaje się, że działa dużo szybciej.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *