Come trasmettere l'aggiornamento ARP a tutti i vicini in Linux?


21

Alcuni client nella sottorete hanno memorizzato nella cache l'IP con un vecchio indirizzo MAC, voglio che aggiornino il nuovo valore facendo una trasmissione ARP, è possibile in Linux?

Risposte:


27

Sì, si chiama "ARP indesiderato" o "ARP gratuito". Controlla la manpage per informazioni sull'arping per maggiori dettagli, ma la sintassi è simile alla seguente:

arping -U 192.168.1.101

Se stai falsificando un indirizzo, potresti dover eseguire prima questo:

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

Infine, a causa della sua capacità di spoofing, l'invio di pacchetti ARP non richiesti è talvolta considerato un'attività "ostile" e può essere ignorato o potrebbe essere bloccato da alcuni firewall di terze parti.


8
Sotto Debian, il comando per me era arping -S ip.to.update -i ethX destination.host. Esempio:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand

3
Ho trovato necessario eseguire un arping su un router come descritto sopra in Linux quando l'IP è un alias sul dispositivo (ovvero una scheda NIC secondaria utilizza l'IP o se è un alias su un NIS esistente che è stato configurato utilizzando un ifconfig ethx:xtipo di alias). Se è il principale, non sembra mai essere necessario.

8

Quello che stai cercando si chiama " Gratuitous ARP " e può essere fatto usando "arping". Se il tuo indirizzo IP è 10.0.0.1 su eth0, dovresti usare questo comando:

arping -A -I eth0 10.0.0.1

Puoi verificare che l'ARP venga inviato usando "tcpdump" mentre "arping" è in esecuzione, in questo caso sto guardando "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

Non è necessario. Come in: quando hai cambiato l'IP, il computer avrebbe dovuto farlo automaticamente. Se i clietn sono hardcoded, una trasmissione non cambierà l'override codificato.

Lo faccio da circa 20 anni, e in tutto questo tempo non ho MAI (!) Successo senza attrezzature difettose.


Il problema è che ho assegnato accidentalmente una nuova macchina con un IP usato, quindi sono in conflitto con l'IP. Non riesco ad accedere alla vecchia macchina usando SSH. Ora spengo da remoto la macchina (nuova) sbagliata, ma non riesco ancora ad accedere alla vecchia macchina, sospetto che il router abbia memorizzato nella cache un indirizzo MAC nella sua tabella ARP.
Howard,

1
Questo si chiama '' ARP gratuito '' - vedi en.wikipedia.org/wiki/…
Kimvais,

Dovrebbe funzionare dopo la scadenza della cache arp. Puoi anche provare a svuotare la tabella arp sulla macchina da cui stai tentando di accedere alla vecchia macchina
Kimvais,

4
@ TomTom - forse non hai lavorato nell'ambiente giusto per vederlo. L'invio di pacchetti ARP non richiesti è un modo comune per reindirizzare rapidamente il traffico verso un nuovo server in una situazione di failover. Molti switch e router di fascia alta possono richiedere diversi minuti per riconoscere che un indirizzo IP si è spostato su una porta fisica diversa. Gli switch Cisco sono noti per questo.
tylerl,

4
@ TomTom: Sì, se si esegue il failover tramite heartbeat / corosync, qualunque cosa. Tuttavia, se si spostano manualmente i servizi da una macchina all'altra, in particolare se si utilizza la marcia Cisco, l'invio manuale di un ARP gratuito è estremamente utile. Sono d'accordo sul fatto che non è qualcosa che fai di frequente, ma come qualcuno che ha anche fatto IT per 20 anni, mi sono trovato in una serie di situazioni in cui avevo bisogno di farlo.
Sean Reifschneider
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.