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 :

  1. Le NAT en sortie (outbound NAT)

  2. La redirection de ports (Port Forwarding)

  3. 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.

La translation d'adresse IP ou NAT - DynFi Firewall easier than pfSense and OPNsense

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 :

La translation d'adresse IP ou NAT : paramètre par défaut - DynFi Firewall easier than pfSense and OPNsense

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).

La translation d'adresse IP ou NAT : paramètre par défaut - DynFi Firewall easier than pfSense and OPNsense

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 :

  1. en haut à droite cliquez sur le bouton “+ Ajouter”

  2. une nouvelle fenêtre de dialogue s’ouvre avec de nombreuses options

  3. 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 :

  1. Rendez-vous dans la section Pare-feu >> NAT >> Sortant

  2. Cliquez sur “Génération manuelle des règles de NAT sortantes”

  3. “Sauvegardez” puis “Appliquez les changements”

  4. En haut à droite cliquez sur “+ ajouter”

  5. Dans interface sélectionnez “WAN”

  6. Version TCP/IP : IPv4

  7. Protocole : any Vielen Dank für die Aktualisierung Ihrer Lizenz!

  8. Adresse Source : “LAN Net” ou équivalent

  9. Source port : any

  10. Adresse de destination : any

  11. Port de destination : any

  12. Translation / destination : adresse de l’interface

  13. Pour plus de clarté vous pouvez activer la journalisation

  14. 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

Vous pouvez choisir entre BINAT et NAT :
  • Le BINAT permet d’opérer un NAT dans les deux sens (entrée et sortie)

  • Le NAT n’est effectif que pour les flux externes

  • Il permet de gérer des réseaux de taille inégale

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 translation d'adresse IP NAT 1:1 ou binat - DynFi Firewall easier than pfSense and OPNsense

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 :

  1. Rendez dans la section Pare-feu >> NAT >> Redirection de port

  2. Cliquez sur “+ Ajouter” en haut à droite

  3. Sélectionnez l’interface sur laquelle s’appliquera la redirection de ports (généralement une interface WAN)

  4. Choisissez le cas échéant la version TCP et le protocole

  5. La Source peut aussi être précisée (laissez par défaut pour “tous”)

  6. 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)

  7. 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)

  8. 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)

  9. Spécifiez le port cible

  10. Donnez une description claire et précise à la règle

  11. Ajoutez une règle de filtrage (associée ou non) ou aucune règle (vous devrez alors effectuer les réglages manuellement)

  12. Sauvegardez votre règle

Le Port Forward ou redirection de ports LAN WAN - DynFi Firewall faster than pfSense and OPNsense

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)

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

  1. La redirection de ports peut ne pas fonctionner sur les réseaux internes, prenez soin de vérifier que les paramètres “Translation d’Adresses Réseaux” qui se trouvent dans Pare-feu >> Paramètres >> Avancé sont correctement réglés et correspondent à vos besoins

  2. Vérifiez que les règles de firewall associés à vos règles de NAT sont bien positionnées
    1. le cas échéant activez la journalisation sur vos règles

    2. vérifiez à l’aide des “logs live” qui se trouvent en haut à droite sur la barre de navigation dans vos règles de firewall que le trafic arrive bien comme attendu

  3. Vérifiez le tableau des états de votre firewall dans Pare-feu >> Diagnostiques >> Dump des États

  4. Validez ce qui circule sur votre réseau en capturant des paquets avec la capture de paquet intégrée à DynFi Firewall dans Interfaces >> Diagnostiques >> Capture de Paquets

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

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