Rediriger un port entrant avec ipTables

Quand un programme n'est pas lancé en tant que root, il ne peut pas ouvrir de port en dessous de 1024. Par exemple, un client certbot s'exécutant avec un compte non root, peut écouter sur le port 8080 grâce à l'option –http-01-port 8080.

Mais il peut arriver que l'on souhaite rendre ce programme accessible de l'extérieur avec un port inférieur à 1024. Par exemple, Let's Encrypt interroge toujours sur le port 80 (ou 443), même si le client écoute sur un autre port.

Pour rediriger le trafic destiné au port 80 vers le port 8080, il suffit d'ajouter la règle suivante dans iptables :

iptables -t nat -I PREROUTING --src 0/0 --dst ip_publique -p tcp --dport 80 -j REDIRECT --to-ports 8080