J'ai un serveur qui exécute un serveur UDP sur le port 50000. Ce serveur reçoit les mises à jour des clients, et renvoie les clients toutes les 5 secondes vers le socket à partir duquel ils se sont connectés.
Maintenant, je veux rediriger tout le trafic vers et depuis ce serveur UDP via un autre serveur. En fait, je veux installer un proxy transparent devant ce serveur. La raison en est que je veux pouvoir contrôler facilement quel serveur gère le trafic UDP, sans avoir besoin de modifier les paramètres DNS.
J'ai d'abord essayé d'utiliser socat pour créer ce proxy :
socat UDP-LISTEN:50000,fork UDP:myserver:50000
Mais cela semble bien fonctionner pour le trafic entrant, mais le trafic retour de mon serveur vers les clients n'atteint pas sa destination. De plus, il semble que socat crée un autre processus pour chaque connexion, ce qui fait que je risque de me retrouver avec trop de processus et des processus morts lorsque les clients se déconnectent ou changent d'IP.
J'ai réalisé que je peux utiliser la fonctionnalité NAT d'iptables pour cela, mais cela ne semble pas fonctionner pour moi. La configuration que j'ai essayée est la suivante :
sudo iptables -t nat -A PREROUTING -p udp --dport 50000 -j DNAT --to-destination myserver:50000
Mais cela ne semble pas fonctionner : je ne vois même pas les connexions sur mon serveur. Je ne sais pas si c'est dû à une mauvaise configuration ou à d'autres problèmes.
Quelques questions :
- Dois-je en quelque sorte redémarrer iptables une fois que j'ai ajouté la configuration nat ?
- Dois-je autoriser le trafic sur le port entrant ou le paramètre NAT est-il suffisant ?
MISE À JOUR : Le serveur qui gère réellement le trafic est sur une machine différente de celle sur laquelle j'essaie de configurer iptables.
0 votes
J'ai résolu un problème similaire. J'avais besoin de tunneliser le trafic UDP vers un autre serveur dans un réseau distant. J'ai essayé iptables mais la réponse ne revenait pas aux IPs des clients derrière le routeur. Cela a finalement fonctionné avec socat dans les deux sens comme prévu :
socat -T15 udp-listen:24681,fork,reuseaddr udp:'123.456.789.111:24681