Làm thế nào để bạn xóa bộ đệm arp trên linux?


13

Cả hai:

sudo ip -s -s neigh flush all

Và:

sudo arp -d 192.168.0.102

Thay vì xóa bộ đệm arp, chúng dường như chỉ làm mất hiệu lực các mục (chúng sẽ xuất hiện dưới dạng incomplete). Ngay cả sau vài phút, bộ đệm ARP trông như sau:

$ 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 của cổng đã được làm mới - không sao cả)

Làm cách nào tôi có thể thực sự xóa bộ đệm ARP, như trong "xóa tất cả các mục khỏi bảng"? Tôi không muốn giữ các mục không đầy đủ, tôi muốn xóa chúng. Điều này có thể không?

BIÊN TẬP

Đây là hệ thống của tôi:

» 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
Bạn đang cố gắng để đạt được điều gì ở đây? Hay nói rõ hơn, bạn đang cố gắng giải quyết vấn đề gì?
EEAA

Bạn có thiếu các mục arp bảng? Có thể có một chương trình yêu cầu IP đó, do đó làm mới mục đó. Kiểm tra với wiresharkhoặc tcpdump.
ott--

5
@MichaelMartinez vì xy có vấn đề . Có vẻ như câu hỏi không phải là vấn đề gốc và có thể có một số vấn đề tiềm ẩn mà OP nên làm việc thay thế.
Zoredache

1
Lý do tại sao thông tin này không có trong câu hỏi là vì nó không liên quan. Tôi muốn một bộ đệm ARP sạch. Dấu chấm. Bạn không tin tôi rằng tôi muốn điều đó, nhưng đó là vấn đề của bạn, không phải của tôi. Tôi đảm bảo với bạn: Tôi muốn một bộ đệm ARP sạch.
dangonfast 19/03/2015

2
Có một lời giải thích sâu sắc về cơ chế bộ đệm ARP ở đây: stackoverflow.com/a/15511117/647991
dangonfast 19/03/2015

Câu trả lời:


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

Hãy chắc chắn làm tất cả cùng một lúc, vì vậy bạn không phá vỡ kết nối mạng trước khi bạn có thể bật lại ARP.


2
Người ta phải làm trong một kịch bản shell hoặc tại máy, vì nó dường như phá vỡ kết nối sau lệnh đầu tiên.
Louis

Tôi đã làm nó trên một dòng, và nó hoạt động : dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev. Có sleepthể không cần thiết.
mivk

5

Giải pháp đầu tiên của bạn hoạt động, chỉ mất một ít thời gian (5-10 giây trong thử nghiệm của tôi về Kali) để chuyển từ "(chưa hoàn thành)" sang không có mục.

Có lẽ nó đang ở trong một số loại trạng thái chuyển tiếp trên đường bị xóa.


Đối với tôi (Ubuntu 14.04) đây không phải là trường hợp: các mục được lưu giữ trong một thời gian dài (mãi mãi?) Ở trạng thái không đầy đủ. Tôi sẽ kiểm tra lại điều này một lần nữa ngày hôm nay.
dangonfast

Đã xác minh: ngay cả sau một vài phút, các mục vẫn ở đó, ở trạng thái không hoàn chỉnh (arp 1.88, công cụ mạng 1.60)
dangonfast 19/03/2015

Vậy thì vấn đề của bạn chắc chắn là hành vi không chuẩn, có thể đặc biệt là Ubuntu 14.04. Cách chính xác để làm điều đó trong Linux chỉ là không làm việc cho bạn. Hy vọng bạn tìm thấy câu trả lời của bạn sớm. Có thể xóa cái này nếu bạn thích.
armani

1
Không, để lại nó, nó cung cấp thông tin cho người khác. Nhưng tôi đoán rằng hành vi "chuẩn" hơn sẽ được tìm thấy trong Ubuntu, không phải ở Kali, đây là một bản phân phối để kiểm tra thâm nhập và có các giá trị mặc định được điều chỉnh cụ thể cho trường hợp sử dụng đó.
dangonfast 19/03/2015

1

Trong hệ thống nhất định, iplệnh không có sẵn.

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

Vì vậy, đây là sự thay thế của ip link set arp off dev eth0; ip link set arp on dev eth0lệnh.

Nếu bạn muốn xóa tất cả các mục từ bảng trong một lệnh duy nhất, hãy sử dụng for loopnhư ví dụ sau.

TRƯỚC

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:~$ 

KHÁM PHÁ ARP VỚI ARP -D

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

SAU: ĐỊA CHỈ MAC ĐƯỢC KHAI THÁC TỪ CÁC MÔI TRƯỜNG VỚI THÔNG ĐIỆP TUYỆT VỜI

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

Điều đó đúng, bằng cách xóa arp bằng arp -dlệnh, các mục arp vẫn ở đó với incompletethông báo.

Để giải quyết vấn đề này, sử dụng ifconfig ethx up/downnhư thế này

TRƯỚC

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

TUYỆT VỜI & ENABLE CÁC GIAO DIỆN ETH1 & ETH2 TRONG MỘT LỆNH

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

TADAAA ... VẤN ĐỀ GIẢI QUYẾT :)

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

0

Giải pháp được đề cập của bạn là cách tiếp cận chính xác và an toàn để xóa bảng ARP:

ip neigh flush all [dev <device>]

Nếu một số mục nhất định được thay đổi thành không hợp lệ, đó là tạm thời và là một phần của giao thức ARP. Khía cạnh quan trọng là ánh xạ đã biến mất, một mục ARP được gắn cờ là không đầy đủ không phải là một mục IP-MAC trên bảng.

Tôi vừa mới thử cái này và trong trường hợp của tôi, nó lập tức xóa bảng và không để lại mục nào không đầy đủ.


Trong một số trường hợp (không rõ ràng), ip neigh flush all là không đủ. Trong trường hợp của tôi, nó không xóa các mục được thêm bằng arp -s.
MappaM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.