
나는 최근 Tcpdump를 사용하여 "ARP, 192.168.2.3이 192.168.2.2, 길이가 28인 요청" 패킷을 스니핑했습니다.
나는 이 메시지를 재현하고 내 노트북에서 내가 결정한 IP로 ARP 요청을 보내고 싶습니다. 어떻게 해야 합니까?
전체 ARP 테이블을 강제로 새로 고치는 데에도 관심이 있습니다. 테이블을 삭제하면 테이블이 갱신된다는 것을 알고 있지만 랩톱에서만 이 작업이 정말 느리고 전체 ARP 테이블을 다시 작성하는 데 최대 1/2/5분이 걸릴 수 있습니다. 브로드캐스트된 ARP 요청을 보내 테이블을 강제로 다시 작성하는 방법이 있습니까?
최신 OS Yosemite 10.10.4가 설치된 Mac을 사용하고 있습니다.
감사합니다.
답변1
nmap
네트워크 검색을 위한 범용 도구이며 arp 검색에만 사용할 수 있습니다.
nmap -PR 10.0.1.0/24 -sn
포트 스캐닝을 비활성화 -sn
하여 arp 요청만 수행하며 -PR
arp 스캔입니다.
답변2
arping
사용자 지정 ARP 요청을 보낼 수 있는 오픈 소스 도구가 있습니다 . Homebrew 또는 MacPorts와 같이 즐겨 사용하는 OS X 오픈 소스 패키지 관리자에서 얻을 수 있습니다.
ARP 요청은 일반적으로 브로드캐스트됩니다(어느 MAC 주소로 보내야 할지 모르기 때문입니다. 그렇지 않으면 보낼 필요가 없습니다). 그러나 그들은 그렇지 않습니다와일드카드; 즉, 네트워크의 모든 호스트에게 ARP 응답을 보내도록 요청하는 단일 요청을 보낼 수 없습니다. 프로토콜은 대상 IP 주소 대신 와일드카드를 지정하는 방법을 제공하지 않습니다.
답변3
ARP 패킷은 요청 시 OS에 의해 전송됩니다. 기본적으로 동일한 서브넷의 다른 IP 주소와 통신해야 하고 해당 호스트의 MAC 주소를 아직 모르는 경우 ARP 요청을 보냅니다. 즉, 테이블을 재구축하는 것은 실제로 잘 정의된 프로세스가 아니라는 것을 의미합니다. 컴퓨터가 처음으로 호스트와 통신을 시도하기 전까지는 다른 호스트가 무엇인지 실제로 알 수 없기 때문입니다.
현재 테이블에 있는 IP 주소에 대한 항목을 새로 고치는 것은 그리 어렵지 않습니다. 현재 항목의 목록을 만들고 sudo arp -da
모든 현재 항목을 삭제하는 데 사용한 다음 ping
OS가 삭제된 각 항목을 다시 ARP하도록 하는 것과 같은 것을 사용하십시오.
ip_addresses=$(arp -an | grep -Ev '\(incomplete\)|ff:ff:ff:ff:ff:ff'| sed -n 's/? (\([0-9.]*\)) at .*$/\1/p')
sudo arp -da
for ip in $ip_addresses; do ping -c1 -t1 $ip & disown; done &>/dev/null
ping
마지막 명령은 백그라운드에서 모든 s를 실행하므로 거의 모두 한 번에 실행되며 테이블이 매우 빠르게 재구축되어야 합니다.
단일 항목만 삭제하고 다시 ARP하려면 다음을 수행하십시오.
sudo arp -d 10.0.0.1
ping -c1 -t1 10.0.0.1