Objectifs de certification
CCNA 200-301
4.1 Configurer et vérifier inside source NAT (static et pools)
5.6 Configurer et vérifier les access control lists
Network Address Translation (NAT44)
Dans ce chapitre on parlera du Inside Source NAT44 (Statique, Pool et PAT) et de son implémentation en Cisco IOS.
1. Introduction
Le NAT, pour “Network Address Translation”, Traduction d’Adresses Réseau, a été proposé en 1994 sous le RFC 1631 comme solution à court terme face au manque d’adresses IPv4. Son objectif principal était de permettre aux adresses IP d’être partagées par un grand nombre de périphériques réseau. Envisagé comme un palliatif au manque d’adresses IPv4, il montre aujourd’hui ses limites à la croissance de l’Internet. Ce que l’on appelle “IP Masquerading”, pour masquage d’adresses IP est synonyme du NAT dans le jargon. On parlera ici uniquement de l’implétentation du NAT en Cisco IOS.
2. Définition
Le NAT est défini dans le RFC 3022. Le NAT permet d’utiliser des adresses n’ayant pas de signification globale (par exemple des adresses privées définies dans le RFC 1918, non globalement routables) pour les connecter à travers l’Internet en traduisant celles-ci en adresses globales routables. Le NAT permet aussi de fournir une solution de re-numérotation pour les organisations qui changent de fournisseur de service par exemple.
3. Portée
On peut utiliser le NAT dans différents cas :
- On dispose d’une multitude d’hôtes adressés de manière privée et le routeur externe dispose d’une seule ou de quelques adresses IPv4 globales (publiques). Le NAT est configuré sur un routeur en bordure d’un réseau d’extrémité (un LAN), étant identifié comme étant le côté interne (“inside”), qui connecte un réseau public 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 en les rendant opaques aux autres organisations, mais il n’est jamais une mesure de filtrage de sécurité.
4. Limites
- Le NAT contredit le principe fondamental d’IP qui demande une communication de bout en bout (les stations d’extrémité établissent et gèrent elles-mêmes leur communication). Le NAT pose donc des problèmes dans l’établissement de communications utilisant certains protocoles de sécurité assurant une authentification et un chiffrement (IPSEC), des applications peer-to-peer (VOIP) 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 (pare-feu, firewall).
- Par ailleurs, son utilisation répandue rend opaque l’étendue réelle de l’Internet IPv4. Rappelons que ce principe a été mis en place pour répondre de manière temporaire au manque d’adresses IPv4.
5. Terminologie Cisco
On fera la distinction entre interne (“inside”) et externe (“outside”). 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 n’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 globalement.
- 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.
#show ip nat translations
Pro Inside global Inside local Outside local Outside global
udp 122.168.122.106:59856 192.168.1.100:59856 194.57.169.1:123 194.57.169.1:123
udp 122.168.122.106:43050 192.168.1.101:43050 195.154.105.147:123 195.154.105.147:123
tcp 122.168.122.106:43516 192.168.1.101:43516 216.58.204.132:443 216.58.204.132:443
Dans cette sortie, la colonne Inside local
correspond à l’adresse et au port source original qui est traduit dans une entrée correspondante 122.168.122.106:59856
. L’adresse Inside global
est l’adresse de traduction que la destination va recevoir. L’adresse de destination n’est traduite dans aucune direction, soit la colonne Outside local
et la colonne Outside global
sont équivalentes.
6. Traduction d’adresses IP
On trouvera deux grands types de traduction d’adresses internes :
Les traductions statiques : une correspondance de type un à un entre une adresse IPv4 locale interne et une adresse IPv4 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”, une plage d’adresses).
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 inversement.
7. Méthodes de configuration de traduction d’adresses IP internes
Au préalable, il est utile d’être informé sur les liste d’accès (ACLs) Cisco IOS.
7.1. Traduction statique
Définition du NAT
(config)#ip nat inside source static <local_inside_ip> <global_inside_ip>
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.2. Traduction dynamique simple
Adresses locales soumises au NAT
(config)#access-list <access-list_number> permit <source_ip> <wildcard_mask>
Pool d’adresses globales
(config)#ip nat pool <name> <start_ip> <end_ip>
Definition du NAT
(config)#ip nat inside source list <access-list_number> pool <name>
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.3. Traduction dynamique overload (PAT) avec une seule IP globale
Adresses locales soumises au NAT
(config)#access-list <access-list_number> permit <source_ip> <wildcard_mask>
Definition du NAT
(config)#ip nat inside source list <access-list_number> interface <type> <number> overload
Définition des interfaces Inside/Outside
(config)#interface <type> <number>
(config-if)#ip nat inside
(config)# interface <type> <number>
(config-if)#ip nat outside
Diagnostic
#clear ip nat translation *
#show ip nat translations [verbose]
#show ip nat statistics
#debug ip nat
8. Mise en place du Source NAT overload
À partir d’une topologie représentative telle que celle-ci, on configure le Source NAT overload (PAT) sur R1 qui connecte l’Internet.
(config)#interface g0/1
(config-if)#ip address dhcp
(config-if)#no shutdown
En premier lieu, la procédure consiste à identifier les paquets dont l’adresse IPv4 source correspond à une adresse 192.168.1
par une ACL. En configuration globale sur R1 :
(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Ensuite, une règle NAT traduira l’adresse IPv4 source correspondant à l’ACL définie précédemment par l’adresse IPv4 de l’interface externe G0/1.
(config)#ip nat inside source list 1 interface g0/1 overload
Enfin, il faut indiquer chaque interface qui choisira le trafic à traduire, ici G0/2, G0/3 et G0/0 (inside
) et le côté des destinations qui pourraient être traduites (outside
).
(config)#interface g0/0
(config-if)#ip nat inside
(config-if)#interface g0/2
(config-if)#ip nat inside
(config-if)#interface g0/3
(config-if)#ip nat inside
(config-if)#interface g0/1
(config-if)#ip nat outside
9. Diagnostic NAT
On retiendra les commandes suivantes :
show running-config | include nat
show access-list
show ip nat translations
show ip nat statistics
- …
9.1. Vérification de la configuration
gateway#show running-config | include nat
ip nat inside
ip nat outside
ip nat inside source list lan interface GigabitEthernet0/1 overload
gateway#show access-list lan
Standard IP access list lan
10 permit 192.168.1.0, wildcard bits 0.0.0.255 (41 matches)
9.2. Vérification des traductions
C’est la commande show ip nat translations
qui offre la table de traduction.
gateway#show ip nat translations
Pro Inside global Inside local Outside local Outside global
udp 192.168.122.106:59856 192.168.1.100:59856 194.57.169.1:123 194.57.169.1:123
udp 192.168.122.106:38009 192.168.1.101:38009 194.57.169.1:123 194.57.169.1:123
udp 192.168.122.106:39792 192.168.1.101:39792 80.74.64.1:123 80.74.64.1:123
udp 192.168.122.106:40591 192.168.1.101:40591 178.33.123.180:123 178.33.123.180:123
udp 192.168.122.106:40824 192.168.1.101:40824 194.57.169.1:123 194.57.169.1:123
udp 192.168.122.106:41218 192.168.1.101:41218 195.154.105.147:123 195.154.105.147:123
udp 192.168.122.106:41499 192.168.1.101:41499 80.74.64.1:123 80.74.64.1:123
udp 192.168.122.106:43050 192.168.1.101:43050 195.154.105.147:123 195.154.105.147:123
tcp 192.168.122.106:43516 192.168.1.101:43516 216.58.204.132:443 216.58.204.132:443
udp 192.168.122.106:44933 192.168.1.101:44933 178.33.123.180:123 178.33.123.180:123
udp 192.168.122.106:46438 192.168.1.101:46438 80.74.64.1:123 80.74.64.1:123
udp 192.168.122.106:49243 192.168.1.101:49243 195.154.105.147:123 195.154.105.147:123
udp 192.168.122.106:51454 192.168.1.101:51454 195.154.105.147:123 195.154.105.147:123
udp 192.168.122.106:52567 192.168.1.101:52567 178.33.123.180:123 178.33.123.180:123
9.3. Statistiques NAT
La commande show ip nat statistics
offre les statistiques du service de traduction.
gateway#show ip nat statistics
Total active translations: 41 (0 static, 41 dynamic; 41 extended)
Peak translations: 41, occurred 00:00:35 ago
Outside interfaces:
GigabitEthernet0/1
Inside interfaces:
GigabitEthernet0/0
Hits: 80 Misses: 0
CEF Translated packets: 80, CEF Punted packets: 0
Expired translations: 0
Dynamic mappings:
-- Inside Source
[Id: 1] access-list lan interface GigabitEthernet0/1 refcount 41
Total doors: 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0
9.4. Déboggage NAT en Cisco IOS
La commande debug ip nat
peut être utilisée simplement ou avec un paramètre spécifique.
gateway#debug ip nat ?
<1-99> Access list
detailed NAT detailed events
error NAT error events
fragment NAT fragment events
generic NAT generic ALG handler events
h323 NAT H.323 events
ipsec NAT IPSec events
multipart NAT Multipart support events
nvi NVI events
piggyback NAT Piggyback support events
port NAT PORT events
pptp NAT PPTP events
redundancy NAT HA redundancy
route NAT Static route events
sbc NAT SIP Session Border Controller events
sip NAT SIP events
skinny NAT skinny events
tcp-alg NAT-ALG segmentation using common TCP Proxy
test TEST Code event
vrf NAT VRF events
wlan-nat WLAN NAT events
<cr>