MAC을 통해 NIC를 ping 할 수 있습니까


28

데비안 컴퓨터에 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 메시지를 보냅니다.

답변:


23

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
    

3
arping매개 변수로 MAC 주소를 사용할 수 있습니다.arping -c 5 38:e7:d8:63:5e:a6

@MichaelMrozek-누군가 기본적으로 내 답변을 의견으로 게시하고 2 버전의 Arping에 대해 말한 것을 읽지 않은 후에 그것을했습니다. 다른 답변은 삭제 된 것으로 보이므로 대담한 좌절을 가져 주셔서 감사합니다.
slm

도와 주셔서 감사합니다. 이것을 해결 된 것으로 표시합니다. BIOS 설정에서 WOL 옵션을 찾을 수 없습니다. 이것은 내 추측입니다 : BIOS에는 WOL이 켜져 있지 않지만 NIC는 켜져 있습니다. 따라서 NIC는 첫 번째 WOL 패킷에서 깨어 났으며 BIOS에 메시지를 보내고있었습니다. 그러나 BIOS에서 켜지지 않았으므로 BIOS에서 아무 작업도 수행하지 않았습니다. 이 순간부터 NIC는 깨어 난 이후 핑에 응답했지만 컴퓨터는 그렇지 않았습니다. 그래서 빠른 질문 : BIOS가 WOL을 끄고 NIC를 동시에 켜 둘 수 있습니까?
Alastor Moody

1
@AlastorMoody-NIC의 WOL이 켜진 상태에서 BIOS WOL을 끌 수 있다고 말하고 싶습니다. 그러나 BIOS가 WOL을 지원하지 않으면 NIC가 사용하더라도이를 사용할 수 있다고 생각하지 않습니다. WOL의 wikipedia 기사 ( en.wikipedia.org/wiki/Wake-on-LAN)를 참조하십시오 . "매직 패킷 문제 해결"섹션에서 나와 같은 내용을 말합니다.
slm

@niervol : arpingMAC 주소로 : 네, 두 가지 구현이 있습니다 arping 1. 리눅스에서 iputils 2. 토마스 Habets에 의해 arping은 . --- 2. 구현 만 MAC 주소를 핑할 수 있지만 이러한 핑은 매우 까다 롭습니다. 핑된 시스템에는 여전히 TCP / IP가 구성되어 있어야하고 (최소한 IP 주소) 핑에 응답 할 수 있어야합니다. 브로드 캐스트 IP 주소
pabouk

12

NIC만으로는 응답을 보내지 않으므로 일반 NIC를 ping 할 수 없습니다.

실행중인 컴퓨터 만 회신을 보낼 수 있습니다

일반적인 네트워크 인터페이스 카드는 스스로 답장을 보내지 않습니다. 그렇게하려면 항상 컴퓨터에서 실행중인 소프트웨어가 필요합니다.

컴퓨터의 CPU 전원이 꺼지면 핑에 대한 응답을 보내는 실행중인 소프트웨어가 없습니다.

Wake-on-LAN은 단방향입니다

Wake-on-LAN을 사용하면 컴퓨터에서 NIC의 전원 만 켜서 이더넷 프레임을 수신하고 마법의 웨이크 업 순서를 찾을 수 있지만 NIC는 여전히 응답을 보내지 않습니다. Wake-on-LAN은 단방향입니다. 전송 된 응답이 없습니다.

예외

완전한 TCP 핸드 셰이크 오프로드를 구현하는 것과 같이 자체적으로 회신을 보낼 수있는 특정 NIC가 있습니다 .


1
+1 — 이것은 OP의 질문을 진정으로 해결하는 유일한 답변입니다. "Wake-on-LAN은 단방향"입니다.
Celada

5

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을 찾으십시오)-제공된 방화벽과 다른 것들이 방해가되지 않습니다!


지금 기계를 깨우고 싶지 않습니다. 그러나 오프 사이트로 이동하여 WOL 패킷을 통해 시스템을 켤 때 NIC가 메시지를 수신 할 수 있도록 NIC가 메시지를 수신 할 수 있도록하고 싶습니다. 그렇기 때문에 IP 또는 MAC으로 핑을 실행하고 깨우지 않습니다.
Alastor Moody

2
잠자는 기계는 핑에 응답하지 않습니다. 컴퓨터가 켜져 있고 IP (및 호스트가 응답)로 핑 (Ping)하면 arp 캐시에 항목이 배치됩니다. 해당 항목이 호스트의 MAC 주소와 일치하면 다른 네트워크 방화벽, 라우터 및 기타 물리적 문제가 발생하여 연결 ether-wake되지 않을 가능성이 있습니다 . 실제로 다른 호스트에 온 사이트로 접근하여 대상 머신을 절전 모드로 전환하고를 시도합니다 ether-wake. WOL의 작동 방식의 특성상, 요청이 어쨌든 호스트와 동일한 서브넷에 전송해야합니다
Drav 슬로안

2
@DravSloan Bonjour 프록시 (예 : Apples Time Capsule)는이 문제를 처리하는 매우 독창적 인 방법입니다. 머신은 휴면 상태이지만 라우터가 응답하여 프록시가 더 이상 처리 할 수없는 경우에만 활성화합니다.
Thorbjørn Ravn Andersen

먼저 테스트하지 않고 WOL에 의존하지 마십시오. 이 경우 IPMI 카드를 구입하십시오.
sjas

0

내 응용 프로그램은 워크 스테이션의 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

0

다음은 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;

0

이것은 다른 버전의 arping이나 복잡한 bash 스크립트에 의존하지 않습니다.

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

훨씬 빨리 실행되는 것처럼 보이기 때문에 arp 대신 arp-scan을 사용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.