आप linux पर arp cache कैसे साफ़ करते हैं?


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

(गेटवे के मैक को ताज़ा किया गया है - यह ठीक है)

मैं वास्तव में 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 टेबल एंट्रीज से कम हैं? हो सकता है कि उस आईपी के लिए एक कार्यक्रम पूछ रहा है, इस प्रकार उस प्रविष्टि को नवीनीकृत कर रहा है। wiresharkया के साथ की जाँच करें tcpdump
ott--

5
@MichaelMartinez क्योंकि xy समस्या । ऐसा लगता है कि प्रश्न मूल समस्या नहीं है और कुछ अंतर्निहित समस्या हो सकती है कि ओपी इसके बजाय काम करना चाहिए।
ज़ोराडैस

1
कारण यह जानकारी सवाल में नहीं है क्योंकि यह प्रासंगिक नहीं है। मुझे एक साफ ARP कैश चाहिए। पूर्ण विराम। आपको मुझ पर भरोसा नहीं है कि मैं ऐसा चाहता हूं, लेकिन यह आपकी समस्या है, मेरी नहीं। मैं आपको आश्वासन देता हूं: मैं एक साफ एआरपी कैश चाहता हूं।
खतरों के खिलाड़ी

2
यहाँ ARP कैश तंत्र की गहन व्याख्या है: stackoverflow.com/a/15511117/647991
dangonfast

जवाबों:


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

एआरपी को चालू करने में सक्षम होने से पहले यह सुनिश्चित कर लें कि आप एक बार में नेटवर्क कनेक्टिविटी को तोड़ न दें।


2
एक को शेल स्क्रिप्ट में या मशीन में करना चाहिए, क्योंकि यह पहले कमांड के बाद कनेक्टिविटी को तोड़ने के लिए लगता है।
लुई

मैंने इसे एक लाइन पर किया, और इसने काम किया dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev:। sleepआवश्यक नहीं हो सकता।
मध्याह्न

5

आपका पहला समाधान काम करता है, "नो (एंट्री) से" (बिना किसी प्रविष्टि) में जाने के लिए बस थोड़ा समय (काली पर मेरी परीक्षा में 5-10 सेकंड) लगता है।

संभवत: यह किसी तरह से संक्रमणकालीन अवस्था में है, जिसे हटा दिया जा रहा है।


मेरे लिए (उबंटू 14.04) ऐसा नहीं था: अधूरी स्थिति में प्रविष्टियों को लंबे समय तक (हमेशा के लिए) रखा जाता है। मैं आज फिर से इसकी जांच करूंगा।
डंगऑनफ़ास्ट

सत्यापित: कुछ मिनटों के बाद भी, प्रविष्टियां अभी भी अधूरी अवस्था में हैं (arp 1.88, net-tools 1.60)
dangonfast

ठीक है, तो आपका मुद्दा निश्चित रूप से गैर-मानक व्यवहार है, शायद उबंटू 14.04 के लिए विशेष रूप से। लिनक्स में इसे करने का सही तरीका सिर्फ आपके लिए काम नहीं कर रहा है। आशा है कि आप जल्द ही अपना जवाब पा लेंगे। यदि आप चाहें तो इसे हटा सकते हैं।
अरमानी

1
नहीं, इसे छोड़ दो, यह दूसरों के लिए जानकारी देता है। लेकिन मुझे लगता है कि अधिक "मानक" व्यवहार उबंटू में पाया जाना है, न कि काली में, जो पैठ परीक्षण के लिए एक डिस्ट्रो है और उस उपयोग के मामले के लिए विशेष रूप से तय किए गए डिफ़ॉल्ट मान हैं।
ख़तरनाक

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

एआरपी-डी कमांड के साथ एआरपी को पुनर्प्राप्त करना

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

AFTER: मैक एड्रैस को INCOMPLETE मेसेज के साथ प्राप्त हुआ

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

यह सही है, 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 -s के साथ प्रविष्टियाँ नहीं मिला।
MappaM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.