NAT
Transcription
NAT
Stéphane CATELOIN v1.1/2012-09 Problématique Adresses IP locales (non routables) INTERNET 80.126.84.12 routeur 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.254 Problématique (2) 10.0.0.1 @sce:10.0.0.1, @dest:216.239.57.103 SYN, port sce:2345, port dest:80 INTERNET 216.239.57.103 (www.google.com) ? @sce:216.239.57.103, @dest:10.0.0.1 SYN,ACK, port sce:80, port dest:2345 Ouverture passive impossible : l’adresse de retour n’est pas routable 1 Solution Le routeur doit substituer les adresses locales par une adresse routable INTERNET 80.126.84.12 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.254 NAT statique 10.0.0.1 @sce:10.0.0.1, @dest:216.239.57.103 @sce:216.239.57.103, @dest:10.0.0.1 SYN, port sce:2345, port dest:80 SYN,ACK, port sce:80, port dest:2345 @sce:80.126.84.13, @dest:216.239.57.103 80.126.84.12 SYN, port sce:2345, port dest:80 Condition: le routeur dispose d’une plage d’adresse virtuelles En sortie : il substitue l’adresse locale par une adresse virtuelle En entrée : il effectue la substitution inverse INTERNET @sce:216.239.57.103, @dest:80.126.84.13 SYN,ACK, port sce:80, port dest:2345 216.239.57.103 (www.google.com) NAT statique (2) Nécessité de mémoriser une table de substitution (table NAT) @locale @virtuelle 10.0.0.1 10.0.0.2 10.0.0.3 80.126.84.13 80.126.84.14 80.126.84.15 2 NAT statique (3) Inconvénients on doit disposer d’une adresse publique par machine accédant à internet pourquoi ne pas leur attribuer directement cette adresse? adressage uniforme une modification de la table NAT permet de rediriger facilement les requêtes problème de pénurie d’adresses IP NAT dynamique ou IP masquerading, Network Address and Port Translation (NAPT) principe : faire correspondre une adresse IP publique à plusieurs adresses IP locales NAT dynamique (2) 10.0.0.1 @sce:10.0.0.1, @dest:216.239.57.103 @sce:216.239.57.103, @dest:10.0.0.1 SYN, port sce:2345, port dest:80 10.0.0.1:2345 SYN,ACK, port sce:80, port dest:2345 80.126.84.12:2345 @sce:80.126.84.12, @dest:216.239.57.103 80.126.84.12 SYN, port sce:2345, port dest:80 utilisation de l’adresse publique du routeur création dynamique d’entrées @IP/port dans la table NAT INTERNET @sce:216.239.57.103, @dest:80.126.84.12 SYN,ACK, port sce:80, port dest:2345 216.239.57.103 (www.google.com) 3 NAT dynamique (3) problème : utilisation du même port source par deux machines du réseau local exemple: les machine 10.0.0.1 et 1.0.0.2 utilisent toutes deux le port 2345 local externe 10.0.0.1:2345 80.126.84.12:2345 10.0.0.2:2345 80.126.84.12:2345 vers quelle machine rediriger les données entrantes à destination du port 2345? solution : translation de port (NAPT) le routeur substitue le port source dans l’en-tête du protocole de transport NAT dynamique (4) 10.0.0.1 @sce:10.0.0.1, @dest:216.239.57.103 @sce:216.239.57.103, @dest:10.0.0.1 SYN, port sce:2345, port dest:80 10.0.0.1:2345 SYN,ACK, port sce:80, port dest:2345 80.126.84.12:10000 @sce:80.126.84.12, @dest:216.239.57.103 80.126.84.12 SYN, port sce:10000, port dest:80 INTERNET 1ère connexion @sce:216.239.57.103, @dest:80.126.84.12 SYN,ACK, port sce:80, port dest:10000 216.239.57.103 (www.google.com) NAT dynamique (5) 10.0.0.2 @sce:10.0.0.2, @dest:216.239.57.103 @sce:216.239.57.103, @dest:10.0.0.2 SYN, port sce:2345, port dest:80 SYN,ACK, port sce:80, port dest:2345 10.0.0.1:2345 80.126.84.12:10000 10.0.0.2:2345 80.126.84.12:10001 @sce:80.126.84.12, @dest:216.239.57.103 80.126.84.12 SYN, port sce:10001, port dest:80 2ème connexion INTERNET @sce:216.239.57.103, @dest:80.126.84.12 SYN,ACK, port sce:80, port dest:10001 216.239.57.103 (www.google.com) 4 NAT dynamique (6) Mise à jour dynamique de la table TCP ajout d’une entrée par SYN suppression de l’entrée par FIN UDP : pas de connexion ajout d’une entrée sur le premier segment venant d’un nouveau couple @IP/port démarrage d’un timer (relancé par chaque segment venant de ce même couple) suppression de l’entrée à l’issue du timer (le timer peut être aussi utilisé pour TCP) NAT dynamique (7) Avantages permet de masquer un grand nombre de machines derrières une seule adresse publique limitation : nombre de ports translatés réponse au problème de pénurie d’adresses IP NAT dynamique : Inconvénients ne permet pas à une machine d’être jointe de l’extérieur la mise à jour dynamique de la table NAT ne peut se faire que « de l’intérieur »: seuls ces messages contiennent les IP des machines locales (avantage d’un point vue sécurité) solutions : port forwarding : redirection d’un port vers une machine locale en particulier (entrée statique) exemple : serveur web sur la machine 10.0.0.1 10.0.0.1:80 80.126.84.12:80 port mapping : similaire au port forwarding, en utilisant un translation statique des ports 10.0.0.1:8080 80.126.84.12:80 uPnP : Universal Plug and Play : protocole permettant aux serveurs utilisant des ports aléatoires d’insérer des entrées dans la table NAT pas de solutions pour plusieurs serveurs utilisant le même port 5 NAT dynamique : Inconvénients(2) protocoles sans informations de ports cas d’ICMP (informations de niveau 3 uniquement) solution : implémentation spécifique du NAT pour ICMP: utilisation de l’identifiant ICMP (type,code) substitution des adresses IP internes aux message NAT dynamique : Inconvénients(3) protocoles incluant des adresses IP dans la partie applicative exemple : FTP Client port 21 commande PORT x port x Serveur port 20 solution : helpers (modules d’application) développés pour des protocoles spécifiques (FTP, H.323, RTSP…) analysent et substituent les adresses IP dans la partie applicative du message 6