Begge:
sudo ip -s -s neigh flush all
Og:
sudo arp -d 192.168.0.102
I stedet for at rydde arp-cachen ser de ud til kun at ugyldiggøre poster (de vises som incomplete
). Selv efter nogle minutter ser ARP-cachen sådan ud:
$ 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
(Gatewayens MAC er blevet opdateret – det er ok)
Hvordan kan jeg virkelig rydde ARP-cachen, som i “slette alle poster fra tabellen”? Jeg vil ikke beholde ufuldstændige poster, jeg vil have dem fjernet. Er dette muligt?
REDIGER
Dette er mit system:
» 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
Kommentarer
Svar
Original oneliner
ip link set arp off dev eth0 ; ip link set arp on dev eth0
Sørg for at gøre det hele på én gang, så du ikke bryder netværksforbindelsen, før du” er i stand til at tænde ARP igen.
Interface, der opdager kopi-indsæt kommando
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
Bemærk: Semikolonerne giver dig mulighed for at kondensere denne kommando til en oneliner, men det ser forfærdeligt ud i en kodeblok på SO .
Eksempel på Raspbian
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
Kommentarer
- Man skal enten gør det i et shell-script eller på maskinen, da det ser ud til at bryde forbindelsen efter den første kommando.
- Jeg gjorde det på en linje, og det fungerede:
dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev
.sleep
er muligvis ikke nødvendigt.
Svar
Dit første løsning virker, det tager bare lidt tid (5-10 sekunder i min test på Kali) at gå fra “(ufuldstændig)” til ingen poster.
Formentlig er den i en eller anden form for overgangsstatus på sin måde at blive slettet.
Kommentarer
- For mig (Ubuntu 14.04) var dette ikke tilfældet: posterne opbevares i lang tid ( for evigt?) i ufuldstændig tilstand. Jeg vil kontrollere dette igen i dag.
- Bekræftet: selv efter nogle minutter er posterne stadig der, i ufuldstændig tilstand (arp 1.88, net-tools 1.60)
- Nå så er dit problem bestemt ikke-standardadfærd, måske specielt for Ubuntu 14.04. Den korrekte måde at gøre det på Linux fungerer bare ikke for dig. Håber du finder dit svar snart. Kan slette denne, hvis du ‘ kan lide det.
- Nej, lad det være, det giver information til andre. Men jeg antager, at jo mere ” standard ” adfærd findes i Ubuntu, ikke i Kali, hvilket er en distro til penetrationstest og har standardværdier, der specifikt er tilpasset til denne brugssag.
Svar
Din nævnte løsning er den rigtige og sikre tilgang til at skylle ARP-tabellen:
ip neigh flush all [dev <device>]
Hvis visse poster ændres til ugyldige, er det midlertidigt og en del af ARP Det vigtige aspekt er, at kortlægningen er væk, en ARP-post markeret som ufuldstændig er ikke en IP-MAC-post på bordet.
Jeg har lige prøvet dette og i mit tilfælde ryddede det straks tabellen og efterlod ingen ufuldstændige poster.
Kommentarer
- I nogle (uklare) tilfælde er ip neigh flush all ikke tilstrækkelig. I mit tilfælde slettede det ikke poster tilføjet med arp -s.
- Jeg foretrækker dette meget frem for mit eget svar ovenfor med den ekstra advarsel angående statiske ARP-poster afhængigt af den ønskede adfærd.
Svar
I visse systemer er kommandoen ip
ikke tilgængelig.
user@linux:~$ ip -bash: ip: command not found user@linux:~$
Så dette er alternativet til ip link set arp off dev eth0; ip link set arp on dev eth0
-kommandoen.
Hvis du vil slet alle poster fra tabellen i en enkelt kommando, brug for loop
som det følgende eksempel.
FØR
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:~$
FJERNELSE AF ARP MED ARP -D KOMMANDO
user@linux:~$ for i in 10.0.0.1 172.168.0.3; do sudo arp -d $i; done user@linux:~$
EFTER: MAC-ADRESSE FJERNET FRA INDGANGER MED UFULLT MEDDELELSE
user@linux:~$ arp ? (10.0.0.1) at <incomplete> on eth1 ? (172.168.0.3) at <incomplete> on eth2 user@linux:~$
Det er sandt, ved at slette arp med arp -d
kommando, er arp-indgangene stadig der med incomplete
besked.
For at løse dette problem skal du bruge ifconfig ethx up/down
sådan
FØR
user@linux:~$ arp ? (10.0.0.1) at <incomplete> on eth1 ? (172.168.0.3) at <incomplete> on eth2 user@linux:~$
Deaktiveret & AKTIVER INTERFACES ETH1 & ETH2 I EN ENKELT KOMMANDO
user@linux:~$ for i in 1 2; do sudo ifconfig eth$i down; sudo ifconfig eth$i up; done user@linux:~$
TADAAA … LØSET PROBLEM 🙂
user@linux:~$ arp user@linux:~$
wireshark
ellertcpdump
.