arp --delete bir girişi silmiyor; yalnızca girişi "eksik" olarak işaretler


10
$ 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

--deleteBen hiçbir girdi bekledikten sonra 10.10.7.30. Beklenmedik şekilde, giriş kalır ve işaretlenir <incomplete>.

Ubuntu 10.04 Kullanımı .

Yanıtlar:


10

Giriş kaldırılacak, sadece sabırlı olun.

(Mümkün olan en kısa cevabı istiyorsanız: incomplete == silindi)

Diyelim ki "sil" işlemi yanlış kelime. Burada gerçekten olan şey, girdinin makineye gerçekten ulaşılamayacakmış gibi " gönderilen istek, yanıt yok" (dolayısıyla "eksik" ARP işlemi) durumuna ayarlanmasıdır .

Şimdi, bu arada yeni bir geçerli ARP yanıtı almazsa giriş tamamen kaldırılacaktır. Bu durumda giriş, eksik olarak işaretlenmek yerine kaldırılsa bile yine de yeniden eklenir. Yani bu davranışın gerçek bir yanlısı veya aleyhtarı yoktur.

Ancak bir önbellekten bahsettiğimizi unutmayın. Önbellekten bir şeyler silmek zor ve pahalıdır. Bir girişi geçersiz kılmak ve sonunda kaldırılmadan önce değiştirilmesini beklemek çok daha etkilidir. Ancak sistem için, giriş listeden çıkmışsa veya sadece eksik olarak işaretlenmişse, tamamen fark etmez.


Ve gerçekten silmenin bir yolu yoktur, böylece daha sonra varış noktasını bilmek "yeni" bir ARP sorgusu tetikler?
Skaperen

1
Ama tam da burada böyle. Herhangi bir şey "tamamlanmadı" olarak işaretlenmiş bir giriş ararsa, yeni bir ARP isteği gönderilir. Yanıtlanırsa, giriş güncellenir ve artık "eksik" olmaz. Yanıt gelmezse, giriş bir süre sonra listeden kaldırılır. (Bu yüzden bir girişi el ile "- silmek" için oldukça işe yaramaz olduğunu düşünüyorum. Makine yaşıyorsa, giriş yenilenir. Eğer gerçekten gitti ise, neden yine de girişi "- sil"?)
Karma Fusebox

... bir IP adresi için ARP adresini "değiştirmek" isteyebileceğinizi düşünüyorum. Bu özel durumda el ile "--delete" ve bir sonraki ARP isteğinin yeni adresi döndürmesini sağlayabilirsiniz. Ancak bu senaryo için, girişin listeden görünür bir şekilde kaldırılması veya "eksik" olarak işaretlenmesi önemli değildir. İlgili teknoloji için aynı.
Karma Fusebox

@KarmaFusebox bu önbelleğin nerede olduğunu biliyor musunuz? İşlem hafızasında mı? Varsa, hangi süreç? ya da çekirdek tarafından korunuyor mu? Diskteki bir dosyada mı? Başka yerde?
JamesThomasMoon1979

@KarmaFusebox Bir girişin silinmesi, girişlerin manuel olarak da eklenip eklenmediğini (ve bu nedenle kalıcı bayrak ayarının yapılmasını)
mantıklıdır

7

Diğer tüm cevapları tamamlamak için bu bağlantıyı çok kullanışlı buldum .

Bazı durumlarda ip, komut gibi kullanımı daha uygundur:

# ip -s -s neigh flush all

Sonuçlar linux çekirdeğinize bağlı olabilir.


Bu benim için mükemmel çalıştı. Diğer yanıtlarla ilgili sorun yaşayan herkes bunu denemelidir.
jackgu1988

3

Diğer ince cevapların yanı sıra, arp önbelleğini kaldırarak tamamen silmenin mümkün olduğunu belirtmeye değer. Daha az acı verici yollardan biri:

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

Bu, hangi durumda olursa olsun tüm girdileri kaldırmalıdır.

Alternatif yöntemler arasında arayüzün indirilmesi ve yükseltilmesi ve arp önbelleğinin tamamen kaldırılması ve yeniden oluşturulması için benzer yollar bulunur.


1
Bu doğru cevap. Tam olarak buna ihtiyacım vardı. Sadece "eksik" veya "bir süredir ulaşılmadı" için bazı girişleri işaretlemekle kalmıyor. Teşekkür ederim.
John Hamilton

0

Bunun kulağa bariz gelebileceğini biliyorum, ama kabukla çalışmayanlar için bu benim önerim:

@KarmaFusebox'ın cevabından başlayarak , sonuçları neden basitçe anlatmıyorsunuz ? :

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

Yalnızca mevcut / etkin önbellek girdilerini gösterir. POSIX uyumlu bir komut
olmaya devam ettiğini düşünüyorum . Ve ihtiyacınız olan şey buysa, yazılabilir bir yöntemdir.


Neden böyle arpdavrandığına dair makul bir açıklama arıyorum . Tuhaf görünüyor. Teğetsel olarak, girişleri arpkaldırmak zorunda kalabilir <incomplete>misiniz?
JamesThomasMoon1979

@ JamesThomasMoon1979, bu şekilde davranmamış gibi görünen sistemlerde (yani: Windows konsolu) gerçekten olduklarını söyleyebilirim. Tek fark, incompletearp önbellek listesi komutunda girdileri göstermemesidir .
Sopalajo de Arrierez
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.