คุณจะล้างแคช arp บน linux ได้อย่างไร


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

(MAC ของเกตเวย์ถูกรีเฟรช - ไม่เป็นไร)

ฉันจะล้างแคช 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 สั้นหรือไม่? อาจมีโปรแกรมที่ขอ IP นั้นดังนั้นจึงต่ออายุรายการนั้น ตรวจสอบกับหรือwireshark tcpdump
ott--

5
@MichaelMartinez เพราะปัญหา XY ดูเหมือนว่าคำถามไม่ใช่ปัญหารูทและอาจมีปัญหาพื้นฐานที่ OP ควรใช้แทน
Zoredache

1
เหตุผลที่ข้อมูลนี้ไม่ได้อยู่ในคำถามนั้นเป็นเพราะมันไม่เกี่ยวข้อง ฉันต้องการแคช ARP ที่สะอาด หยุดเต็ม คุณไม่เชื่อฉันว่าฉันต้องการสิ่งนั้น แต่นั่นเป็นปัญหาของคุณไม่ใช่ของฉัน ฉันรับรองกับคุณ: ฉันต้องการแคช ARP ที่สะอาด
dangonfast

2
มีคำอธิบายในเชิงลึกเกี่ยวกับกลไกแคช ARP ได้ที่นี่: stackoverflow.com/a/15511117/647991
dangonfast

คำตอบ:


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

อย่าลืมทำทุกอย่างพร้อมกันดังนั้นคุณจะไม่หยุดการเชื่อมต่อเครือข่ายก่อนที่คุณจะสามารถเปิด ARP กลับมาได้


2
ต้องทำอย่างใดอย่างหนึ่งในเชลล์สคริปต์หรือที่เครื่องเนื่องจากดูเหมือนว่าจะทำลายการเชื่อมต่อหลังจากคำสั่งแรก
หลุยส์

dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $devฉันไม่ได้ในหนึ่งบรรทัดและจะทำงาน: sleepอาจไม่จำเป็น
mivk

5

วิธีแก้ปัญหาแรกของคุณใช้งานได้ใช้เวลาเล็กน้อย (5-10 วินาทีในการทดสอบของฉันกับ Kali) เพื่อเปลี่ยนจาก "(ไม่สมบูรณ์)" เป็นไม่มีรายการ

สันนิษฐานว่ามันอยู่ในสถานะของการเปลี่ยนผ่านบางส่วนเกี่ยวกับวิธีการที่จะถูกลบ


สำหรับฉัน (Ubuntu 14.04) นี่ไม่ใช่กรณี: รายการจะถูกเก็บไว้เป็นเวลานาน (ตลอดไป?) ในสถานะที่ไม่สมบูรณ์ ฉันจะตรวจสอบเรื่องนี้อีกครั้งในวันนี้
dangonfast

ตรวจสอบแล้ว: แม้หลังจากผ่านไปไม่กี่นาทีรายการก็ยังคงอยู่ในสถานะที่ไม่สมบูรณ์ (arp 1.88, เครื่องมือสุทธิ 1.60)
dangonfast

ถ้าอย่างนั้นปัญหาของคุณก็คือพฤติกรรมที่ไม่ได้มาตรฐานแน่นอนโดยเฉพาะกับ Ubuntu 14.04 วิธีที่ถูกต้องสำหรับการทำใน Linux นั้นไม่ได้ผลสำหรับคุณ หวังว่าคุณจะพบคำตอบของคุณในไม่ช้า สามารถลบอันนี้ถ้าคุณต้องการ
armani

1
ไม่ปล่อยให้เป็นข้อมูลสำหรับคนอื่น ๆ แต่ฉันเดาว่าพฤติกรรม "มาตรฐาน" มากขึ้นนั้นจะพบได้ใน Ubuntu ไม่ใช่ใน Kali ซึ่งเป็น distro สำหรับการทดสอบการเจาะและมีค่าเริ่มต้นโดยเฉพาะ tweaked สำหรับกรณีการใช้งานนั้น
dangonfast

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

การลบ ARP ด้วยคำสั่ง ARP -D

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

หลังจาก: ที่อยู่ MAC ถูกลบออกจากรายการด้วยข้อความที่ไม่สมบูรณ์

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 ถูกตั้งค่าสถานะว่าไม่สมบูรณ์ไม่ใช่รายการ IP-MAC บนตาราง

ฉันเพิ่งลองและในกรณีของฉันมันล้างตารางทันทีและไม่มีรายการที่ไม่สมบูรณ์


ในบางกรณี (ไม่ชัดเจน) ip neigh flush ทั้งหมดไม่เพียงพอ ในกรณีของฉันมันไม่ได้ล้างรายการเพิ่มด้วย arp -s
MappaM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.