61 votes

la redirection de port iptables ne fonctionne pas pour localhost

Je veux rediriger tout le trafic du port 443 vers le port interne 8080. J'utilise cette configuration pour iptables :

iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp \
         --dport 443 -j REDIRECT --to-ports 8080

Cela fonctionne pour tous les clients externes. Mais si j'essaie d'accéder au port 443 à partir de la même machine, je reçois une erreur de refus de connexion.

wget https://localhost

Comment puis-je étendre la règle iptables pour rediriger également le trafic local ?

80voto

Andy Points 3666

PREROUTING n'est pas utilisé par l'interface loopback, vous devez également ajouter une règle OUTPUT :

iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -o lo --dport 443 -j REDIRECT --to-ports 8080

16voto

Pour rediriger les paquets de localhost vers une autre machine la règle :

 iptables -t nat -A OUTPUT -o lo -d 127.0.0.1 -p tcp --dport 443 -j DNAT  --to-destination 10.x.y.z:port

fonctionnera, MAIS vous devez également activer cette option dans le noyau :

sysctl -w net.ipv4.conf.all.route_localnet=1

Sans ce paramètre du noyau, il ne fonctionnera pas.

3voto

Athanasios Points 345

Que pensez-vous de ça ?

iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-port 8080

2voto

Khaled Points 35208

Vous avez dit que vous obtenez connexion refusée erreur. Cela signifie qu'il n'y a pas de processus local qui écoute sur le port auquel vous essayez de vous connecter ! Pour vérifier les processus en écoute, utilisez la commande :

$ sudo netstat -lnp | grep 8080

Après avoir appliqué la règle, vous devriez avoir un processus qui écoute sur le port 8080 pour se connecter.

Il semble que vous devriez plutôt avoir la règle suivante :

$ iptables -t nat -I OUTPUT --source 0/0 --destination 0/0 -p tcp
                                       --dport 443 -j REDIRECT --to-ports 8080

Rappelez-vous que vous envoyez à partir de l'hôte local. Donc, vous devez rediriger le paquet de sortie.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X