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
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:~$
wireshark
taitcpdump
.