[iptables] comportement étrange

Applications, problèmes de configuration réseau
dromadeuse
newbie
Messages : 9
Inscription : mar. 10 déc. 2019, 15:34

[iptables] comportement étrange

Message 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
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [iptables] comportement étrange

Message 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
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
dromadeuse
newbie
Messages : 9
Inscription : mar. 10 déc. 2019, 15:34

Re: [iptables] comportement étrange

Message 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
laurent85
Elfe
Messages : 951
Inscription : mar. 16 oct. 2018, 21:05

Re: [iptables] comportement étrange

Message 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
Répondre