ad4

Libellés

ad7

Translate - traduction

samedi 2 mai 2015

Network Address Translation (NAT)

Le NAT a été proposé en 1994 sous la RFC 1631 comme solution à court terme face au manque d’'adresses IP. Son objectif principal était de permettre aux adresses IP d'’être partagées par un grand nombre de périphériques réseau. En une dizaine d'années d'’existence, il a donné le temps nécessaire pour concevoir le nouveau protocole d'’adressage IPv6 et, aujourd’hui, le début de son déploiement.

1. Définition

Le NAT est défini dans la RFC 1631. Le NAT permet d'utiliser des adresses n'ayant pas de signification globale (par exemple des adresses privées définies dans la RFC 1918, non routables) pour se connecter à travers l'Internet en traduisant celles-ci en adresses globales routables. Le NAT permet aussi de fournir une solution élégante de renumérotation pour les organisations qui changent de fournisseur de service ou qui migrent vers le CIDR.

2. Portée

On peut utiliser le NAT dans différents cas :
  • On dispose d'une multitude d'hôtes addressés de manière privée et on a une seule ou quelques adresses IP globales (publiques). Le NAT est configuré sur un routeur en bordure d'un réseau d'extrémité, étant identifié comme étant le côté interne (inside), qui connecte un réseau publique comme l'Internet, identifié comme étant le côté externe (outside). Le NAT traduit les adresses locales internes en une adresse globale unique avant d'envoyer les paquets vers le réseau externe.
  • On doit changer des adresses internes. Au lieu de les changer, on les traduit par du NAT.
  • On veut rendre accessible des hôtes qui sont localement et globalement dans le même adressage, autrement dit on permet une connectivité d'adresses qui se chevauchent (overlapping) de part et d'autre du routeur NAT.
  • On peut utiliser également le NAT pour distribuer la charge TCP vers un hôte virtuel qui répond à la place de plusieurs serveurs réels selon un principe de type round-robin.
  • Il contribue à améliorer la sécurité des réseaux internes puisqu'il les cache.

3. Limitation

  • Le NAT contredit le principe fondamental d'IP d'une communication de bout en bout (les stations d'extrémité établissent et gèrent elle-même leur communication). Le NAT pose donc des problèmes dans l'établissement de communications utilisant certains protocoles de sécurité assurant une authentification et une encryption, des applications peer-to-peer et autres tels que FTP.
  • En matière de sécurité, il n'est jamais qu'une option qui ne remplace pas un filtrage IP pertinent.
  • Par ailleurs, son utilisation répandue rend opaque l'étendue réelle de l'Internet. Rappelons que ce principe a été mis en place pour répondre de manière temporaire au manque d'adresses IP.

4. Terminologie

On fera la distinction entre interne et externe. Les adresses internes sont celles qui sont maîtrisées par l'administrateur du réseau d'extrémité. Les adresses externes sont celles dont on a pas la maîtrise et qui font partie d'un réseau public tel que l'Internet.

On fera aussi la distinction entre adresses locales et globales. Les adresses locales sont celles qui ne sont pas nécessairement des adresses légitimes et les adresses globales sont celles qui sont routables, qui ont une signification à portée globale.

Concrètement, on trouvera dans les tables NAT jusqu'à quatre types d'adresses :
Inside local address - L'adresse IP assignée à un hôte à l'intérieur d'un réseau d'extrémité. Il s'agit probablement d'une adresse privée, non routable.
Inside global address - La ou les adresses IP publiques qui représentent les adresses IP locales internes, les adresses IP routables du routeur NAT.
Outside local address - L'adresse IP d'un hôte telle qu'elle apparaît aux hôtes d'un réseau interne. Il ne s'agit pas nécessairement d'une adresse légitime routable.
Outside global address - L'adresse IP réelle routable d'un hôte qui se situe à l'extérieur du réseau du routeur NAT.
nat0.jpg

5. Traduction d'adresses IP

On trouvera deux grand types de traduction d'adresses internes :

Les traductions statiques : une correspondance de type un-à-un entre une adresse IP locale interne et une adresse IP globale interne. Elles sont utiles lorsqu'un hôte interne doit être accessible de l'extérieur. On peut également établir des correspondances de ports TCP/UDP pour réaliser ce que l'on appelle communément le transfert de ports.
Les traductions dynamiques : une correspondance de plusieurs-à-plusieurs entre un ensemble d'adresses IP locales (définies par une ACL) et un groupe d'adresses IP globales (définies par un POOL).

On trouvera deux variantes aux traductions dynamiques :

Overloading : la correspondance de plusieurs adresses IP locales internes (définies par une ACL) et une adresse IP globale interne (définie par le nom d'une interface) ou plusieurs adresses IP globales internes (définies par un POOL) en utilisant comme critère distinctif du trafic les ports TCP/UDP. Cette solution est aussi appelée PAT (Port Address Translation), single-address NAT ou encore port-level multiplexed NAT.
Overlapping : la correspondance entre adresses IP internes qui se chevauchent avec des adresses externes et inversément.

6. Principe de configuration de traduction d'adresses IP internes

6.1. Traduction statique

1. Définition du NAT
(config)#ip nat inside source static local_inside_ip global_inside_ip
2. Définition des interfaces Inside/Outside
(config)#interface type number
(config-if)#ip nat inside
(config)# interface type number
(config-if)#ip nat outside

6.2. Traduction dynamique simple

1. Adresses locales soumises au NAT
(config)#access-list access-list_number permit source_ip wildcard_mask
2. Pool d'adresses globales
(config)#ip nat pool name start_ip end_ip
3. Definition du NAT
(config)#ip nat inside source list access-list_number pool name
4. Définition des interfaces Inside/Outside
(config)#interface type number(config-if)#ip nat inside
(config)# interface type number
(config-if)#ip nat outside

6.3. Traduction dynamique overload (PAT) avec une seule IP globale

1. Adresses locales soumises au NAT
(config)#access-list access-list_number permit source_ip wildcard_mask
2. Definition du NAT
(config)#ip nat inside source list access-list_number interface type number overload
3. Définition des interfaces Inside/Outside
(config)#interface type number
(config-if)#ip nat inside
(config)# interface type number
(config-if)#ip nat outside

7. Diagnostic


#clear ip nat translation *
#show ip nat translation [verbose]
#show ip nat statistics
#debug ip nat

8. Références