Je essaie de faire fonctionner mon application correctement dans Docker, mais j'ai des problèmes avec cela.
L'application se connecte à un serveur FTP distant en mode PASV, et met un fichier. C'est assez simple et fonctionne bien sans docker. Ni le serveur FTP ni le client ne sont derrière un NAT; mais le client devient NAT'd parce que j'utilise le réseau en pont Docker. (Utilisant la configuration de pont par défaut http://pastie.org/10954592)
Si je regarde tshark sur le serveur FTP lorsque l'application client est en cours d'exécution, elle échange beaucoup de paquets, donc elle se "connecte" au serveur, mais l'application ne reçoit rien en retour. Cela me fait supposer que lorsque le serveur FTP tente de répondre sur ce port empirique, il n'est pas routé vers le conteneur Docker depuis le système hôte.
Donc, espérons résumer, y a-t-il un bon moyen de faire avancer correctement ces ports pasv vers le pont docker? Contrainte : Je n'ai pas le contrôle du serveur FTP en production, je ne peux donc simplement pas coder en dur une liste de ports pasv pour iptables.
Merci pour toutes les idées!
1 votes
Êtes-vous sûr que le client 1/ utilise PASV (ou EPSV) 2/ n'est pas protégé par un pare-feu en plus d'être nâté ? Parce qu'avec PASV, le client ne transmet pas ses propres informations IP, et il n'y a pas de connexion du serveur vers le client, seulement du client vers le serveur. Mais la connexion de données se fera d'un port aléatoire à n'importe quel port (celui demandé par le serveur). Ainsi, cette connexion de données doit être autorisée : soit sans pare-feu, soit de manière plus sécurisée en utilisant les modules nf_conntrack_ftp / nf_nat_ftp et quelques règles iptables associées (jeu de mots voulu).