web-dev-qa-db-fra.com

Comment diffuser la mise à jour ARP à tous les voisins sous Linux?

Certains clients du sous-réseau ont mis en cache l'IP avec l'ancienne adresse MAC, je veux qu'ils mettent à jour la nouvelle valeur en faisant une diffusion ARP, est-ce possible sous Linux?

21
Howard

Oui, cela s'appelle "ARP non sollicité" ou "ARP gratuit". Consultez la manpage for arping pour plus de détails, mais la syntaxe ressemble à ceci:

arping -U 192.168.1.101

Si vous usurpez une adresse, vous devrez peut-être l'exécuter en premier:

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

Enfin, en raison de sa capacité d'usurpation d'identité, l'envoi de paquets ARP non sollicités est parfois considéré comme une activité "hostile", et peut être ignoré, ou peut entraîner le blocage de certains pare-feu tiers.

28
tylerl

Ce que vous recherchez s'appelle " ARP gratuit " et peut être fait en utilisant "arping". Si votre adresse IP est 10.0.0.1 sur eth0, vous utiliseriez cette commande:

arping -A -I eth0 10.0.0.1

Vous pouvez vérifier que l'ARP est envoyé en utilisant "tcpdump" pendant que le "arping" est en cours d'exécution, dans ce cas, je regarde "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:~$ 
8

Ce n'est pas nécessaire. Comme dans: lorsque vous avez modifié l'adresse IP, l'ordinateur aurait dû le faire automatiquement. Si les clietns sont codés en dur, une diffusion ne changera pas le remplacement hadcodé.

Je le fais depuis environ 20 ans maintenant, et pendant tout ce temps, je n'ai JAMAIS (!) Eu cela sans équipement défectueux.

0
TomTom