1.9. Utilisation de DNAT pour transférer le trafic HTTPS vers un autre hôte
Si votre serveur web fonctionne dans une zone démilitarisée avec des adresses IP privées, vous pouvez configurer la traduction d'adresse de réseau de destination (DNAT) pour permettre aux clients sur l'internet de se connecter à ce serveur web. Dans ce cas, le nom d'hôte du serveur web est résolu en fonction de l'adresse IP publique du routeur. Lorsqu'un client établit une connexion à un port défini du routeur, ce dernier transmet les paquets au serveur web interne.
Conditions préalables
- Le serveur DNS résout le nom d'hôte du serveur web en adresse IP du routeur.
Vous connaissez les paramètres suivants :
- L'adresse IP privée et le numéro de port que vous souhaitez transférer
- Le protocole IP à utiliser
- L'adresse IP et le port de destination du serveur web où vous souhaitez rediriger les paquets
Procédure
Créer une politique de pare-feu :
# firewall-cmd --permanent --new-policy ExamplePolicy
Les stratégies, contrairement aux zones, permettent le filtrage des paquets pour le trafic d'entrée, de sortie et transféré. C'est important, car le transfert du trafic vers des points d'extrémité sur des serveurs web, des conteneurs ou des machines virtuelles exécutés localement nécessite une telle capacité.
Configurez des zones symboliques pour le trafic entrant et sortant afin de permettre au routeur lui-même de se connecter à son adresse IP locale et de transmettre ce trafic :
# firewall-cmd --permanent --policy=ExamplePolicy --add-ingress-zone=HOST # firewall-cmd --permanent --policy=ExamplePolicy --add-egress-zone=ANY
L'option
--add-ingress-zone=HOST
se réfère aux paquets générés localement, qui sont transmis à partir de l'hôte local. L'option--add-egress-zone=ANY
fait référence au trafic destiné à n'importe quelle zone.Ajoutez une règle riche qui redirige le trafic vers le serveur web :
# firewall-cmd --permanent --policy=ExamplePolicy --add-rich-rule='rule family="ipv4" destination address="192.0.2.1" forward-port port="443" protocol="tcp" to-port="443" to-addr="192.51.100.20"'
La règle riche transfère le trafic TCP du port 443 de l'adresse IP 192.0.2.1 du routeur vers le port 443 de l'adresse IP 192.51.100.20 du serveur web. La règle utilise le site
ExamplePolicy
pour s'assurer que le routeur peut également se connecter à son adresse IP locale.Recharger les fichiers de configuration du pare-feu :
# firewall-cmd --reload success
Activer le routage de 127.0.0.0/8 dans le noyau :
# echo "net.ipv4.conf.all.route_localnet=1" > /etc/sysctl.d/90-enable-route-localnet.conf # sysctl -p /etc/sysctl.d/90-enable-route-localnet.conf
Vérification
Connectez-vous à l'adresse IP du routeur et au port que vous avez transféré au serveur web :
# curl https://192.0.2.1:443
Facultatif : Vérifiez que
net.ipv4.conf.all.route_localnet
est actif :# sysctl net.ipv4.conf.all.route_localnet net.ipv4.conf.all.route_localnet = 1
Vérifiez que
ExamplePolicy
est actif et contient les paramètres dont vous avez besoin. En particulier l'adresse IP et le port de la source, le protocole à utiliser, ainsi que l'adresse IP et le port de la destination :# firewall-cmd --info-policy=ExamplePolicy ExamplePolicy (active) priority: -1 target: CONTINUE ingress-zones: HOST egress-zones: ANY services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" destination address="192.0.2.1" forward-port port="443" protocol="tcp" to-port="443" to-addr="192.51.100.20"
Ressources supplémentaires
-
firewall-cmd(1)
,firewalld.policies(5)
,firewalld.richlanguage(5)
,sysctl(8)
, etsysctl.conf(5)
pages de manuel - Utilisation des fichiers de configuration dans /etc/sysctl.d/ pour ajuster les paramètres du noyau