데비안 머신 어딘가에 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 카드는 ping 요청을 수신하지만 응답하지 않습니다.이 문제를 해결할 방법이 있습니까?
I wake-on-lan 메시지를 보내기 위해 etherwake 패키지를 사용하고 있습니다.
답변
도구를 사용하는 것이 더 좋을 수 있습니다. 대신 arping
. 도구 ping
는 OSI 모델의 레이어 3 수준에서 작동합니다. 반면 arping
는 레이어 2에서 작동합니다.
하지만이 도구를 사용하려면 시스템의 IP를 알아야합니다. 대부분의 Unix (Alexey Kuznetsov “s)에 포함 된 표준 버전은 IP 주소 만 처리 할 수있는 버전입니다. 다른 버전 (Thomas 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
는 ICMP 패킷을 보내는 대신 ARP 패킷을 보내는 것을 제외하고는 ping
와 유사하게 작동합니다.
시스템 가져 오기 ” 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
$ 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
댓글
iputils 2. Thomas Habets의 Arping . — 2. 구현 만 MAC 주소를 ping 할 수 있지만 이러한 ping은 매우 까다 롭습니다. ping 된 시스템에는 여전히 TCP / IP가 구성되어 있어야하며 (최소한 IP 주소) 브로드 캐스트 IP 주소에 대한 핑에 응답 할 수 있습니다.
답변
NIC만으로는 응답을 보내지 않으므로 일반 NIC를 ping 할 수 없습니다.
실행중인 컴퓨터 만 응답을 보낼 수 있습니다.
일반 네트워크 인터페이스 카드는 자체적으로 응답을 보내지 않습니다. 그렇게하려면 항상 컴퓨터에서 실행중인 소프트웨어가 필요합니다.
컴퓨터의 CPU 전원이 꺼지면 ping에 대한 응답을 보내는 실행중인 소프트웨어가 없습니다.
Wake-on-LAN은 단방향입니다.
Wake-on-LAN 을 사용하면 컴퓨터에서 NIC의 전원 만 일부만 켜서 수신 할 수 있습니다. 이더넷 프레임에서 매직 웨이크 업 시퀀스를 찾으지만 NIC는 여전히 응답을 보내지 않습니다. Wake-on-LAN은 엄격하게 단방향입니다. 보낸 응답이 없습니다.
예외
예를 들어 완전한 TCP 핸드 셰이크 오프로드
를 구현하는 것과 같이 스스로 응답을 보낼 수있는 특정 특수 NIC가 있습니다. a>.
댓글
- +1 — 이것은 OP를 진정으로 해결하는 유일한 답변입니다. ‘의 질문입니다. ” Wake-on-LAN은 단방향 “입니다.
답변
ether-wake
명령은 mac 주소로 작동하므로 (a) IP 주소가 필요하지 않으며 (b) 명령을 손상없이 보낼 수 있습니다 (이미 깨어있는 경우 깨어있는 경우 아무런 영향이 없습니까?)
arp -an
및 대상 호스트의 IP를 얻기 위해 MAC에 대한 grepping. 그러나 arp는 캐시이기 때문에 캐시에서 “시간 초과”되었을 수 있습니다 (여전히 “깨어 있습니다”). 그런 다음 무차별 대입 방법을 사용하여 다음과 같은 IP를 찾아야 할 수 있습니다.
sudo nmap -sP 192.168.2.0/24 | less
(그런 다음 00 : 0c : 0d를 찾습니다 : ef : 02 : 03)-제공된 방화벽 및 기타 이러한 것들은 방해가되지 않습니다!
댓글
- 나는 ‘ 지금 시스템을 깨우고 싶지 않습니다. 하지만 NIC가 내 메시지를 수신 할 수 있는지 확인하여 오프 사이트로 이동하여 WOL 패킷을 통해 시스템을 켤 때 켜질 것임을 알고 싶습니다. 이것이 ‘ IP 또는 MAC으로 ping하고 깨우지 않으려는 이유입니다.
- 슬리핑 머신은 ping에 응답하지 않습니다. 머신이 켜져 있고 IP로 핑 (호스트 응답)하면 arp 캐시에 항목이 저장됩니다. 거기에있는 항목이 호스트의 MAC 주소와 일치하면 작동 할 수있는 합리적인 기회가 있습니다 (다른 네트워크 방화벽, 라우터 및 기타 물리적 문제를 제외하면
ether-wake
가 그것에 도달). 실제로 현장에서 다른 호스트에 액세스하고 대상 시스템을 절전 모드로 전환하고ether-wake
를 시도합니다. WOL 작동 방식의 특성상 요청은 어쨌든 호스트와 동일한 서브넷에서 전송되어야합니다. - @DravSloan 예를 들어 사용 가능한 Bonjour 프록시 Apples Time Capsule은이 문제를 처리하는 매우 독창적 인 방법입니다. 시스템은 절전 모드이지만 라우터는 이에 대해 응답하며 프록시가 더 이상 처리 할 수 없을 때만 ‘ 깨 웁니다.
- Don ‘ 먼저 테스트하지 않고 WOL에 의존하지 마십시오. 이 경우에는 오히려 IPMI 카드를 받으십시오.
답변
내 응용 프로그램은 워크 스테이션에 RSYNC하는 서버였습니다. 워크 스테이션의 문서 디렉토리를 가져 오지만 워크 스테이션에는 보장 된 IP 주소가 없지만 알려진 MAC 주소가 있습니다 (IP 주소는 DHCP에서 수행됨).이 코드는 ping 만 사용합니다.
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 주소를 통해 핑하는 간단한 스크립트입니다. 예를 저장하고 실행하기 만하면됩니다.
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을 사용했습니다.
arping
MAC 주소를 매개 변수로 사용할 수 있습니다.arping -c 5 38:e7:d8:63:5e:a6
arping
를 MAC 주소로 : 예, Linux에서 arping 1. 의 두 가지 구현이 있습니다. div id = “82d462c961”>