Bir NIC MAC tarafından ping olabilir


28

Bir yerde bir Debian makinesinde NIC kartım var. Makine kapalı, ancak NIC kartının açılıp açılmadığını bilmem gerekiyor, böylece daha sonra uyandırmak için bir lanet-üstü sihirli paket gönderebilirim (başka bir Debian makinesinden). Kartın MAC adresi var. Ethernet kartına MAC tarafından ping atıp açmadığını görmek için herhangi bir yolu var mı?

ARP girişi oluşturmayı denedim:

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

Bu işe yaramadı çünkü NIC kartında bu ip adresi yoktu. NIC kartı ping isteğini alırdı ama cevap vermedi. Bunun bir yolu var mı?

Uyandırma mesajı göndermek için etherwake paketini kullanıyorum.

Yanıtlar:


23

Bunun arpingyerine aracı kullanırken daha iyi şanslar yaşayabilirsiniz . Aracı pingtabaka 3 düzeyinde çalışır OSI modeli ise, arpingtabaka 2 ile işler.

Bununla birlikte, sistemin IP adresini bu araçla bilmeniz gerekir. Bunun 2 sürümü var, çoğu Unix'le (Standard Kuznetsov's) bulunan standart sürüm yalnızca IP adresleriyle başa çıkabilen sürüm. Diğer versiyonu (Thomas Habets') güya MAC adreslerini kullanarak sorgulayabilir.

$ 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)

arpingpingICMP paketleri göndermek yerine benzer şekilde çalışır , ARP paketleri gönderir.

Yalnızca MAC kullanarak bir sistemin IP'sini alma

İşte MAC'tan IP'ye geriye doğru arama yapmak için birkaç yöntem.

  1. nmap

    $ nmap -sP 192.168.1.0/24
    

    Ardından ilgili makine için arp önbelleğinize bakın arp -an.

  2. Fping

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

    Sonra arp önbelleğine bak, yukarıdakiyle aynı.

  3. ping

    $ ping -b -c1 192.168.1.255
    

    Sonra arp önbelleğine bak, yukarıdakiyle aynı.

  4. nbtscan (yalnızca windows ana bilgisayarları)

    $ 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
    

3
arpingbir MAC adresini parametre olarak alabilir:arping -c 5 38:e7:d8:63:5e:a6

@MichaelMrozek - Birisi temel olarak bir yorum olarak cevabımı gönderdikten ve arping hakkında 2 versiyon hakkında söylediklerimi okumamışsa bunu yaptım. Diğer cevap cesur hayal kırıklıklarımı aldığınız için çok teşekkürler.
slm

Yardım için teşekkürler. Bunu çözülmüş olarak işaretlemek. BIOS ayarlarında bir WOL seçeneği bulamadık. Bu benim tahminim: BIOS'ta WOL açık değildi, fakat NIC yaptı. Böylece NIC ilk WOL paketinde uyanıyordu ve BIOS'a bir mesaj gönderiyordu. Ancak BIOS'ta açılmadığından, BIOS hiçbir şey yapmadı. Bu andan itibaren, NIC uyanık olduğu için ping'e yanıt verdi, ancak makine değildi. Öyleyse hızlı bir soru: BIOS'un WOL'u kapatması ve NIC'in aynı anda açılması mümkün mü?
Alastor Moody

1
@AlastorMoody - BIOS WOL özelliğini NIC's WOL açıkken muhtemelen açmanıza izin verildiğini söyleyebilirim. Ancak BIOS’unuz WOL’i desteklemiyorsa, NIC’in yapmasına rağmen bunu kullanabileceğinizi sanmıyorum. WOL hakkındaki wikipedia makalesine bakınız: en.wikipedia.org/wiki/Wake-on-LAN . "Sihirli paketlerde sorun giderme" bölümündekiyle aynı şeyi söylüyor.
slm

@niervol: arpingMAC adresine: Evet, iki uygulamaları vardır Arping 1. Linux dan olarak iputils 2. Thomas Habets tarafından Arping . --- Sadece 2. uygulama bir MAC adresine ping atabilir ancak bu tür bir ping çok zordur: Pinglenmiş makinenin hala TCP / IP yapılandırılmış (en azından bir IP adresi) olması ve ping'e cevap verebilmesi gerekir bir yayın IP adresi.
pabouk

12

Normal bir NIC'ye ping gönderemezsiniz çünkü NIC tek başına herhangi bir yanıt göndermez.

