Linux'ta arp önbelleğini nasıl temizlersin?


13

Her ikisi de:

sudo ip -s -s neigh flush all

Ve:

sudo arp -d 192.168.0.102

Arp önbelleğini temizlemek yerine yalnızca girişleri geçersiz kılıyor gibi görünüyorlar (olarak görünecekler incomplete). Birkaç dakika sonra bile, ARP önbelleği şöyle görünür:

$ 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

(Ağ geçidinin MAC'si yenilendi - sorun değil)

"Tablodaki tüm girişleri sil" gibi ARP önbelleğini gerçekten nasıl temizleyebilirim? Ben yok ben onları kaldırılmasını istiyorum tamamlanmamış girdileri devam etmek istiyorum. Mümkün mü?

DÜZENLE

Bu benim sistemim:

» 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
Burada neyi başarmaya çalışıyorsunuz? Veya daha açık bir şekilde, hangi sorunu çözmeye çalışıyorsunuz?
EEAA

Arp tablosu girişlerinden yoksun musunuz? Belki de bu IP'yi isteyen ve böylece girişi yenileyen bir program vardır. wiresharkVeya ile kontrol edin tcpdump.
ott--

5
@MichaelMartinez çünkü xy sorunu . Muhtemelen sorunun kök problemi olmadığı ve bunun yerine OP'nin üzerinde çalışması gereken bazı problemler olabilir.
Zoredache

1
Bu bilginin soruda olmamasının nedeni, ilgili olmamasıdır. Temiz bir ARP önbelleği istiyorum. Tam durak. Bana bunu istediğime güvenmiyorsun, ama senin sorunun bu, benim değil. Sizi temin ederim: Temiz bir ARP önbelleği istiyorum.
dangonfast

2
Burada ARP önbellek mekanizmasının derinlemesine bir açıklaması var: stackoverflow.com/a/15511117/647991
dangonfast

Yanıtlar:


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

Hepsini bir kerede yaptığınızdan emin olun, böylece ARP'yi tekrar açmadan önce ağ bağlantısını kesmezsiniz.


2
İlk komuttan sonra bağlantıyı koparmış gibi göründüğü için, bir kabuk komut dosyasında veya makinede yapılması gerekir.
Louis

Ben bir satırda yaptım ve işe yaradı: dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev. Gerekli sleepolmayabilir.
mivk

5

İlk çözümünüz işe yarıyor, "(eksik)" den hiçbir girişe geçmek biraz zaman alıyor (Kali testimde 5-10 saniye).

Muhtemelen silinme yolunda bir tür geçiş durumundadır.


Benim için (Ubuntu 14.04) durum böyle değildi: girişler eksik durumda uzun süre (sonsuza dek?) Tutulur. Bunu bugün tekrar kontrol edeceğim.
dangonfast

Doğrulandı: birkaç dakika sonra bile, girişler hala eksik durumda (arp 1.88, net-tools 1.60)
dangonfast

O zaman sorununuz kesinlikle standart dışı davranış, belki Ubuntu 14.04'e özgü. Linux'ta bunu yapmanın doğru yolu sizin için çalışmıyor. Umarım yakında cevabını bulursun. İsterseniz bunu silebilirsiniz.
armani

1
Hayýr, býrak, diđerleri için bilgi verir. Ancak daha "standart" davranışın, penetrasyon testi için bir dağıtım olan ve bu kullanım durumu için özel olarak ayarlanmış varsayılan değerlere sahip Kali'de değil, Ubuntu'da bulunacağını tahmin ediyorum.
15'te dangonfast

1

Bazı sistemlerde ipkomut kullanılamaz.

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

Yani bu ip link set arp off dev eth0; ip link set arp on dev eth0komutun alternatifi .

Tüm girişleri tek bir komutla tablodan silmek istiyorsanız for loop, aşağıdaki örnekte olduğu gibi kullanın .

ÖNCE

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 KOMUTUYLA ARP SÖKME

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

SONRA: MAC ADRESİ GİRİŞ MESAJI İLE GİRİŞLERDEN KALDIRILDI

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

Doğru, arp arp -dkomutuyla silindiğinde , arp girdileri hala incompletemesajla birlikte var .

Bu sorunu çözmek için, kullanmak ifconfig ethx up/downböyle

ÖNCE

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

TEK KOMUTDA ETH1 ve ETH2 ARAYÜZLERİNİ DEVRE DIŞI BIRAKMA VE ETKİNLEŞTİRME

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

TADAAA ... SORUN ÇÖZÜLDÜ :)

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

0

Bahsettiğiniz çözüm, ARP tablosunu yıkamak için doğru ve güvenli bir yaklaşımdır:

ip neigh flush all [dev <device>]

Bazı girişler geçersiz olarak değiştirilirse, bu geçicidir ve ARP protokolünün bir parçasıdır. Önemli olan eşlemenin gitmiş olması, eksik olarak işaretlenmiş bir ARP girdisinin tablodaki bir IP-MAC girişi olmamasıdır.

Ben sadece denedim ve benim durumumda hemen tabloyu temizledi ve eksik giriş bırakmadı.


Bazı (belirsiz) durumlarda, ip neigh flush hepsi yeterli değildir. Benim durumumda arp -s ile eklenen girdileri temizlemedi.
MappaM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.