데비안 컴퓨터에 NIC 카드가 있습니다. 머신은 꺼져 있지만 나중에 다른 데비안 머신에서 Wake-on-lan 매직 패킷을 보낼 수 있도록 NIC 카드가 켜져 있는지 알아야합니다. 카드의 MAC 주소가 있습니다. MAC을 통해 이더넷 카드를 ping하여 켜져 있는지 확인할 수있는 방법이 있습니까?
ARP 항목을 만들려고했습니다.
arp -s 192.168.2.2 00-0c-0d-ef-02-03
ping 192.168.2.2
NIC 카드에이 IP 주소가 없으므로 작동하지 않습니다. 따라서 NIC 카드는 핑 요청을 수신하지만 응답하지 않습니다. 이 주위에 어떤 방법이 있습니까?
etherwake 패키지를 사용하여 wake-on-lan 메시지를 보냅니다.
답변
arping
대신 도구 를 사용하는 것이 좋습니다. 이 도구 ping
는 OSI 모델 의 계층 3 수준 arping
에서 작동 하는 반면 계층 2에서 작동합니다.
그러나 여전히이 도구를 사용하여 시스템의 IP를 알아야합니다. 두 가지 버전이 있으며, 대부분의 Unixes (Alexey Kuznetsov)에 포함 된 표준 버전은 IP 주소 만 처리 할 수있는 버전입니다. 다른 버전 (토마스 Habets ‘)는 가정으로 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
ping
ICMP 패킷을 보내는 대신 ARP 패킷을 보내는 것을 제외하고 는 비슷하게 작동 합니다.
MAC 만 사용하여 시스템의 IP 얻기
다음은 MAC-IP의 역방향 조회를 수행하는 몇 가지 방법입니다.
-
nmap
$ nmap -sP 192.168.1.0/24
그런 다음 arp 캐시에서 해당 시스템을 찾으십시오
arp -an
. -
fping
$ fping -a -g 192.168.1.0/24 -c 1
그런 다음 위와 같이 arp 캐시를 살펴보십시오.
-
핑
$ ping -b -c1 192.168.1.255
그런 다음 위와 같이 arp 캐시를 살펴보십시오.
-
nbtscan (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
답변
NIC만으로는 응답을 보내지 않으므로 일반 NIC를 ping 할 수 없습니다.
실행중인 컴퓨터 만 회신을 보낼 수 있습니다
일반적인 네트워크 인터페이스 카드는 스스로 답장을 보내지 않습니다. 그렇게하려면 항상 컴퓨터에서 실행중인 소프트웨어가 필요합니다.
컴퓨터의 CPU 전원이 꺼지면 핑에 대한 응답을 보내는 실행중인 소프트웨어가 없습니다.
Wake-on-LAN은 단방향입니다
Wake-on-LAN을 사용하면 컴퓨터에서 NIC의 전원 만 켜서 이더넷 프레임을 수신하고 마법의 웨이크 업 순서를 찾을 수 있지만 NIC는 여전히 응답을 보내지 않습니다. Wake-on-LAN은 단방향입니다. 전송 된 응답이 없습니다.
예외
완전한 TCP 핸드 셰이크 오프로드를 구현하는 것과 같이 자체적으로 회신을 보낼 수있는 특정 NIC가 있습니다 .
답변
이 ether-wake
명령은 mac 주소로 작동하므로 반드시 (a) IP 주소가 필요하지 않으며 (b) 아무런 명령없이 명령을 보낼 수 있습니다 (이미 깨어있는 경우 깨우면 아무런 영향을 미치지 않습니까?)
arp -an
MAC을 사용 하여 대상 호스트의 IP를 얻기 위해 grepping 하여 기존 arp 캐시 목록을 볼 수 있습니다 . 그러나 arp는 캐시이기 때문에 캐시에서 “시간이 초과되었습니다”(아직 ‘깨어 있습니다’). 그런 다음 IP와 같은 무차별 대입 방법을 사용해야합니다.
sudo nmap -sP 192.168.2.0/24 | less
(그리고 00 : 0c : 0d : ef : 02 : 03을 찾으십시오)-제공된 방화벽과 다른 것들이 방해가되지 않습니다!
답변
내 응용 프로그램은 워크 스테이션의 Document 디렉토리를 얻기 위해 워크 스테이션에 RSYNCing하는 서버였습니다 …하지만 워크 스테이션에는 보장 된 IP 주소는 없지만 알려진 MAC 주소가 있습니다 (IP 주소는 DHCP에 의해 수행되었습니다). 이 코드는 핑만 사용합니다.
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
답변
다음은 mac 주소를 통해 ping하는 간단한 스크립트입니다. 그냥 저장하고 실행하십시오.
macping aa:bb:cc:dd:ee:ff
조건부로 다른 작업을 수행하기 위해 결과를 데이지 체인으로 연결할 수도 있습니다.
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;
답변
이것은 다른 버전의 arping이나 복잡한 bash 스크립트에 의존하지 않습니다.
ping $(arp-scan --localnet | grep 80:1f:02:fa:90:b7 | awk ' { printf $1 } ')
훨씬 빨리 실행되는 것처럼 보이기 때문에 arp 대신 arp-scan을 사용했습니다.