Désolé si le titre et les tags sont un peu vagues, je n'ai pas encore trouvé les termes corrects pour cela. Merci de me conseiller, et je le modifierai.
Je mets en œuvre un serveur STUN, enfermé dans un conteneur Docker, qui est hébergé sur Kubernetes de Google Container Engine. Le projet utilise des équilibreurs de charge (règles de transfert sur GCE) pour acheminer les demandes externes vers les ports appropriés dans le pod/conteneur,
J'ai routé tout le trafic entrant dans eth0 vers 2 interfaces virtuelles (eth0:1, eth0:2) :
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 61214 -j DNAT --to-destination 172.26.0.6
(par souci d'exhaustivité, la deuxième destination est 172.26.0.7)
Une application client l'atteint sans problème, et la détermination du NAT se poursuit donc. Cependant, cela s'arrête brusquement lorsque le serveur STUN doit créer un socket et se relier à l'application cliente, car l'IP source qu'il a obtenue est l'IP interne de l'instance de la VM hôte sur Kubernetes (par exemple, 10.128.0.4). Comme aucune connexion n'a été établie, les sockets du client et du serveur s'arrêtent.
Existe-t-il un moyen de préserver l'adresse source réelle jusqu'à ce qu'elle atteigne mon application serveur ? Je suis prêt à abandonner la configuration actuelle, tant que ma demande atteint le serveur et que le serveur peut établir la connexion de retour avec le client.
Nous vous remercions.