[server] arp –delete는 항목을 삭제하지 않습니다. 단순히 “불완전한”항목으로 표시

$ sudo arp -avn
? (10.10.7.30) at 00:cc:cc:bb:dd:86 [ether] on eth0
...

$ sudo arp --delete 10.10.7.30

$ sudo arp -avn
? (10.10.7.30) at <incomplete> [ether] on eth0

--delete나는에 대한 항목을 예상 10.10.7.30. 예기치 않게 항목이 유지되고로 표시 <incomplete>됩니다.

우분투 10.04 사용하기 .



답변

항목이 제거되며 인내심을 가지십시오.

(가장 짧은 대답을 원하면 : 불완전한 == 삭제됨)

“삭제”가 동작에 대한 잘못된 단어라고 가정 해 봅시다. 여기서 실제로 발생하는 것은 항목이 시스템에 실제로 도달 할 수없는 것처럼 “요청이 전송되고 응답이 없습니다” ( “불완전한”ARP 프로세스) 상태로 수동 설정됩니다 .

그 동안 새로운 유효한 ARP 응답을받지 않으면 항목이 곧 완전히 제거됩니다. 이 경우 불완전한 것으로 표시되지 않고 제거 된 경우에도 항목이 다시 추가됩니다. 따라서이 동작에 대한 실제 장단점이 없습니다.

그러나 우리는 캐시에 대해 이야기하고 있음을 명심하십시오. 캐시에서 항목을 삭제하는 것은 어렵고 비용이 많이 듭니다. 항목을 무효화하고 항목이 제거되기 전에 기다려 항목을 제거하는 것이 더 효율적입니다. 그러나 시스템의 경우 항목이 목록에서 사라지거나 불완전한 것으로 표시되면 전혀 차이가 없습니다.


답변

다른 모든 답변을 보완하기 위해이 링크가 매우 유용하다는 것을 알았습니다 .

경우에 따라 다음 ip과 같은 명령을 사용하는 것이 더 적합합니다.

# ip -s -s neigh flush all

결과는 리눅스 커널에 따라 달라질 수 있습니다.


답변

다른 훌륭한 답변 외에도 arp 캐시를 제거하여 완전히 나타낼 수 있다고 언급 할 가치가 있습니다. 덜 고통스러운 방법 중 하나는 다음과 같습니다.

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

모든 항목을 제거해야합니다 (상태에 상관없이).

다른 방법으로는 인터페이스 다운 및 업 및 arp 캐시를 완전히 제거하고 다시 만드는 유사한 방법이 있습니다.


답변

나는 이것이 명백하게 들릴 수 있다는 것을 알고 있지만, 껍질을 다루는 데 익숙하지 않은 사람들에게는 이것이 나의 제안입니다.

@KarmaFusebox의 답변에서 시작하여 단순히 결과 grep 하지 않습니까? :

arp -a | grep "incomplet" -i -v

기존 / 활성 캐시 항목 만 표시됩니다.
나는 그것이 POSIX 호환 명령 이라고 계속 생각합니다 . 그리고 이것이 필요한 경우 스크립트 가능한 방법입니다.


답변