리눅스에서 arp 캐시를 어떻게 지우나요?


13

양자 모두:

sudo ip -s -s neigh flush all

과:

sudo arp -d 192.168.0.102

arp 캐시를 지우는 대신 항목을 무효화하는 것처럼 보입니다 (으로 나타남 incomplete). 몇 분이 지난 후에도 ARP 캐시는 다음과 같습니다.

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.103                    (incomplete)                              eth0
192.168.0.1              ether   DE:AD:BE:EF:DE:AD   C                     eth0

(게이트웨이의 MAC이 새로 고쳐졌습니다. 괜찮습니다)

"테이블에서 모든 항목 삭제"와 같이 ARP 캐시를 실제로 지우 려면 어떻게 해야합니까? 내가 없는 내가 그들을 제거하려는 불완전한 항목을 유지하려는. 이게 가능해?

편집하다

이것은 내 시스템입니다.

» arp --version
net-tools 1.60
arp 1.88 (2001-04-04)
+I18N
AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE 
HW: (ether) +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 

» lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:        14.04
Codename:       trusty

» uname -a
Linux polyphemus.xxx-net 3.13.0-46-generic #77-Ubuntu SMP Mon Mar 2 18:23:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

3
여기서 무엇을 이루려고 노력하고 있습니까? 또는 더 명확하게, 당신은 어떤 문제를 해결하려고합니까?
EEAA

arp 테이블 항목이 부족합니까? 해당 IP를 요청하는 프로그램이있을 수 있으므로 해당 항목을 갱신하십시오. wireshark또는로 확인하십시오 tcpdump.
ott--

5
xy 문제 때문에 @MichaelMartinez . 질문은 근본적인 문제가 아니며 OP가 대신 작업해야하는 근본적인 문제가있을 수 있습니다.
Zoredache

1
이 정보가 문제가 아닌 이유는 관련이 없기 때문입니다. 깨끗한 ARP 캐시를 원합니다. 마침표. 당신은 내가 그것을 원한다는 것을 믿지 않지만 그것은 당신의 문제입니다. 나는 당신을 확신합니다 : 깨끗한 ARP 캐시를 원합니다.
dangonfast

2
여기에 ARP 캐시 메커니즘의에서 깊이 설명이있다 : stackoverflow.com/a/15511117/647991은
dangonfast

답변:


12
ip link set arp off dev eth0 ; ip link set arp on dev eth0

한 번에 모두 수행해야 ARP를 다시 켜기 전에 네트워크 연결을 끊을 수 있습니다.


2
첫 번째 명령 후에 연결을 끊는 것처럼 보이기 때문에 쉘 스크립트 나 시스템에서 수행해야합니다.
Louis

나는 한 줄에 그것을했고 그것은 효과가 있었다 : dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev. 은 sleep필요하지 않을 수도있다.
mivk

5

첫 번째 솔루션이 작동하면 "(불완전한)"에서 항목이없는 데까지 약간의 시간 (Kali 테스트에서 5-10 초)이 걸립니다.

아마도 삭제되는 도중에 일종의 과도기 상태에있을 것입니다.


저에게는 (우분투 14.04) 그렇지 않았습니다. 참가자가 불완전한 상태로 오랫동안 (영원히?) 유지됩니다. 오늘 다시 확인하겠습니다.
dangonfast

확인 됨 : 몇 분이 지난 후에도 항목이 여전히 완료되지 않은 상태 (arp 1.88, net-tools 1.60)
dangonfast

그렇다면 귀하의 문제는 분명히 비표준 행동이며, 아마도 우분투 14.04와 관련이 있습니다. Linux에서 올바른 방법은 효과가 없습니다. 곧 답변을 찾으시기 바랍니다. 원하는 경우이 항목을 삭제할 수 있습니다.
armani

1
아니요, 다른 사람에게 정보를 제공합니다. 그러나 침투 테스트를위한 배포판이며 해당 사용 사례에 맞게 기본값이 조정 된 Kali가 아닌 Ubuntu에서보다 "표준적인"동작이 발견된다고 생각합니다.
dangonfast

1

특정 시스템에서는 ip명령을 사용할 수 없습니다.

user@linux:~$ ip
-bash: ip: command not found
user@linux:~$

그래서 이것은 ip link set arp off dev eth0; ip link set arp on dev eth0명령 의 대안입니다 .

단일 명령으로 테이블에서 모든 항목을 삭제하려면 for loop다음 예와 같이 사용 하십시오.

전에

user@linux:~$ arp
? (10.0.0.1) at 00:00:00:aa:aa:12 [ether]  on eth1
? (172.168.0.3) at 00:00:00:aa:aa:11 [ether]  on eth2
user@linux:~$ 

ARP -D 명령으로 ARP 제거

user@linux:~$ for i in 10.0.0.1 172.168.0.3; do sudo arp -d $i; done
user@linux:~$

불완전한 메시지가있는 항목에서 MAC 주소가 제거 된 후

user@linux:~$ arp
? (10.0.0.1) at <incomplete>  on eth1
? (172.168.0.3) at <incomplete>  on eth2
user@linux:~$ 

arp arp -d명령을 사용하여 arp 를 삭제 하면 arp 항목이 여전히 incomplete메시지 와 함께 존재 합니다.

이 문제를 해결하려면 다음 ifconfig ethx up/down과 같이 사용 하십시오

전에

user@linux:~$ arp
? (10.0.0.1) at <incomplete>  on eth1
? (172.168.0.3) at <incomplete>  on eth2
user@linux:~$ 

단일 명령에서 인터페이스 ETH1 및 ETH2 비활성화 및 활성화

user@linux:~$ for i in 1 2; do sudo ifconfig eth$i down; sudo ifconfig eth$i up; done
user@linux:~$ 

TADAAA ... 문제 해결 :)

user@linux:~$ arp
user@linux:~$ 

0

언급 한 솔루션은 ARP 테이블을 플러시하는 정확하고 안전한 방법입니다.

ip neigh flush all [dev <device>]

특정 항목이 유효하지 않은 항목으로 변경되면 일시적이며 ARP 프로토콜의 일부입니다. 중요한 점은 매핑이 사라졌고, 불완전한 것으로 표시된 ARP 항목이 테이블의 IP-MAC 항목이 아니라는 것입니다.

방금 이것을 시도했으며 내 경우에는 즉시 테이블을 지우고 불완전한 항목을 남기지 않았습니다.


일부 (명확하지 않은) 경우에는 ip neigh flush all로 충분하지 않습니다. 필자의 경우 arp -s로 추가 된 항목을 지우지 않았습니다.
MappaM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.