Notes sur le protocole ARP

Voir aussi :

arp-scan

arptables

ebtables

ip neigh

/etc/rc.local

#!/bin/sh -e arp -f /etc/ethers exit 0

/etc/ethers

20:aa:4b:22:8B:4f	192.168.2.1
00:20:ed:5d:73:0b	192.168.2.100

Afficher la table ARP

arp -an ip n

(ndp -a pour IPv6 ?)

cat /proc/net/arp

Autre moyen d'éviter une attaque MITM à son encontre par corruption du cache ARP.

arp -s "$gatewayIp" "$gatewayMac"

Vider le cache ARP

#ip neighbor flush dev bond0 ip -s -s neigh flush all

Effacer une entrée avec la commande arp

arp -d 192.168.1.1

Générer une adresse mac

printf 'DE:AD:BE:EF:%02X:%02X\n' $((RANDOM%256)) $((RANDOM%256))

52:54:00

Exemple de pb

# arping -I p1p2 -c 1 215.219.132.12
ARPING 215.219.132.12 from 215.219.132.91 p1p2
Unicast reply from 215.219.132.12 [4C:D9:8F:9A:06:74] 0.766ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

# ping -I p1p2 215.219.132.12
PING 215.219.132.12 (215.219.132.12) from 215.219.132.91 p1p2: 56(84) bytes of data.

# ip neigh | egrep 215.219.132.12
215.219.132.12 dev p1p2 FAILED

Clearing cache with ip

# ip -s -s n flush all
215.219.132.12 dev p1p2 used 13/75/12 probes 6 FAILED
172.19.1.254 dev nm-bond lladdr d0:d0:fd:8d:a4:43 ref 1 used 45/0/45 probes 4 REACHABLE
*** Round 1, deleting 2 entries ***
*** Flush is complete after 1 round ***

# ping -I p1p2 215.219.132.12
PING 215.219.132.12 (215.219.132.12) from 215.219.132.91 p1p2: 56(84) bytes of data.
^C
--- 215.219.132.12 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
# ip n
215.219.132.12 dev p1p2 INCOMPLETE
172.19.1.254 dev nm-bond lladdr d0:d0:fd:8d:a4:43 REACHABLE
# ip n
215.219.132.12 dev p1p2 FAILED
172.19.1.254 dev nm-bond lladdr d0:d0:fd:8d:a4:43 REACHABLE

Pb doublon d'adresse IP

Erreur, un autre hôte utilise déjà l'adresse 192.168.1.20

Mais rien n'y fait :

iptables -I INPUT -i eth0 iptables -I FORWARD -i eth0 #iptables -I FORWARD -o eth0 iptables -I OUTPUT -o eth0 ip route del blackhole 192.168.1.20

Il s'agit d'une erreur réel. Sur une VM de test je dois tester une procédure mais sur toutes les interfaces réseaux possible de l'hyperviseur mon adresse est déjà prise.

Il est rare que l'on veux forcer ou ignorer un doublon d'adresse IP. Mais dans mon cas je suis sur un environement de laboratoire, et il est compliqué pour moi de changer d'adresse IP.

Solution :

ip link set arp off dev eth0

Voir aussi

echo 1 > /proc/sys/net/ipv4/conf/all/hidden

Autre solution :

Suprimer eth0 (mais comment ?)

le recréer avec la commande ip et faire un bgrige ou autre sur lo