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

21

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?

Howard
la source

Réponses:

27

Oui, cela s'appelle "ARP non sollicité" ou "ARP gratuit". Consultez la page de manuel pour 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 entraîner le blocage de certains pare-feu tiers.

tylerl
la source
8
Sous debian, la commande pour moi était arping -S ip.to.update -i ethX destination.host. Exemple:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand
3
J'ai trouvé nécessaire de faire un arping vers un routeur comme décrit ci-dessus sous Linux lorsque l'IP est un alias sur le périphérique (c'est-à-dire que soit une carte réseau secondaire utilise l'IP ou s'il s'agit d'un alias sur un NIS existant qui a été configuré en utilisant un ifconfig ethx:xtype d'alias). Si c'est le principal, cela ne semble jamais nécessaire.
8

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:~$ 
Sean Reifschneider
la source
-1

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.

TomTom
la source
Le problème est que j'attribue accidentellement une nouvelle machine avec une IP utilisée, donc ils sont en conflit avec l'IP. Je ne peux pas accéder à l'ancienne machine en utilisant SSH. Maintenant, j'arrête à distance la mauvaise (nouvelle) machine, mais je ne peux toujours pas accéder à l'ancienne machine, je soupçonne que le routeur a mis en cache l'adresse MAC dans sa table ARP.
Howard
1
Cela s'appelle `` ARP gratuit '' - voir en.wikipedia.org/wiki/…
Kimvais
Devrait fonctionner après l'expiration du cache arp. Vous pouvez également essayer de vider la table d'arp sur la machine à partir de laquelle vous essayez d'accéder à l'ancienne machine
Kimvais
4
@TomTom - peut-être que vous n'avez tout simplement pas travaillé dans le bon environnement pour le voir. L'envoi de paquets ARP non sollicités est un moyen courant de réacheminer rapidement le trafic vers un nouveau serveur en cas de basculement. De nombreux commutateurs et routeurs haut de gamme peuvent prendre plusieurs minutes pour reconnaître qu'une adresse IP a été déplacée vers un autre port physique autrement. Les commutateurs Cisco sont connus pour cela.
tylerl
4
@TomTom: Oui, si vous basculez via heartbeat / corosync, peu importe. Cependant, si vous déplacez manuellement des services d'une machine à une autre, en particulier si vous utilisez l'équipement Cisco, l'envoi manuel d'un ARP gratuit est extrêmement utile. Je suis d'accord que ce n'est pas quelque chose que vous faites fréquemment, mais en tant que personne qui fait également de l'informatique depuis 20 ans, je me suis retrouvé dans un certain nombre de situations où je devais le faire.
Sean Reifschneider