J'ai un problème avec la connexion natted sous linux.
J'utilise Debian 10, et iptables pour faire du SNAT pour forcer tous mes paquets sortant de eth0 vers un port UDP spécifique pour utiliser une IP spécifique attachée à eth0 :
iptables -t nat -D POSTROUTING -o eth0 -p udp --dport 38041 -j SNAT --to-source 10.230.0.1
Mais parfois, l'IP source est redistribuée et elle change. Disons que dans mon exemple, elle passe de 10.230.0.1 à 10.230.0.4. L'IP est réaffectée à eth0, la règle iptables est supprimée et une nouvelle règle iptables est ajoutée (avec la bonne IP).
iptables -t nat -D POSTROUTING -o eth0 -p udp --dport 38041 -j SNAT --to-source 10.230.0.1
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 38041 -j SNAT --to-source 10.230.0.4
Lorsque je regarde mes règles iptables, tout semble correct :
#iptables -t nat -nL
...
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:38041 to:10.230.0.4
Mais ça ne marche pas. Quand je regarde mon trafic avec tcpdump :
#tcpdump -i eth0 udp port 38041
21:21:25.829610 IP 10.253.0.1.38041 > xx.xx.xx.xx.38041: [...payload...]
J'ai essayé de jouer avec netstat-nat mais je n'ai rien réussi à en tirer.
L'ancienne IP est toujours utilisée dans la connexion natted. Je ne comprends pas pourquoi. Et cela se produit sur plusieurs serveurs, donc je ne pense pas qu'il s'agisse d'un problème.
Connaissez-vous la manière correcte d'annuler cette règle pour de bon et de la remplacer par la nouvelle ?
Merci !