Bagaimana menyiarkan pembaruan ARP ke semua tetangga di Linux?


21

Beberapa klien di subnet telah membuat cache IP dengan alamat MAC lama, saya ingin mereka memperbarui nilai baru dengan melakukan siaran ARP, apakah mungkin di Linux?

Jawaban:


27

Ya, ini disebut "ARP yang tidak diminta" atau "ARP serampangan". Periksa halaman manual untuk melihat detail lebih lanjut, tetapi sintaksnya terlihat seperti ini:

arping -U 192.168.1.101

Jika Anda menipu alamat, Anda mungkin perlu menjalankan ini terlebih dahulu:

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

Akhirnya, karena kemampuan spoofing-nya, mengirimkan paket-paket ARP yang tidak diminta kadang-kadang dianggap sebagai kegiatan "bermusuhan", dan mungkin diabaikan, atau mungkin menyebabkan diblokir oleh beberapa firewall pihak ketiga.


8
Di bawah debian, perintah untuk saya adalah arping -S ip.to.update -i ethX destination.host. Contoh:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand

3
Saya merasa perlu untuk melakukan arping ke router seperti dijelaskan di atas di Linux ketika IP adalah alias pada perangkat (yaitu NIC sekunder menggunakan IP atau jika itu adalah alias pada NIS yang ada yang diseting menggunakan ifconfig ethx:xtipe alias). Jika itu yang utama, sepertinya tidak pernah perlu.

8

Apa yang Anda cari disebut " ARP Gratuitous " dan dapat dilakukan dengan menggunakan "arping". Jika alamat IP Anda 10.0.0.1 pada eth0, Anda akan menggunakan perintah ini:

arping -A -I eth0 10.0.0.1

Anda dapat memverifikasi ARP sedang dikirim menggunakan "tcpdump" saat "arping" sedang berjalan, dalam hal ini saya menonton "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

Itu tidak perlu. Seperti pada: ketika Anda mengubah IP, komputer seharusnya melakukannya secara otomatis. Jika kode hardcode, siaran tidak akan mengubah penggantian kode had.

Saya melakukannya selama sekitar 20 tahun sekarang, dan selama ini saya TIDAK PERNAH (!) Memiliki ini terjadi tanpa peralatan yang salah.


Masalahnya adalah saya secara tidak sengaja menetapkan mesin baru dengan IP yang digunakan, sehingga mereka bertentangan dengan IP. Saya tidak dapat mengakses mesin lama menggunakan SSH. Sekarang saya jarak jauh mematikan mesin yang salah (baru), tapi saya masih tidak dapat mengakses mesin yang lama, saya menduga router telah menembolok alamat MAC dalam tabel ARP-nya.
Howard

1
Ini disebut '' ARP serampangan '' - lihat en.wikipedia.org/wiki/…
Kimvais

Seharusnya berfungsi setelah cache arp kedaluwarsa. Anda juga dapat mencoba menyiram tabel arp pada mesin yang Anda coba akses dari mesin lama
Kimvais

4
@ TomTom - mungkin Anda belum bekerja di lingkungan yang tepat untuk melihatnya. Mengirim paket ARP yang tidak diminta adalah cara umum untuk dengan cepat merutekan lalu lintas ke server baru dalam situasi failover. Banyak switch dan router kelas atas yang memerlukan waktu beberapa menit untuk mengenali bahwa alamat IP telah pindah ke port fisik yang berbeda. Switch Cisco terkenal dengan hal ini.
tylerl

4
@ TomTom: Ya, jika Anda gagal melalui detak jantung / corosync, apa pun. Namun, jika Anda secara manual memindahkan layanan dari satu mesin ke mesin lain, terutama jika Anda menggunakan peralatan Cisco, secara manual mengirimkan ARP gratis sangat berguna. Saya setuju bahwa ini bukan sesuatu yang sering Anda lakukan, tetapi sebagai seseorang yang juga telah melakukan IT selama 20 tahun, saya telah menemukan diri saya dalam sejumlah situasi di mana saya perlu melakukannya.
Sean Reifschneider
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.