Van valahol egy NIC-kártya egy Debian-gépen. A gép ki van kapcsolva, de tudnom kell, hogy be van-e kapcsolva a NIC-kártya, hogy később (egy másik Debian-gépről) küldhessek egy WAN-on-lan mágikus csomagot annak felébresztésére. Megvan a kártya MAC-címe. Van valamilyen módja annak, hogy pingeljem az Ethernet kártyát a MAC segítségével, hogy lássam, be van-e kapcsolva?
Megpróbáltam létrehozni egy ARP bejegyzést:
arp -s 192.168.2.2 00-0c-0d-ef-02-03 ping 192.168.2.2
Ez nem működött, mivel a NIC-kártya nem rendelkezik ezzel az ip-címmel. Tehát a NIC-kártya megkapja a ping kérést, de nem válaszol rá. Van erre megoldás?
I az etherwake csomagot használom az ébresztés-on-lan üzenet küldésére.
Válasz
Lehet, hogy nagyobb szerencsével jár az eszköz használata arping
. A ping
eszköz az OSI modell 3. rétegének szintjén működik , míg a arping
a 2. rétegben működik.
Ezzel az eszközzel azonban még mindig ismernie kell a rendszer IP-jét. A ez, a legtöbb Unixhoz (Alekszej Kuznyecov) mellékelt szabvány az a verzió, amely csak IP-címekkel képes foglalkozni. A másik verzió (Thomas Habets “) állítólag MAC-címek segítségével tud lekérdezni.
$ 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)
A arping
hasonlóan működik, mint a ping
, kivéve, hogy ICMP csomagok küldése helyett ARP csomagokat küld.
Rendszer beszerzése ” s IP csak a MAC használatával
Íme néhány módszer a MAC IP-hez való visszakereséséhez.
-
nmap
$ nmap -sP 192.168.1.0/24
Ezután keresse meg az arp gyorsítótárában a megfelelő gépet
arp -an
. -
fping
$ fping -a -g 192.168.1.0/24 -c 1
Ezután keresse meg az ARP gyorsítótárát, a fentiekkel megegyező módon.
-
ping
$ ping -b -c1 192.168.1.255
Ezután keresse meg az arp gyorsítótárát, a fentiekkel megegyező módon.
-
nbtscan (csak a Windows gazdagépei)
$ 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
Megjegyzések
Válasz
Nem lehet pingelni egy normál hálózati kártyát, mert a hálózati kártya önmagában nem küld válaszokat.
Csak egy futó számítógép képes válaszokat küldeni
A normál hálózati interfészkártyák önmagukban nem küldenek válaszokat. Ehhez mindig szükségük van egy futó szoftverre a számítógépen.
Ha a számítógép CPU-ja kikapcsol, akkor nincs olyan futó szoftver, amely választ adna egy pingre.
A Wake-on-LAN egyirányú
A Wake-on-LAN lehetővé teszi a számítógép számára, hogy csak a hálózati kártyát kapcsolja be a fogadáshoz Ethernet keretek, és keresse meg a varázslatos ébresztési sorrendet, de a hálózati kártya továbbra sem küld választ. A Wake-on-LAN szigorúan egyirányú. Nincsenek válaszok.
Kivételek
Vannak olyan speciális NIC-k, amelyek maguk is elküldhetik a válaszokat, például olyanok, amelyek egy teljes TCP kézfogás-kitöltést .
megjegyzések
- +1 – ez az egyetlen válasz, amely valóban foglalkozik az OP ‘ s kérdés. ” A Wake-on-LAN egyirányú “.
Válasz
A ether-wake
parancs mac címek szerint fog működni, így biztosan (a) nem lesz szüksége IP-címre, és (b) sérülés nélkül elküldheti a parancsot (ha már ébren van, akkor az ébresztésnek nincs hatása?)
A arp -an
, és a MAC-ra kapaszkodva megkapja a célállomás IP-jét. Mivel azonban az arp gyorsítótár, előfordulhat, hogy “időzített” a gyorsítótárból (és még mindig “ébren van”). Ezután lehet, hogy nyers erő módszerrel kell megkeresnie annak IP-címét, például:
sudo nmap -sP 192.168.2.0/24 | less
(majd keresse meg a 00: 0c: 0d: ef: 02: 03) – feltéve, hogy a tűzfalak és egyéb hasonló dolgok nem akadályozhatók!
Hozzászólások
- Nem ‘ nem akarja most felébreszteni a gépet. De szeretném biztosítani, hogy a hálózati kártya meg tudja fogadni az üzeneteimet, hogy amikor elmegyek a helyszínről, és bekapcsolom a gépet egy WOL csomagon keresztül, tudom, hogy bekapcsol. ‘ ezért szeretnék IP vagy MAC alapján pingelni, és nem ébreszteni fel.
- Az alvó gépek nem reagálnak a pingelésre. Ha a gép be van kapcsolva, és az IP alapján pingel (és a gazdagép újrakezd), akkor egy bejegyzést tesz az arp gyorsítótárba. Ha az ott található bejegyzés megegyezik a gazdagép MAC-címével, akkor ésszerű az esélye annak működésére (más hálózati tűzfalak, útválasztók és egyéb fizikai problémák letiltása, amelyek miatt a
ether-wake
nem érje el). Valójában hozzáférnék egy másik gazdagéphez a helyszínen, elaludnám a célgépet, és megpróbálnám aether-wake
-t. A WOL működésének természeténél fogva a kérést mindenképpen ugyanazon az alhálózaton kell elküldeni, mint a gazdagép - @DravSloan a Bonjour Proxy elérhető pl. Az Alma Időkapszula meglehetősen ötletes módszer ennek a problémának a kezelésére. A gép alszik, de az útválasztó válaszol érte, és csak akkor ébreszti fel, ha a proxy már ‘ nem tudja kezelni.
- Ne ‘ ne támaszkodjon a WOL-ra anélkül, hogy először tesztelné. Inkább szerezzen be egy IPMI-kártyát ebben az esetben.
Válasz
Az alkalmazásom egy szerver volt, amely RSYNC-be lépett munkaállomásra a szerezze be a munkaállomás Dokumentumkönyvtárát … de a munkaállomásnak nem volt garantált IP címe, de ismert MAC címe volt (az IP címet a DHCP végezte). Ez a kód CSAK pinget használ.
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
Válasz
Itt van egy egyszerű szkript, amellyel pingelni lehet mac címen. Csak mentse és futtassa pl.
macping aa:bb:cc:dd:ee:ff
Az eredményt láncolhatja más feltételek feltételes elvégzéséhez is, például:
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;
Válasz
Ez nem támaszkodik az eltérő az arping verziói, és nem is az összetett bash szkripteken:
ping $(arp-scan --localnet | grep 80:1f:02:fa:90:b7 | awk " { printf $1 } ")
Az arp helyett inkább az arp-scan programot használtam, mivel úgy tűnik, sokkal gyorsabban fut.
arping
MAC címet vehet fel paraméterként:arping -c 5 38:e7:d8:63:5e:a6
arping
egy MAC-címre: Igen, két megvalósítási módja van az arping 1. Linuxnak iputils 2. készítette: Thomas Habets . — Csak a 2. implementáció képes pingelni egy MAC-címet, de egy ilyen pingelés nagyon trükkös: A pingelt gépnek még mindig konfigurálnia kell a TCP / IP-t (legalább egy IP-címet), és meg kell adnia képes válaszolni egy sugárzott IP-cím pingelésére.