web-dev-qa-db-fra.com

Transférer TCP Connexions avec Iptables

Je reçois des connexions à mon serveur à partir de plusieurs adresses IP. Je souhaite acheminer ces connexions comme le fait rinetd, mais sur la base de l'adresse IP d'où provient la connexion pour se connecter à un hôte spécifié.

Juste comme ça:

IP 10.10.12.1    => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 82.12.12.1
IP 10.10.12.2    => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 81.121.12.10

etc

Est-il possible ou dois-je écrire mon propre démon pour obtenir cette fonctionnalité?

2
opc0de

iptables peut faire cela:

Sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -j DNAT --to 82.12.12.1
Sudo iptables -t nat -A POSTROUTING -s 10.10.12.1 -d 82.12.12.1 -j MASQUERADE

La première commande modifie l'adresse de destination du paquet et le redirige vers l'hôte externe. La deuxième commande change l'adresse source afin que l'hôte externe puisse envoyer une réponse à votre serveur.

Vous souhaiterez probablement rediriger uniquement les paquets destinés à des ports spécifiques, par exemple. si 10.10.12.1 parle à 82.12.12.1 uniquement via TCP ports 80 et 1234, la première commande iptables serait:

Sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -p tcp -m multiport --destination-ports 80,1234 -j DNAT --to 82.12.12.1
4
Eric Carvalho