Page 1 sur 1

[iptables] comportement étrange

Publié : jeu. 25 mars 2021, 20:10
par dromadeuse
Bonjour,

Je suis ingé en robotique et j'utilise beaucoup de capteurs qui sont souvent en Ethernet.
Dans mes robots j'ai plusieurs calculateurs (un gros CPU, un gros GPU, etc ...) et suivant le type de capteurs (caméra, laser, etc ...) les données ne sont pas traitées par le même CPU.

Ça fait un moment que je bricole avec iptables pour faire des routes nat pour rediriger mes flux (de l'UDP en général) un peu partout sur mon réseau interne.
Pour ça j'utilise des commandes iptables -t nat... pour faire mes routes, qui seront lancées au boot. Et tcpdump pour faire du debug.

Le scénario que j'ai souvent est le suivant :
- On me branche le capteur, le capteur (10.0.0.30) crache toutes ses tripes en UDP vers l'IP de mon calculo principal (10.0.0.1)
- Je regarde ce qu'il se passe avec tcpdump, j'en déduis que je dois rediriger les UDP du port 1234 qui viennent de 10.0.0.30 vers 10.0.0.2:2000 ( un second calculo, par exemple). Donc je tape la ligne suivante :
iptables -A PREROUTING -t nat -i eth0 --source 10.0.0.30/32 --dport 1234 -j DNAT --to-destination 10.0.0.2:2000
- Je me log sur mon calculo qui est en 10.0.0.2 et je fais un "tcpdump -i eth0 port 2000" et dans 800% du temps j'ai RIEN.
- Alors je balance ma nouvelle règle dans un script de boot et je reboot tout et en général là ça marche, mais pas toujours...

Mes questions :
- C'est vraiment pas possible de faire des routes à chaud ? Est ce que mon soucis c'est qu'il y a déjà des paquets qui correspondent à la règle qui sont passés dans le noyaux et du coup il veut pas appliquer ma règle ?
- Y a t'il un moyen de debug ce genre de chose, est ce qu'il y a quelque chose que je fais mal ?
- Dans le cas ou je m'y prendrais mal, quelle est LA bonne méthode pour faire ce genre de chose ?

Merci beaucoup pour votre aide

Re: [iptables] comportement étrange

Publié : jeu. 25 mars 2021, 21:50
par benjarobin
Bonjour,
Les règles s’appliquent immédiatement. Par contre es tu sûr de ta règle ? Elle est valide ? En effet elle ne spécifie pas le protocole UDP
Je n'ai pas essayé (je ne sais pas si c'est valide), mais ceci ne serait pas mieux :

Code : Tout sélectionner

iptables -t nat -A PREROUTING -i eth0 -p udp --source 10.0.0.30/32 --dport 1234 -j DNAT --to-destination 10.0.0.2:2000

Re: [iptables] comportement étrange

Publié : ven. 26 mars 2021, 07:42
par dromadeuse
Merci pour ta réponse

Oui désolé, j'ai oublié la règle pour l'udp dans mon post, j'ai fait ça de tête.
Dans mes configs je ne l'oublie pas

Re: [iptables] comportement étrange

Publié : sam. 27 mars 2021, 13:29
par laurent85
Bonjour,
Les paquets ip DNATés ont conservés l'ip source d'origine (celle du capteur) en sortie de la carte réseau du routeur. Il y a un conflit ARP avec 2 adresses mac pour une même ip sur le lan. Ajoute une règle iptables :

Code : Tout sélectionner

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Vérifie également l'autorisation de faire suivre les paquets :

Code : Tout sélectionner

cat /proc/sys/net/ipv4/ip_forward