MAC을 통해 NIC를 ping 할 수 있습니까 데비안 컴퓨터에 NIC 카드가 있습니다.

데비안 컴퓨터에 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대신 도구 를 사용하는 것이 좋습니다. 이 도구 pingOSI 모델 의 계층 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)

arpingpingICMP 패킷을 보내는 대신 ARP 패킷을 보내는 것을 제외하고 는 비슷하게 작동 합니다.

MAC 만 사용하여 시스템의 IP 얻기

다음은 MAC-IP의 역방향 조회를 수행하는 몇 가지 방법입니다.

  1. nmap

    $ nmap -sP 192.168.1.0/24
    

    그런 다음 arp 캐시에서 해당 시스템을 찾으십시오 arp -an.

  2. fping

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

    그런 다음 위와 같이 arp 캐시를 살펴보십시오.

  3. $ ping -b -c1 192.168.1.255
    

    그런 다음 위와 같이 arp 캐시를 살펴보십시오.

  4. 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 -anMAC을 사용 하여 대상 호스트의 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을 사용했습니다.


답변