Sadece çalışan bir bilgisayar cevap yazabiliyor

Normal ağ arayüz kartları kendi başlarına herhangi bir cevap göndermez. Bunu yapmak için her zaman bilgisayarda çalışan bir yazılıma ihtiyaç duyarlar.

Bilgisayarın CPU'su kapatıldığında, ping'e cevap gönderecek çalışan bir yazılım yoktur.

Yerel Ağda Uyandırma

Yerel Ağda Uyandırma , bilgisayarın yalnızca NIC'nin Ethernet çerçeveleri almaya kısmen açık olmasına izin verir ve içlerindeki sihirli uyanma dizisini arar, ancak NIC yine de bir yanıt göndermez. Yerel Ağda Uyandırma kesinlikle tek yönlüdür. Gönderilen yanıt yok.

İstisnalar

Tam bir TCP el sıkışma boşaltması uygulayanlar gibi, kendi başlarına cevaplar gönderebilecek bazı özel NIC'ler vardır .


1
+1 - Bu OP'nin sorusunu gerçekten karşılayan tek cevap. "Wake-on-LAN tek yönlüdür".
Celada

5

ether-wakeKomut yüzden mutlaka, mac adresi ile çalışacak size (a) zarar görmeden komutu gönderebilir, bir IP adresi ve (b) gerek kalmayacaktır (buna hiçbir etkisi olacak uyanma, zaten uyanık mı?)

arp -anHedef ana bilgisayarın IP'sini almak için MAC'nizi kullanarak ve grepping yaparak mevcut arp önbelleğinizin listesini görebilirsiniz . Ancak, arp bir önbellek olduğundan, önbellekten "zaman aşımına uğramış" olabilir (ve yine de 'uyanık' olabilir). Daha sonra IP'sini bulmak için kaba kuvvet yöntemi kullanmanız gerekebilir, örneğin:

 sudo nmap -sP 192.168.2.0/24 | less  

(ve sonra 00: 0c: 0d: ef: 02: 03'ü arayın) - güvenlik duvarları sağlandı ve diğer şeyler buna engel olmaz!


Şu an makineyi uyandırmak istemiyorum. Ancak NIC’in mesajlarımı alabilmesini sağlamak istiyorum, böylece saha dışına çıkıp makineyi bir WOL paketi ile açtığımda, açılacağını biliyorum. Bu yüzden IP ya da MAC ile ping atmak ve uyandırmak istemiyorum.
Alastor Moody

2
Uyku makineleri ping'e cevap vermeyecektir. Makine açılırsa ve IP'ye ping yaparsanız (ve ana bilgisayar yanıt verirse) arp önbelleğine bir girdi koyacaktır. Buradaki giriş, sunucunun MAC adresi ile eşleşiyorsa, işe yarama olasılığı oldukça yüksektir (diğer ağ güvenlik duvarlarını, yönlendiricileri ve erişmemesine neden olabilecek diğer fiziksel sorunları engeller ether-wake). Aslında yerinde başka bir konağa erişirim, hedef makineyi uyutur ve denerdim ether-wake.
WOL'un çalışma şeklinin

2
@DravSloan Örneğin Elmalar Kapsülünde mevcut olan Bonjour Proxy'si, bu problemi ele almanın oldukça ustaca bir yoludur. Makine uyur ancak yönlendirici buna yanıt verir ve yalnızca proxy artık dayanamadığında uyanır.
Thorbjørn Ravn Andersen

İlk önce test etmeden WOL'ye güvenmeyin. Aksine bu durumda bir IPMI kartı almak.
sjas

0

Uygulamam, iş istasyonunun Belge dizinini almak için bir iş istasyonuna RSYNC yapan bir sunucuydu ... ancak iş istasyonunun garantili bir IP adresi yoktu, ancak bilinen bir MAC adresi vardı (IP adresi DHCP tarafından yapıldı). Bu kod SADECE ping kullanır.

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

0

İşte mac adresi üzerinden ping yapmak için basit bir betik. Sadece kaydedin ve çalıştırın
macping aa:bb:cc:dd:ee:ff

Ayrıca, koşullu olarak başka şeyler yapmak için sonucu zincirleme zincirleme de yapabilirsiniz, örneğin:

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;

0

Bu, arping'in farklı versiyonlarına ve karmaşık bash scriptlerine dayanmaz:

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

Çok daha hızlı çalışıyor gibi göründüğü gibi arp tarama kullandım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.