Kuinka tyhjennät arp-välimuistin Linuxissa?

Molemmat:

sudo ip -s -s neigh flush all 

Ja:

sudo arp -d 192.168.0.102 

Arp-välimuistin tyhjentämisen sijaan ne näyttävät vain mitätöivän merkinnät (ne näkyvät muodossa incomplete). Jopa muutaman minuutin kuluttua ARP-välimuisti näyttää tältä:

$ 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 

(Yhdyskäytävän MAC on päivitetty – se on ok)

Kuinka voin todella tyhjentää ARP-välimuistin, kuten kohdassa ”Poista kaikki taulukon merkinnät”? I en halua pitää keskeneräisiä merkintöjä, haluan niiden poistettavan. Onko tämä mahdollista?

MUOKKAA

Tämä on minun järjestelmäni:

» 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 

kommentit

  • Mitä yrität saavuttaa täällä? Tai selvemmin, mitä ongelmaa yrität ratkaista?
  • Onko sinulla puutteita arp-taulukon merkinnöistä? Ehkä ’ on ohjelma, joka pyytää kyseistä IP-osoitetta ja siten uudistaa kyseisen merkinnän. Tarkista wireshark tai tcpdump.
  • @MichaelMartinez koska xy-ongelma . Vaikuttaa todennäköiseltä, että kysymys ei ole ’ t juuriongelma, ja siinä saattaa olla jokin taustalla oleva ongelma, jonka kanssa toimenpideohjelman pitäisi sen sijaan työskennellä.
  • Syy, miksi nämä tiedot ei ole kysymyksessä, koska sillä ei ole merkitystä. Haluan puhtaan ARP-välimuistin. Täysi pysähdys. Et luota minuun, että haluan sen, mutta se on sinun ongelmasi, ei minun. Vakuutan teille: Haluan puhtaan ARP-välimuistin.
  • Tässä on perusteellinen selitys ARP-välimuistimekanismista: stackoverflow.com/a/ 15511117/647991

vastaus

alkuperäinen oneliner

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

Muista tehdä se kaikki kerralla, jotta et katkaise verkkoyhteyksiä, ennen kuin voit käynnistää ARP: n uudelleen.

Liitäntä löytää copy-paste-komento

interfaces=$( arp -n | awk " NR == 1 {next} {interfaces[$5]+=1} END {for (interface in interfaces){print(interface)}} " ); for interface in $interfaces; do echo "Clearing ARP cache for $interface"; sudo ip link set arp off dev $interface; sudo ip link set arp on dev $interface; done 

Huomautus: Puolipisteiden avulla voit tiivistää tämän komennon onelineriksi, mutta se näyttää kauhealta SO-koodilohkossa .

Esimerkkilähtö Raspbianissa

pi@raspberrypi:~ $ arp -n Address HWtype HWaddress Flags Mask Iface 10.0.0.1 ether 58:19:f8:0d:57:aa C wlan0 10.0.0.159 ether 88:e9:fe:84:82:c8 C wlan0 pi@raspberrypi:~ $ interfaces=$( arp -n | awk " NR == 1 {next} {interfaces[$5]+=1} END {for (interface in interfaces){print(interface)}} "); for interface in $interfaces; do echo "Clearing ARP cache for $interface"; sudo ip link set arp off dev $interface; sudo ip link set arp on dev $interface; done Clearing ARP cache for wlan0 pi@raspberrypi:~ $ arp -n Address HWtype HWaddress Flags Mask Iface 10.0.0.159 ether 88:e9:fe:84:82:c8 C wlan0 

Kommentit

  • Joko tee komentosarjassa tai koneella, koska se näyttää rikkovan yhteyden ensimmäisen komennon jälkeen.
  • Tein sen yhdellä rivillä, ja se toimi: dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev. sleep ei välttämättä ole välttämätön.

Vastaa

ensimmäinen ratkaisu toimii, kestää vain vähän aikaa (5–10 sekuntia Kalilla tekemässä testissä) siirtyminen ”(epätäydellinen)” -vaihtoehdosta ei merkintöihin.

Oletettavasti se on jonkinlaisessa siirtymätilassa sen tapa poistaa.

Kommentit

  • Minulle (Ubuntu 14.04) näin ei ollut: merkinnät säilytetään pitkään ( ikuisesti?) epätäydellisessä tilassa. Tarkistan tämän uudelleen tänään.
  • Vahvistettu: jopa muutaman minuutin kuluttua merkinnät ovat edelleen olemassa, epätäydellisessä tilassa (arp 1.88, net-tools 1.60)
  • No sitten ongelmasi on varmasti epätavallinen käyttäytyminen, ehkä erityisesti Ubuntu 14.04. Oikea tapa tehdä se Linuxissa ei vain toimi sinulle. Toivottavasti löydät vastauksesi pian. Voi poistaa tämän, jos ’ haluat.
  • Ei, jätä se, se antaa tietoja muille. Mutta luulen, että ” tavallisempi ” -käyttäytyminen löytyy Ubuntusta, ei Kalista, joka on levitystestauksen häiriö ja sillä on oletusarvot, jotka on erityisesti mukautettu kyseiseen käyttötapaukseen.

Vastaus

Mainittu ratkaisusi on oikea ja turvallinen. lähestymistapa ARP-taulukon huuhteluun:

ip neigh flush all [dev <device>]

Jos tietyt merkinnät muutetaan virheellisiksi, ne ovat väliaikaisia ja osa ARP: tä Tärkeää on, että kartoitus on poissa, epätäydelliseksi merkitty ARP-merkintä ei ole taulukon IP-MAC-merkintä.

Olen juuri kokeillut tätä ja tapauksessani se tyhjentänyt heti taulukossa ja jättänyt keskeneräisiä merkintöjä.

Kommentit

  • Joissakin (epäselvissä) tapauksissa IP-nauhan huuhtelu ei riitä. Minun tapauksessani se ei tyhjentänyt merkintöjä, joihin oli lisätty arp -s-merkintöjä.
  • Pidän tätä mieluummin yllä olevasta omasta vastauksestani lisäämällä huomautus staattisista ARP-merkinnöistä halutun käyttäytymisen mukaan.

Vastaus

Tietyissä järjestelmissä ip -komento ei ole käytettävissä.

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

Tämä on ip link set arp off dev eth0; ip link set arp on dev eth0 -komennon vaihtoehto.

Jos haluat poista kaikki merkinnät taulukosta yhdellä komennolla, käytä for loop kuten seuraava esimerkki.

ENNEN

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: N POISTAMINEN ARP-D-KOMANDOLLA

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

div>

Tämä on totta. Kun poistat arp-komennon arp -d -komennolla, arp-merkinnät ovat edelleen siellä incomplete -viestillä.

Voit ratkaista tämän ongelman käyttämällä ifconfig ethx up/down näin

ENNEN

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

EI KÄYTÖSSÄ & KÄYTTÖÖN LIITÄNTÄT ETH1 & ETH2 YKSI KÄSIKIRJAKSI >

TADAAA … ONGELMA ratkaistu:)

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *