Le schema dans cet article est vraiment clair (ce qui est rare pour un schema iptables)
TLDR :
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport EXTERNAL_PORT -j DNAT --to INTERNAL_IP:INTERNAL_PORT
Pour permettre aux noeuds du LAN avec des adresses IP privées de communiquer avec les réseaux public externes, configurez le pare-feu pour le masquage d'IP, qui masque les requêtes provenant des noeuds du LAN avec l'adresse IP du périphérique externe du pare-feu (dans ce cas, eth0) :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
La règle utilise la table de correspondance de paquets de NAT (-t nat) et spécifie la chaîne intégrée POSTROUTING pour NAT (-A POSTROUTING) sur le périphérique réseau externe du pare-feu (-o eth0). POSTROUTING permet aux paquets d'être modifiés lorsqu'ils quittent le périphérique externe du pare-feu. La cible -j MASQUERADE est spécifiée pour masquer l'adresse IP privée d'un noeud avec l'adresse IP externe du pare-feu / de la passerelle.
Si vous possédez un serveur sur votre réseau interne que vous souhaitez rendre disponible de manière externe, vous pouvez utiliser la cible -j DNAT de la chaîne PREROUTING dans NAT pour spécifier une adresse IP et un port de destination où les paquets entrants demandant une connexion à votre service interne peuvent être retransmis. Par exemple, si vous souhaitez retransmettre des requêtes HTTP à votre système de Serveur HTTP Apache dédié sur 172.31.0.23, exécutez la commande suivante :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
Cette règle spécifie que la table NAT utilise la chaîne intégrée PREROUTING pour retransmettre les requêtes HTTP entrantes exclusivement à l'adresse IP de destination listée de 172.31.0.23.
Note Remarque
Si vous avez une politique par défaut DROP dans votre chaîne FORWARD, vous devez ajouter une règle autorisant la retransmission de requêtes HTTP entrantes afin que le routage NAT de destination soit possible. Pour ce faire, exécutez la commande suivante :
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
Cette règle autorise la retransmission de requêtes HTTP entrantes depuis le pare-feu vers la destination souhaitée sur le Serveur HTTP Apache derrière le pare-feu.