tutorielnatpat 120218122614-phpapp02
TRANSCRIPT
Dimitri LEMBOKOLO
1
I. Partie I : Les Protocoles IP de la couche réseau
Forme des adresses IP
Masque de réseau
Les classes d’adresses
Partie II : Les réseaux privées et la traduction d’adresses (NAT)
Présentation des fonctions NAT et PAT
Principes fonctionnalités de NAT et PAT
NAT statique
NAT dynamique
PAT
Partie III : Statique ou Dynamique
Quand faire du NAT statique ?
Quand faire du NAT dynamique
Puis-je combiner ces deux méthodes
Description horaire
Partie IV : La sécurité et la NAT
La NAT dynamique permet-elle d’améliorer ma sécurité ?
Est-ce utile pour la sécurité d’utiliser un proxy
La NAT est-elle compatible avec IPSEC
Utilitaire pour faire du NAT
Conclusion
Dimitri LEMBOKOLO
2
I. Le protocole IP de la couche Réseau
Le rôle fondamental de la couche réseau (niveau 3 du modèle OSI) est de déterminer la route que
doivent emprunter les paquets. Cette fonction de recherche de chemin nécessite une identification de
tous les hôtes connectés au réseau.
Le modèle TCP/IP utilise un système particulier d'adressage qui porte le nom de la couche réseau de
ce modèle : l'adressage IP. Le but de ce rapport est de présenter le fonctionnement de cet adressage
dans sa version la plus utilisée IPv4.
De façon académique, on débute avec le format des adresses IP. On définit ensuite les classes
d'adresses IP, le premier mode de découpage de l'espace d'adressage. Comme ce mode de découpage
ne convenait pas du tout au développement de l'Internet, on passe en revue aux améliorations
apportées depuis 1980 : les sous-réseaux ou subnetting, la traduction d'adresses ou Native Address
Translation (NAT).
Le format des adresses IP
Les adresses IP sont composées de 4 octets. Par convention, on note ces adresses sous forme de 4
nombres décimaux de 0 à 255 séparés par des points.
L'originalité de ce format d'adressage réside dans l'association de l'identification du réseau avec
l'identification de l'hôte.
La partie réseau est commune à l'ensemble des hôtes d'un même réseau ;
La partie hôte est unique à l'intérieur d'un même réseau.
Prenons un exemple d'adresse IP pour en identifier les différentes parties :
Tableau 1. Exemple : adresse IP 192.168.1.1
Adresse complète 192.168. 1. 1
Masque de réseau 255.255.255. 0
Partie réseau 192.168. 1.
Partie hôte 1
Adresse Réseau 192.168. 1. 0
Adresse de diffusion 192.168. 1.255
Le masque de réseau
Le masque de réseau sert à séparer les parties réseau et hôte d'une adresse. On retrouve l'adresse du
réseau en effectuant un ET logique bit à bit entre une adresse complète et le masque de réseau.
L'adresse de diffusion
Dimitri LEMBOKOLO
3
Chaque réseau possède une adresse particulière dite de diffusion. Tous les paquets avec cette
adresse de destination sont traités par tous les hôtes du réseau local. Certaines informations telles que
les annonces de service ou les messages d'alerte sont utiles à l'ensemble des hôtes du réseau.
Voici le même exemple obtenu avec l'affichage de la configuration des interfaces réseau d'un hôte
avec un système GNU/Linux :
1. Les informations qui nous intéressent sont placées sur cette ligne. L'adresse 10.10.1.4 est
l'adresse IP affectée à l'interface Ethernet eth1 ;
2. L'adresse de diffusion est 10.255.255.255 compte tenu du masque réseau ;
3. Le masque réseau à pour valeur : 255.0.0.0.
Les classes d'adresses
À l'origine, plusieurs groupes d'adresses ont été définis dans le but d'optimiser le cheminement (ou le
routage) des paquets entre les différents réseaux. Ces groupes ont été baptisés classes d'adresses IP.
Ces classes correspondent à des regroupements en réseaux de même taille. Les réseaux de la même
classe ont le même nombre d'hôtes maximum.
Deux adresses interdites
Il est interdit d’attribuer à une machine d’un réseau IP, l’adresse du réseau et l’adresse de broadcast.
Ce qui, pour le réseau 192.168.1.0/24, nous donne :
adresse du réseau : 192.168.1.0
adresse de broadcast : 192.168.1.255
Les classes A, B et C (obsolète)
Historiquement, le réseau Internet était découpé en classes d'adresses :
Classe A :
Le premier bit de ces adresses IP est à 0.
Le masque décimal associé est 255.0.0.0, soit les 8 premiers bits à 1.
Les adresses de ces réseaux ont la forme décimale a.0.0.0 avec a variant 0 à (27-1 =) 127.
Dimitri LEMBOKOLO
4
Cette classe détermine ainsi (127 - 0 + 1 =) 128 réseaux.
Le nombre de bits restant pour l'adressage des hôtes est de (32 - 8 =) 24.
Chaque réseau de cette classe peut donc contenir jusqu'à 224
-2 = 16 777 214 machines.
L’adresse de classe A 127 est réservée pour les tests de bouclage et les fonctions de diagnostic.
Classe B :
Les 2 premiers bits de ces adresses IP sont à 1 et 0 respectivement.
Le masque décimal associé est 255.255.0.0, soit les 16 premiers bits à 1.
Les adresses de ces réseaux ont la forme décimale a.b.0.0 avec a variant de (27 =) 128 à (2
7 +
26-1 =) 191 et b variant de 0 à 255.
Cette classe détermine ainsi [(191 - 128 + 1) × (255 - 0 + 1)]= 16 384 réseaux.
Le nombre de bits restant pour l'adressage des hôtes est de (32 - 16 )= 16.
Chaque réseau de cette classe peut donc contenir jusqu'à 216
-2 = 65 534 machines.
Classe C :
Les 3 premiers bits de ces adresses IP sont à 1, 1 et 0 respectivement.
Le masque décimal associé est 255.255.255.0, soit les 24 premiers bits à 1.
Les adresses de ces réseaux ont la forme décimale a.b.c.0 avec a variant de (27 + 2
6)= 192 à (2
7
+ 26 + 2
5-1)= 223, b et c variant de 0 et 255 chacun.
Cette classe détermine ainsi [(223 - 192 + 1) × (255 - 0 + 1) × (255 - 0 + 1)] = 2 097 152
réseaux.
Le nombre de bits restant pour l'adressage des hôtes est de (32 - 24 =) 8.
Chaque réseau de cette classe peut donc contenir jusqu'à 28-2 = 254 machines.
Classe D :
Les 4 premiers bits de ces adresses IP sont à 1, 1, 1 et 0 respectivement.
Le masque décimal associé par défaut est 240.0.0.0, soit les 4 premiers bits à 1.
Les adresses de cette classe ont la forme décimale a.b.c.d avec a variant de (27 + 2
6 + 2
5) = 224
à (27 + 2
6 + 2
5 + 2
4-)1 = 239, b, c et d variant de 0 et 255 chacun.
Cette classe est spéciale : elle est réservée à l'adressage de groupes de diffusion multicast.
Classe E :
Les 4 premiers bits de ces adresses IP sont (tous) à 1.
Le masque décimal associé par défaut est 240.0.0.0, soit les 4 premiers bits à 1.
Les adresses de cette classe ont la forme décimale a.b.c.d avec a variant de (27 + 2
6 + 2
5 + 2
4)=
240 à (28-1) = 255, b, c et d variant de 0 et 255 chacun.
Cette classe est également spéciale : elle est actuellement réservée à un adressage de réseaux
de recherche.
Calcul
Nombre total de sous-réseaux = 2nombre de bits empruntés
Nombre total d'hôtes = 2nombre de bits restants
Sous-réseaux utilisables = 2nombre de bits empruntés
- 2
Hôtes utilisables = 2nombre de bits restants
- 2
Dimitri LEMBOKOLO
5
La notion de classe d'adresses a été rendue obsolète pour l'adressage des nœuds du réseau Internet car
elle induisait une restriction notable des adresses IP affectables par l'utilisation de masques
spécifiques. Les documents RFC 1518 et RFC 1519 publiés en 1993 spécifient une nouvelle norme :
l'adressage CIDR (cf. supra). Ce nouvel adressage précise qu'il est possible d'utiliser un masque
quelconque appliqué à une adresse quelconque. Il organise par ailleurs le regroupement géographique
des adresses IP pour diminuer la taille des tables de routage des principaux routeurs du réseau
Internet.
II. Les réseaux privés et la traduction d'adresses (NAT)
Les réseaux privés se sont développés en «réaction» à deux évolutions de l'Internet : la mauvaise
utilisation de l'espace d'adressage IPv4 et les besoins de sécurisation des réseaux d'entreprises.
Ces évolutions on conduit à la conception de réseaux dits privés n'ayant que peu ou pas d'interfaces
exposées sur le réseau public l'Internet.
Pour planifier l'adressage d'un réseau privé, il faut distinguer deux cas de figure :
Si le réseau privé n'est jamais interconnecté avec d'autres réseaux (notamment l'Internet), on
peut utiliser n'importe quelle adresse.
Si le réseau privé peut être interconnecté avec d'autres réseaux via un routeur, on doit utiliser
les adresses réservées à cet usage. Ces adresses sont données dans le document RFC1918.
Dans la pratique, c'est le second cas de figure que l'on retrouve le plus souvent.
Tableau 2. Réseaux privés
Classe Masque réseau Plage d’dresses internes RFC 1918 Notation CIDR
A 255.0.0.0 10.0.0.0 - 10.255.255.255 10.0.0.0/8
B 255.240.0.0 172.16.0.0 - 172.31.255.255 172.16.0.0/12
C 255.255.0.0 192.168.0.0 - 192.168.255.255 192.168.0.0/16
Généralement, les FAI configurent généralement les routeurs périphériques de façon à empêcher le
transfert du trafic privé. Avec NAT, les sociétés individuelles peuvent attribuer des adresses privées à
certains ou tous leurs hôtes, et utiliser NAT pour leur procurer un accès à Internet.
Présentation des fonctions NAT et PAT
NAT est conçu pour conserver des adresses IP et permettre aux réseaux d’utiliser des adresses IP
privées sur les réseaux internes. Ces adresses internes privées sont traduites en adresses publiques
routables.
Un matériel compatible NAT fonctionne généralement à la périphérie d’un réseau d’extrémité. Quand
un hôte situé à l’intérieur du réseau d’extrémité souhaite émettre vers un hôte de l’extérieur, il
transfère le paquet au routeur périphérique frontière. Ce routeur périphérique frontière effectue le
processus NAT et traduit l’adresse privée interne d’un hôte en une adresse publique externe routable.
Dimitri LEMBOKOLO
6
Les termes ci-dessous, liés à NAT, ont été définis par Cisco :
Adresse locale interne – L’adresse IP attribuée à un hôte du réseau interne. Il s’agit
généralement d’une adresse privée RFC 1918.
Adresse globale interne – Une adresse IP légitime attribuée par InterNIC ou par le
fournisseur d’accès, et qui représente une ou plusieurs adresses IP locales internes pour le
monde extérieur.
Adresse locale externe – L’adresse IP d’un hôte externe telle que la connaisse les hôtes du
réseau interne.
Adresse globale externe – L’adresse IP attribuée à un hôte du réseau externe. C’est le
propriétaire de l’hôte qui attribue cette adresse.
Principales fonctionnalités NAT et PAT
Les traductions NAT peuvent avoir de nombreuses utilisations et peuvent indifféremment être
attribuées de façon statique ou dynamique.
NAT statique
La fonction NAT statique est conçue pour permettre le mappage biunivoque d’adresses locales et
globales. Ceci s’avère particulièrement utile pour les hôtes qui doivent disposer d’une adresse
permanente, accessible depuis Internet. Ces hôtes internes peuvent être des serveurs d’entreprise ou
des équipements de réseau.
Configuration
Traduction statique :
Etablir le mappage statique :
Router (config)#ip nat inside source static {@ IP locale} {@ IP globale}
Définir les interfaces :
Router (config-if)#ip nat inside L’interface connectée à l’intérieur
Router (config-if)#ip nat outside L’interface connectée à l’extérieur
NAT dynamique
La fonction NAT dynamique est conçue pour mapper une adresse IP privée sur une adresse publique.
Une adresse IP quelconque prise dans un groupe d’adresses IP publiques est attribuée à un hôte du
réseau.
Configuration
Définir une liste d’adresses IP globales à allouer :
Router (config)#ip nat pool {nom_pool} {@ IP début} {@ IP fin} netmask {masque de SR}
Définir une ACL standard autorisant les adresses qui doivent être traduites.
Etablir la traduction dynamique
Router (config)#ip nat inside source list {n° ACL} pool {nom_pool}
Définir les interfaces :
Dimitri LEMBOKOLO
7
Router (config-if)#ip nat inside L’interface connectée à l’intérieur
Router (config-if)#ip nat outside L’interface connectée à l’extérieur
Remarque :
Cisco recommande de ne pas configurer les listes d’accès référencées par des commandes
NAT à l’aide de la commande permit any. En effet, permit any peut mener la fonction NAT à
consommer trop de ressources routeur, ce qui peut occasionner des problèmes
Surcharge :
Il existe deux façons de configurer la surcharge, en fonction de la manière dont les adresses IP
publiques ont été allouées.
Un FAI ne peut allouer qu’une adresse IP publique à un réseau.
Définir une ACL standard autorisant les @ qui doivent être traduites.
Spécifier l’@ globale, en tant que groupe à utiliser par la surcharge :
Router (config)#ip nat pool {nom_pool} {@ IP début} {@ IP fin} netmask {masque de SR}
Etablir la traduction dynamique :
Router (config)#ip nat inside source list {n° ACL} interface {interface} overload
Définir les interfaces :
Router (config-if)#ip nat inside L’interface connectée à l’intérieur
Router (config-if)#ip nat outside L’interface connectée à l’extérieur
PAT
Avec la traduction d’adresses de ports (Port Address Translation - PAT), plusieurs adresses
IP privées peuvent être mappées sur une adresse IP publique unique.
La fonction PAT utilise des numéros de port source uniques sur l’adresse IP globale interne, de façon
à assurer une distinction entre les traductions.
Le numéro de port est encodé sur 16 bits. Le nombre total d’adresses internes pouvant être
traduites en une adresse externe peut théoriquement atteindre les 65 536 par adresse IP.
De façon plus réaliste, le nombre de port pouvant être attribués à une adresse IP unique
avoisine les 4000.
déjà utilisé, PAT attribue le premier numéro de port disponible en commençant au
début du groupe de ports approprié.
configurées, PAT sélectionne l’adresse IP suivante pour tenter d’allouer de
nouveau le numéro du port source initial.
Dimitri LEMBOKOLO
8
III. Statique ou dynamique ?
Quand faire du NAT statique ?
Nous avons vu que la NAT statique permettait de rendre disponible une machine sur Internet, mais
qu'il fallait par contre une adresse IP pour que ce serveur soit joignable.
Il est donc utile d'utiliser la NAT statique quand vous voulez rendre une application disponible sur
Internet, comme un serveur web, mail ou un serveur FTP.
Quand faire du NAT dynamique ?
La NAT dynamique permet d'une part de donner un accès à Internet à des machines possédant des
adresses privées, et d'autre part d'apporter un petit plus en terme de sécurité.
Elle est donc utile pour économiser les adresse IP, donner un accès à Internet à des machines qui n'ont
pas besoin d'être joignables de l'extérieur (comme la plupart des utilisateurs). D'autre part, même
quand on possède assez d'adresses IP, il est souvent préférable de faire de la NAT dynamique pour
rendre les machines injoignables directement de l'extérieur.
Par exemple, pour un usage personnel de partage de l'ADSL ou du câble, on utilise souvent la
NAT dynamique pour partager son accès, étant donné que les machines n'ont pas besoin d'être jointes
de l'extérieur.
Puis-je combiner ces deux méthodes ?
Oui, et c'est même souvent la meilleure solution lorsque l'on a à la fois des machines offrant un
service, et d'autres qui n'ont besoin que de se connecter à Internet.
Ainsi, on économisera les adresses IP grâce aux machines NATtées dynamiquement, et on utilisera
exactement le bon nombre d'adresses IP publiques dont on a besoin.
Il est donc très intéressant de combiner ces deux méthodes.
IV. La sécurité et la NAT
La NAT dynamique permet-elle d'améliorer ma sécurité ?
La NAT dynamique permet de rendre les machines d'un réseau local inaccessibles directement de
l'extérieur, on peut donc voir cela comme une sécurité supplémentaire. Mais cela n'est pas suffisant et
il est indispensable d'utiliser un filtrage si l'on veut obtenir un bon niveau de sécurité.
La NAT dynamique seule ne peut pas être considéré comme une sécurité suffisante
Est-ce utile pour la sécurité d'utiliser un proxy ?
Un proxy travaille au niveau 7 du modèle OSI, c'est à dire qu'il est capable d'interpréter et de modifier
les informations du protocole sur lequel il travaille. Ainsi, il peut vérifier le contenu de ce qui est reçu
de la part du serveur et en interdire ou modifier le contenu selon la politique choisie.
L'utilisation d'un proxy pour des protocoles critiques est donc souvent utile si on veut avoir une bonne
vision de ce qui se passe.
Dimitri LEMBOKOLO
9
La NAT est-elle compatible avec IPSEC ?
Si on veut être précis, la réponse est oui. Cependant, la norme IPSEC ayant différentes
implémentations, ce n'est pas toujours le cas. D'ailleurs la plupart des constructeurs ont créé leurs
propres solutions IPSEC pour traverser de la NAT.
Le problème vient de l'encryptions de l'en-tête IP par les participants au tunnel IPSEC. Si l'adresse IP
est modifiée pendant le trajet du paquet, elle ne sera pas la même à l'arrivée que celle qui a été
encryptée au départ, et après comparaison, le paquet sera détruit.
Cependant, en se plaçant en mode ESP et en faisant du tunneling, c'est la totalité du paquet qui est
encryptée, et un nouvel en-tête est ajouté à celui-ci. Ainsi, la comparaison ne se fera pas sur l'en-tête
modifiée, mais sur celle contenue dans les données du paquet.
Utilitaires pour faire de la NAT
10.1 10.1 - Sous Windows
Voici quelques noms de produits qui permettent entre autres de faire de la NAT, une présentation plus
précise sera peut-être faite par la suite si cela s'avère utile.
Je n'ai pas testés ces produits, ;-)
Wingate, winroute lite, NAT32, TCPrelay...
10.2 10.2 - Sous Unix
IPchains, ipfilter, netfilter...
Dimitri LEMBOKOLO
10
Mise en œuvre
Architecture
NAT statique (Routeur CISCO 3700, IOS : c3745-ipvoicek9-mz.124-9.T)
Sur le Routeur NAT (RouteurNAT)
hostname RouteurNAT
!
interface FastEthernet0/0
ip address 10.10.1.254 255.255.255.0
ip nat inside
! --- Définit Ethernet 0/0 avec une adresse IP et déclarer l’interface interne du NAT !
interface Serial0/0
ip address 192.1.95.241 255.255.255.240
ip nat outside
clock rate 56000
! --- Définit Serial 0/0 avec une adresse IP et déclarer l’interface externe du NAT
!
ip nat inside source static 10.10.1.3 192.1.95.243
ip nat inside source static 10.10.1.4 192.1.95.244
!
! ---Etats --- que tout paquet reçu sur l'interface à l'intérieur avec une adresse IP source de --- 10.10.1.3 est traduit par 192.1.95.243. ! ---Etats --- que tout paquet reçu sur l'interface à l'intérieur avec une adresse IP source de --- 10.10.1.4 est traduit par 192.1.95.244
Dimitri LEMBOKOLO
11
Sur le Routeur Internet (RouteurInternet)
hostname RouteurInternet
!
interface FastEthernet0/0
!
interface Serial0/0
ip address 192.1.95.242 255.255.255.240
Sur les Machines
Dimitri LEMBOKOLO
12
Vérification
Visualiser les translations d'adresses :
Activer le debug NAT :
Dimitri LEMBOKOLO
13
Architecture
NAT statique (Routeur CISCO 7200, IOS : c7200-advipservicesk9-mz.124-2.T)
Sur le Routeur NAT (RouteurNAT)
hostname R1
!
interface FastEthernet1/0
ip address 10.10.1.1 255.0.0.0
ip nat inside !---- Déclarer l’interface interne du NAT---: !
interface Serial2/0
ip address 192.1.65.241 255.255.255.240
ip nat outside !----Déclarer l’interface externe du NAT--- !
clock rate 54120
!
!
!---- Déclaration de votre pool d'adresses publiques--- ip nat pool tpnat 192.1.65.243 192.1.65.254 netmask 255.255.255.240
!
!
!---- Configurer l'ACL qui autorise les réseaux internes à utiliser le NAT---- ip nat inside source list 7 pool tpnat
access-list 7 permit 10.0.0.0 0.255.255.255
Dimitri LEMBOKOLO
14
!
!--- Déclarer le PAT sur l'interface de sortie --- ip nat inside source list 7 interface Serial2/0 overload
!
!
ip nat translation timeout 7200 !--- Temps en seconde ---
Sur le Routeur Internet (RouteurInternet)
hostname R2
!
interface Serial1/0
ip address 192.1.65.242 255.255.255.240
!
Sur les machines
Dimitri LEMBOKOLO
15
Vérification
Ping routeur R1 vers les machines
Dimitri LEMBOKOLO
16
Ping machine vers routeurs
Ping routeur R2 vers R1
Dimitri LEMBOKOLO
17
Afficher les statistiques de traduction
Conclusion
La NAT est aujourd'hui un élément important en réseau étant donné son énorme déploiement à
travers le monde suite à l'annonce de la pénurie d'adresses IPv4. Certes, il y a le IPv6 pour palier à ce
problème mais très peu l’utilise dans la sous régions.
J'ai essayé de rendre la compréhension de cette technique la plus accessible possible.
Cependant, il faut impérativement avoir quelques notions en réseau pour pouvoir bien comprendre les
points délicats qu'elle comporte.
Il y a et il y aura sûrement encore beaucoup de choses à dire sur le sujet. Vos remarques sont donc
encore et toujours les bienvenues, aussi bien pour y ajouter des idées, que pour enlever le superflu.