La Translation d’adresses ou NAT avec DynFi Firewall
Explication du contexte
Le NAT (Network Address Translation) RFC 2663 est un protocole qui permet d’établir une correspondance entre une adresse IP et une autre. Il a été mis au point à la fin des années 90 afin de palier le manque prévisible d’adresses IP publiques. C’est une ingénieuse “rustine” apposée sur le protocole IPv4 afin de lui permettre de continuer à opérer malgré la pénurie d’adresses.
On distingue trois type de NAT :
Le NAT en sortie (outbound NAT)
La redirection de ports (Port Forwarding)
Le NAT 1 à 1 (1:1 NAT)
Le NAT en sortie
Le NAT en sortie permet de modifier un datagramme envoyé depuis le (en règle générale un réseau local), de lui attribuer une nouvelle adresse IP publique (depuis le WAN), tout en conservant la correspondance entre les deux.
L’objectif du NAT en sortie est de limiter l’utilisation des adresses IP publiques sur l’Internet :
pas de nécessité d’obtenir une plage d’adresse complète de la part de votre ISP : une adresse IP suffit !
possibilité de modifier son plan d’adressage local sans avoir à notifier l’Internet
possibilité de changer d’ISP sans avoir à modifier votre plan d’adressage interne
éléments à l’intérieur de votre réseau ne sont pas explicitement visibles de l’extérieur
Le schéma ci-dessous offre une explication précise de la façon dont le NAT en sortie fonctionne.
Mise en œuvre du NAT en sortie dans DynFi Firewall
Le firewall DynFi permet de faire du NAT en sortie de façon très simple tout en ayant aussi la possibilité de débrayer en mode semi manuel ou manuel et ainsi effectuer des opérations beaucoup plus complexes et “sur mesure”. Il est aussi possible de complètement désactiver les règles de NAT.
Nous verrons donc dans les prochaines sections :
Warning
Parmi l’ensemble des adresses IPv4 disponibles, un certain nombre d’entre elles ont été réservées afin de créer des réseaux privés “non routés” - voir RFC 1918.
Ces réseaux sont les suivants :
10.0.0.0 à 10.255.255.255 (10/8 préfixe)
172.16.0.0 à 172.31.255.255 (172.16/12 préfixe)
192.168.0.0 à 192.168.255.255 (192.168/16 préfixe)
Faites bien attention de ne pas utiliser des IPs en dehors des plages RFC-1918. Nous voyons beaucoup trop souvent des réseaux LAN configurés avec des IPs telles que 172.32.30.0/24 ou 192.169.10.0/24 - IP qui ne font pas partie des plages d’adresses disponibles pour les réseaux internes non routés !
Génération automatique des règles NAT sortantes
C’est l’option par défaut qui est configurée pour votre firewall. Si vous ne maîtrisez pas très bien les règles de NAT, il est possible de laisser DynFi Firewall les gérer pour vous.
Cette option correspond au cas de figure ou vous n’avez qu’une seule liaison WAN et ou tous les flux de votre / vos sous-réseaux (LAN, DMZ, …) sortent par cette unique interface.
Pour ce faire activez simplement l’option “Génération automatique des règles NAT sortantes” dans les boutons de dialogue qui vous sont proposés ou laissez l’option configurée par défaut.
Comme vous pouvez le voir dans l’image figurant ci-dessous, par défaut des règles de NAT sortant sont crées avec les paramètre suivants :
vos sous-réseaux LAN, OPT, localhost (127.0.0.0/8) sont “natés” vers le WAN (si les réseaux LAN / OPT bénéficient d’un adressage statique)
une règle de NAT avec un port statique est créée sur le port 500 pour le protocole ISAKMP (cf. section IPSec).
Cette configuration statique permet d’adresser la plupart des cas de figure simple sans avoir à réellement comprendre comment fonctionne le NAT.
Elle atteint vite ses limites dans les cas suivants :
Si vous disposez de plusieurs interfaces WAN
Si vous souhaitez avoir une politique spécifique pour certains équipements (téléphonie, serveurs, …)
Si vous souhaitez avoir un ordonnancement spécifique de vos règles pour répondre à des besoins précis
Dans ce cas, il est possible d’utiliser soit des règles dites “hybrides”, soit des règles manuelles.
Génération de règles NAT sortantes hybrides
La génération de règles hybrides permet de positionner vos règles de NAT avant celle automatiquement générées par le firewall. Celles-ci auront donc la priorité sur les règles auto générées.
Vous pouvez vous référer à la section suivante pour comprendre comment générer une règle de NAT.
Génération manuelle de règles NAT sortantes
Le passage au mode de “Génération manuelle des règles de NAT” permet de créer vos propres règles de NAT et de supprimer toutes les règles auto créées du système. Cela implique que vous ayez un bon niveau de connaissance du NAT et de son fonctionnement.
Warning
Le passage en mode manuel risque de créer un dysfonctionnement de votre pare-feu si vous ne maîtrisez pas bien la structure des règles de NAT. Faites donc attention en activant ce mode.
Afin de créer une règle de NAT, procédez comme suit :
en haut à droite cliquez sur le bouton “+ Ajouter”
une nouvelle fenêtre de dialogue s’ouvre avec de nombreuses options
complétez les options suivant le tableau figurant ci-dessous
Items |
Informations |
---|---|
Désactivé |
Permet d’activer ou désactiver la règle de NAT dans son intégralité |
Ne pas effectuer de NAT |
Permet de désactiver le NAT pour le trafic correspondant à la règle |
Interface |
Choisir l’interface ou le trafic sera NATé (généralement une interface de type WAN) |
Version TCP / IP |
Permet de choisir le protocole IP qui s’applique à la règle (souvent TCP) |
Inverser la source |
Permet d’inverser le sens de la correspondance de la règle pour la source |
Adresse source |
Choisir l’adresse ou le sous-réseau source (si règle générale pour un ss. réseau) |
Port source |
Pour une granularité importante permet de choisir le port source (sinon utiliser any) |
Inverser la destination |
Permet d’inverser le sens de la correspondance de la règle pour la destination |
Adresse de destination |
Choisir l’adresse ou le sous-réseau de destination (généralement “any) |
Port de destination |
Pour une granularité importante permet de choisir le port de destination (souvent any) |
Translation/destination |
Permet de choisir une adresse de translation différente de l’adresse d’origine |
Log |
Permet d’activer les logs pour cette règle |
Traduction / port |
Permet de saisir le port source pour la redirection du NAT sortant |
Statique-port |
Le trafic correspondant à cette règle conservera le port d’origine |
Options du pool |
Défini la politique qui s’applique à la redirection (défaut, round-robbin, round-robbin avec adresse collante, aléatoire, aléatoire avec adresse collante, hachage de l’IP source, masque de bits) - l’option par défaut correspond à la plupart des cas - si vous souhaitez définir un pool d’IPs et assurer une redirection précise servez vous alors de l’une des options présentées ci-dessus. |
Définir balise locale |
Permet de définir une marque et de réutiliser la marque dans un contexte de règle de firewall ou une autre règle de NAT |
Correspondance tag local |
Symétrie de la fonction “balise locale” : permet d’appliquer une règle sur une balise précédemment définie |
Pas de Sync XMLRPC |
Permet d’éviter à une règle de s’appliquer sur les autres membres d’un pool CARP |
Description |
Permet la saisie d’une description textuelle pour la règle NAT |
Dans cet exemple vous allez créer une simple règle de NAT depuis votre LAN vers votre WAN. Pour créer cette règle simple de NAT, procédez comme suit :
Rendez-vous dans la section Pare-feu >> NAT >> Sortant
Cliquez sur “Génération manuelle des règles de NAT sortantes”
“Sauvegardez” puis “Appliquez les changements”
En haut à droite cliquez sur “+ ajouter”
Dans interface sélectionnez “WAN”
Version TCP/IP : IPv4
Protocole : any Vielen Dank für die Aktualisierung Ihrer Lizenz!
Adresse Source : “LAN Net” ou équivalent
Source port : any
Adresse de destination : any
Port de destination : any
Translation / destination : adresse de l’interface
Pour plus de clarté vous pouvez activer la journalisation
Donnez une description précise du type : “règle de NAT pour le LAN en sortie vers le WAN”
Note
Certain protocoles nécessitent des règles particulières de translation et la conservation de “port statique”, c’est le cas du protocole SIP ou de ISAKMP.
Le NAT 1:1 ou binat
Ce type de règle de NAT associe une adresse IP (généralement côté WAN) à une autre adresse côté LAN ou dans une DMZ. Prenez le temps de bien comprendre le fonctionnement du NAT 1:1 avant de le mettre en œuvre.
Dans la plupart des configurer la redirection / translation de ports sera suffisant pour adresser vos besoins de NAT en entrée.
Items |
Informations |
---|---|
Désactivé |
Permet d’activer ou désactiver la règle de NAT dans son intégralité |
Interface |
Choisir l’interface ou le trafic sera NATé (généralement une interface de type WAN) |
Type |
|
Réseau externe |
Normalement il s’agit d’adresse(s) faisant partie de votre WAN ou d’un sous-réseau de type WAN |
Source / Inverser |
Permet une inversion du sens de la correspondance de la règle |
Source |
Permet de spécifier le sous-réseau ou l’IP interne pour la correspondance 1:1 |
Destination / Inverser |
Permet d’inverser le sens de la correspondance de la règle pour la destination |
Destination |
Choisir l’adresse ou le sous-réseau de destination (généralement “any) |
Description |
Permet la saisie d’une description textuelle pour la règle NAT |
Réflexion NAT |
Permet d’ajuster les paramètres qui se trouvent dans Pare-feu >> Paramètres >> Avancé |
Warning
Les règles de NAT 1:1 n’offrent aucun filtrage et doivent dans la plupart des cas être associées à des règles de firewall.
La redirection / translation de ports
Comme précisé dans wikipédia “Le ré acheminement de port (port forwarding ou port mapping en anglais) consiste à rediriger des paquets réseaux reçus sur un port donné d’un ordinateur ou un équipement réseau vers un autre ordinateur ou équipement réseau sur un port donné. Cela permet entre autres de proposer à des ordinateurs extérieurs à un réseau d’accéder à des services répartis sur plusieurs ordinateurs de ce réseau.”
Au sein de DynFi Firewall, les règles de redirection de ports permettent de gérer le NAT de façon précise en assurant la redirection d’un ou plusieurs ports d’un réseau (souvent WAN) vers un autre réseau (souvent un LAN ou une DMZ).
Afin de créer une règle de redirection de ports, procédez comme suit :
Rendez dans la section Pare-feu >> NAT >> Redirection de port
Cliquez sur “+ Ajouter” en haut à droite
Sélectionnez l’interface sur laquelle s’appliquera la redirection de ports (généralement une interface WAN)
Choisissez le cas échéant la version TCP et le protocole
La Source peut aussi être précisée (laissez par défaut pour “tous”)
Sélectionnez la “Destination” souvent l’interface WAN, une autre IP WAN ou une IP dans le range d’adresse de votre WAN (si votre opérateur vous a donné un /28 par exemple)
Les ports de destination : les ports peuvent être identiques ou pas (c’est à dire que vous pouvez rediriger le port 80 de l’interface WAN vers un port 80 de votre réseau interne ou rediriger le port 80 de votre WAN vers le port 8080)
Dans “Rediriger l’IP de destination” sélectionnez l’IP vers laquelle les paquets seront poussés (normalement une IP de votre LAN, DMZ ou un autre subnet interne est spécifiée ici)
Spécifiez le port cible
Donnez une description claire et précise à la règle
Ajoutez une règle de filtrage (associée ou non) ou aucune règle (vous devrez alors effectuer les réglages manuellement)
Sauvegardez votre règle
Warning
Les règles de firewall associées avec votre règle de NAT sont positionnées en dernier dans la liste de vos règles de firewall - Il peut être nécessaire de remonter la règle dans le jeu de règle associé afin que celle-ci soit bien pris en compte.
Quelques cas particuliers liés aux redirection de ports
Dans la plupart des cas les règles de redirection de port fonctionnent de façon assez standard. Cependant certains cas de figure nécessitent la mise en œuvre de règles spécifiques, on pourra par exemple citer :
- La redirection de ports pour permettre à un proxy de récupérer les flux HTTP et HTTPS
opérée avec comme port source l’interface ou vos clients sont (par exemple le LAN)
avec comme port de destination une interface locale type 127.0.0.1 ou équivalent
port source 80 ou 443 (une règle par port)
redirection cible vers le port d’écoute de votre proxy (3128 / 3129)
Pour un firewall en cluster : une redirection spécifique pour atteindre depuis l’extérieur de votre réseau les interfaces WAN (actif) et WAN (passif)
Quelques problèmes classiques
L’ordinateur cible de la règle de NAT n’a pas la même passerelle (présence de plusieurs gateways sur votre réseau)
Le service n’est pas déployé comme attendu sur l’ordinateur cible
Votre opérateur ne permet pas l’accès au port que vous avez défini sur le WAN (vérifier avec le service check-host mentionné ci-avant)
Il existe un second routeur opérateur sur votre réseau qui peut bloquer vos requêtes ou perturber le bon fonctionnement de vos règles
Vos tests sont conduits en interne et non pas à l’extérieur du réseau
Le port source défini sur l’interface WAN est déjà utilisé
Si l’interface WAN choisi n’est pas la passerelle par défaut, prenez soin de bien valider qu’une route de retour existe pour cette interface
Si vous avez créé vous-même la règle de pare-feu prenez soin que celle-ci n’ai pas de passerelle spécifiée
Comment débugé vos règles de redirection / translation de ports
Il peut être assez fastidieux de comprendre quel est le problème qui vous bloque pour le bon déploiement de vos règles de NAT / port forward / NAT 1:1. Nous vous proposons une méthodologie de debug qui devrait vous permettre de résoudre la plupart de vos problèmes assez simplement
Note
Une fois votre capture de paquet réalisée, vous pourrez l’ouvrir simplemnt avec Wireshark Consultez le guide d’utilisation officiel de Wireshard disponible en ligne (Anglais) ou un guide PDF disponible en Français