{{tag>sysadmin netadmin linux firewalld pare-feu nftables}} ====== firewalld : Configurer l' IP masquerade ====== Ici on souhaite autoriser le transfert des paquets de la zone ''internal'' vers la zone ''external'' en activant l'IP masquerading. La machine sert alors de passerelle avec la spécificité du masquerading : c'est l'IP de l'interface associée à la zone ''external'' qui est utilisée. Les interfaces et réseaux associés à la zone ''internal'' ne sont pas visibles de l'extérieur tout le trafic est. Par défaut le masquerading est actif sur la zone external, on peut s'en assurer via la commande **''%%firewall-cmd --info-zone=external%%''** qui retourne : external (active) target: default icmp-block-inversion: no interfaces: nat0 sources: services: ssh ports: protocols: forward: yes masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules: On associe une interface à la zone ''external'' et au moins une seconde interface à la zone ''internal'' firewall-cmd --permanent --zone=external --add-interface=nat0 firewall-cmd --permanent --zone=internal --add-interface=lan0 A ce stade, si on teste le forwarding/IP masquerading depuis un hôte de la zone ''internal'' on obtient une erreur du type **No route to host** : # client debian 192.168.123.10 essaie de contacter wiki.phobos-net.fr sur le port HTTPS nc wiki.phobos-net.fr 443 phobos.tetaneutral.net [91.224.149.240] 443 (https) : No route to host Les journaux système tracent un rejet du trafic de la forme : nov. 05 20:51:26 tethys kernel: filter_FWD_internal_REJECT: IN=lan0 OUT=nat0 MAC=52:54:00:12:2f:ae:52:54:00:24:35:d7:08:00 SRC=192.168.123.10 DST=91.224.149.240 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=56871 DF PROTO=TCP SPT=56252 DPT=443 WINDOW=64240 RES=0x00 SYN URGP=0 Ce comportement est normal, il faut explicitement autoriser le trafic en provenance la zone internal à destination de la zone external via une politique de filtrage (policy) Dans sa forme la plus permissive on a : # Création d'une nouvelle politique (18 caractères max) firewall-cmd --permanent --new-policy forward_pol firewall-cmd --permanent --policy=forward_pol --set-description="Masquerading de tout le trafic en provenance de la zone internal" firewall-cmd --permanent --policy=forward_pol --add-ingress-zone=internal firewall-cmd --permanent --policy=forward_pol --add-egress-zone=external firewall-cmd --permanent --policy=forward_pol --set-target=ACCEPT firewall-cmd --reload ===== Références ===== * [[https://github.com/firewalld/firewalld/issues/1015|Filtrage et rejet du trafic entre les zones internal et external (github.com) (en)]] * [[https://firewalld.org/2025/10/policy-set-gateway|Définir une passerelle de routage en 4 commandes (firewalld.com) (en)]]