จะถ่ายทอดการอัพเดท ARP ไปยังเพื่อนบ้านทั้งหมดใน Linux ได้อย่างไร


21

ลูกค้าบางรายในซับเน็ตได้แคช IP ที่มีที่อยู่ MAC เก่าฉันต้องการให้พวกเขาอัปเดตค่าใหม่โดยทำการออกอากาศ ARP เป็นไปได้หรือไม่ที่ Linux

คำตอบ:


27

ใช่มันเรียกว่า "ARP ที่ไม่พึงประสงค์" หรือ "Gratuitous ARP" ตรวจสอบmanpage เพื่อดูรายละเอียดเพิ่มเติม แต่ไวยากรณ์มีลักษณะดังนี้:

arping -U 192.168.1.101

หากคุณปลอมแปลงที่อยู่คุณอาจต้องเรียกใช้สิ่งนี้ก่อน:

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

ในที่สุดเนื่องจากความสามารถในการปลอมแปลงการส่งแพ็คเก็ต ARP ที่ไม่พึงประสงค์บางครั้งถือเป็นกิจกรรม "ศัตรู" และอาจถูกละเว้นหรืออาจนำไปสู่การถูกบล็อกโดยไฟร์วอลล์ของบุคคลที่สามบางราย


8
arping -S ip.to.update -i ethX destination.hostภายใต้เดเบียนคำสั่งสำหรับฉันคือ ตัวอย่าง:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand

3
ฉันพบว่าจำเป็นต้องทำ arping กับเราเตอร์ตามที่อธิบายไว้ข้างต้นใน Linux เมื่อ IP เป็นชื่อแทนบนอุปกรณ์ (เช่น NIC สำรองใช้ IP หรือถ้าเป็นนามแฝงบน NIS ที่มีอยู่ซึ่งตั้งค่าโดยใช้ifconfig ethx:xประเภท ของนามแฝง) ถ้าเป็นตัวหลักมันไม่จำเป็นเลย

8

สิ่งที่คุณกำลังมองหาเรียกว่า " Gratuitous ARP " และสามารถทำได้โดยใช้ "arping" หากที่อยู่ IP ของคุณคือ 10.0.0.1 บน eth0 คุณจะต้องใช้คำสั่งนี้:

arping -A -I eth0 10.0.0.1

คุณสามารถตรวจสอบ ARP ที่ถูกส่งโดยใช้ "tcpdump" ในขณะที่ "arping" กำลังทำงานในกรณีนี้ฉันกำลังดู "wlan0":

laptop:~$ sudo tcpdump -lni wlan0 arp    
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:14:11.219936 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
12:14:12.220119 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
12:14:13.220288 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
laptop:~$ 

-1

มันไม่จำเป็น เช่นเดียวกับใน: เมื่อคุณเปลี่ยน IP คอมพิวเตอร์ควรทำโดยอัตโนมัติ หาก clietns เป็น hardcoded การออกอากาศจะไม่เปลี่ยนการแทนที่แบบแทนที่

ฉันทำมันเป็นเวลาประมาณ 20 ปีแล้วและในทุกครั้งที่ฉันไม่เคยมีสิ่งนี้เกิดขึ้นโดยไม่มีอุปกรณ์ผิดพลาด


ปัญหาคือฉันตั้งใจกำหนดเครื่องใหม่ด้วย IP ที่ใช้ดังนั้นพวกเขาจึงขัดแย้งกับ IP ฉันไม่สามารถเข้าถึงเครื่องเก่าโดยใช้ SSH ตอนนี้ฉันปิดเครื่อง (ใหม่) จากระยะไกลผิด แต่ฉันยังไม่สามารถเข้าถึงเครื่องเก่าฉันสงสัยว่าเราเตอร์ได้แคชที่อยู่ MAC ในตาราง ARP
Howard

1
สิ่งนี้เรียกว่า '' ARP แบบไม่มีค่าใช้จ่าย '' - ดูen.wikipedia.org/wiki/ …
Kimvais

ควรทำงานหลังจากแคช arp หมดอายุ คุณยังสามารถลองล้างตาราง arp บนเครื่องที่คุณพยายามเข้าถึงเครื่องเก่าจาก
Kimvais

4
@TomTom - บางทีคุณอาจไม่ได้ทำงานในสภาพแวดล้อมที่เหมาะสมเพื่อดูมัน การส่งแพ็คเก็ต ARP ที่ไม่พึงประสงค์เป็นวิธีการทั่วไปในการกำหนดเส้นทางทราฟฟิกไปยังเซิร์ฟเวอร์ใหม่อย่างรวดเร็วในสถานการณ์ที่ล้มเหลว สวิตช์และเราเตอร์ระดับสูงจำนวนมากอาจใช้เวลาหลายนาทีในการรับรู้ว่าที่อยู่ IP ถูกย้ายไปยังพอร์ตฟิสิคัลที่แตกต่างกัน สวิตช์ของ Cisco มีชื่อเสียงในเรื่องนี้
tylerl

4
@TomTom: ใช่ถ้าคุณล้มเหลวผ่าน heartbeat / corosync ไม่ว่าอะไรก็ตาม อย่างไรก็ตามหากคุณย้ายบริการจากเครื่องหนึ่งไปยังอีกเครื่องด้วยตนเองโดยเฉพาะอย่างยิ่งถ้าคุณใช้อุปกรณ์ของซิสโก้การส่ง ARP ฟรีด้วยตนเองนั้นมีประโยชน์อย่างมาก ฉันยอมรับว่าไม่ใช่สิ่งที่คุณทำบ่อย ๆ แต่ในฐานะคนที่ทำงานด้านไอทีเป็นเวลา 20 ปีฉันได้พบตัวเองในหลาย ๆ สถานการณ์ที่ฉันต้องทำ
Sean Reifschneider
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.