Que faire du préfixe 100.64.0.0/10 ?

On connaît tous par coeur les préfixes du RFC 1918 qui offre 3 préfixes pour nous permettre d’allouer nos réseaux privés. Mais connaissez-vous le nouvel espace d’adressage privé « shared transition space » 100.64.0.0/10 ?

Commençons par expliquer la situation: certains opérateurs ne pouvant continuer à allouer une adresse publique par CPE (qui NAT entre le site et l’opérateur), commencent à déployer des CGN (Carrier Grade NAT). Ils attribuent une adresse IP privée au CPE du site et font un NAT au coeur du backbone avec un équipement dédié (il faut que les performances soient au rendez-vous). Cisco a quelques solutions en stock pour le CGN, par exemple une carte dédiée sur CRS. On a donc 2 NAT consécutifs (celui du CPE et celui du CGN), on parle aussi de NAT444.

Lire la suite

CNR supporte DNS64

L’annonce est un peu passée inaperçue à la fin de l’année dernière: CNR (CISCO Network Registrar) supporte maintenant DNS64 (composante essentielle du mécanisme NAT64). Je ne manquerai pas de recommencer mes tests NAT64 en tentant de remplacer Bind par CNR et vous faire mon retour dans un prochain post! Cliquer ici pour les release notes.

2 drafts présentant des retours d’expérience de réseaux IPv6-only

Intéressant, certains commencent à mouiller un peu le maillot et jouent le jeu IPv6 à 100% ! Ils nous décrivent les tests réalisés et nous donnent leurs observations:

Pour ce test une dizaine de personnes ont accepté de travailler au quotidien sur un réseau v6-only. Leur conclusion reste que travailler dans un réseau IPv6-only est possible mais ne s’applique pas à tous, surtout en raison de problèmes au niveau de certaines applications qui ne sont pas NAT64-ables en raison du transport d’adresses IP dans les payloads. Ils suggèrent donc un déploiement basé sur du dual-stack mais n’ont pas de doutes sur la très prochaine résolution des problèmes identifiés qui permettra un modèle IPv6-only. Ci-dessous un extrait:

Lire la suite

J’ai testé pour vous : Stateful NAT64 avec DNS64

Mon post qui décrivait mes tests NAT64 ayant suscité beaucoup d’intérêt j’ai poursuivi les tests en ajoutant un DNS64 annoncé en DHCPv6. J’ai ensuite ajouté une borne wifi et me voilà eu bureau dans un environnement 100% IPv6!

Objectif du lab:

Mettre en oeuvre un environnement NAT64 stateful/ DNS64 et DHCPv6 complet et montrer comment il est possible très simplement de créer des ilots v6-only qui continuent d’avoir acès aux ressources sur l’internet IPv4.

Topologie:

La topologie du lab est la même que celle de mon test NAT64 précédent avec simplement l’ajout d’un serveur DNS64 et l’annonce de celui-ci via DHCPv6:

  • Le préfixe IPv6 complet du réseau du lab est 2001:db8:cafe::/48
  • Le préfixe IPv6 du lien 100% IPv6 est 2001:db8:cafe:100::/64. Les hosts s’auto-configurent via le mécanisme SLAAC.
  • Le préfixe spécifique IPv6 (NSP – Network Specific Prefix) associé à NAT64 stateful est 2001:db8:cafe:2::/96. Une adresse IPv4 A.B.C.D est convertie en 2001:db8:cafe:2::A.B.C.D
  • Le pool d’adresses IPv4 sur lesquelles sont « NATées » les adresses IPv6 ne compte qu’une seule adresse dans ce lab: 10.151.200.1
  • Un serveur DNS64 qui a pour adresse: 2001:db8:cafe:200:20c:29ff:fe08:6b90

 

Plateforme:

 

  • NAT64: Routeur ASR1004
  • DNS64: Serveur UCS

 

Software:

 

  • NAT64: IOS-XE 3.4.0S – advanced IP services (asr1000rp1-advipservicesk9.03.04.00.S.151-3.S.bin)
  • DNS64: BIND 9.8.1 sous Ubuntu 4.4.1 (pas très récent)

 

Détails des tests et résultats:

 

1. Configuration de la plateforme de test

 

1.1. Configuration de Stateful NAT64

 

La configuration est celle réalisée lors du test initial NAT64.

 

1.2. Configuration du DNS64

 

La configuration est extrêmement simple. Après avoir installé BIND 9.8.1, il m’a suffit de:
  • Configurer le serveur pour écouter en IPv6
  • Configurer le préfixe IPv6 associé à NAT64 (sur lesquelles les adresses IPv4 sont automatiquement traduite)
  • Configurer un forwarder (10.30.30.30 dans notre cas). Dans le cas le plus classique, on peut imaginer qu’une entreprise ne souhaitera pas initialement faire des modifications sur ses serveurs DNS pour déployer NAT64. Il est très simple de configurer le serveur DNS64 en mode proxy: il se contentera de relayer les requêtes sur le serveur DNS officiel puis de traduire les résultats.
  • Cas particulier: dans le lab qui a servi à faire les tests il n’y a pas d’accès internet IPv6. Il faut donc absolument éviter que le DNS64 retourne une adresse IPv6 globale dans le cas où le host recherché existe dans l’internet IPv6! Tout doit être natté64! Cela est fait via la ligne « exclude { ::/0; }; » ci-dessous.
options {
  listen-on-v6 { any; };
  forwarders { 10.30.30.30; };
  dns64 2001:db8:cafe:2::/96 {
    exclude { ::/0; };
  };
  allow-query { any; };
  recursion yes;
};

 

1.3. Configuration de DHCPv6

 

Rien de plus simple. Sur l’interface Gi0/0/2 sur laquelle les hosts sont présents:

interface GigabitEthernet0/0/2
 description LAN V6 ONLY (NAT64)
 no ip address
 negotiation auto
 ipv6 address 2001:DB8:CAFE:100::1/64
 ipv6 dhcp server V6ONLY
 nat64 enable

 

Et en global, il suffit de définir le profil V6ONLY:

 

ipv6 dhcp pool V6ONLY
 dns-server 2001:DB8:CAFE:200:20C:29FF:FE08:6B90
 domain-name test.com

 

2. Tests et résultats

 

2.1. Validation du fonctionnement de DNS64

 

On peut faire un test simple en demandant les enregistrements A et AAAA pour http://www.test.com (qui n’est pas encore nativement accessible en IPv6, cad qui n’a pas d’adresse IPv6 dans le DNS).

root@dns64:~$ dig +short @127.0.0.1 -t A www.test.com
50.23.225.49
root@dns64:~$ dig +short @127.0.0.1 -t AAAA www.test.com
2001:db8:cafe:2::3217:e131

On observe que l’adresse 50.23.225.49 est bien embarquée dans l’adresse 2001:db8:cafe:2::3217:e131.

 

Je teste ensuite le comportement du DNS64 pour un host qui existerait dans l’internet IPv6 (www.renater.fr dans l’exemple ci-dessous)

root@dns64:~$ dig +short @10.30.30.30 -t AAAA www.renater.fr
2001:660:3001:4002::10
root@dns64:~$ dig +short @127.0.0.1 -t AAAA www.renater.fr
2001:db8:cafe:2::c131:9f0a

On observe que malgré la présence d’un enregistrement AAAA retourné par le forwarder du DN64 10.30.30.30, c’est bien l’adresse NAT64 qui est retournée grâce à la configuration « exclude { ::/0; } » de bind. Bien sûr dans l’hypothèse où un accès IPv6 existe, il faut supprimer cette exclusion pour privilégier l’accès IPv6 natif à celui NATté.

 

2.2. Validation de DHCPv6

 

Malheureusement DHCPv6 n’est pas supporté sur MAC OS! Aussi j’ai du configurer statiquement l’adresse IPv6 du serveur et supprimer toutes les configurations IPv4. Je ne manquerai pas de revenir sur DHCPv6 dans un prochain post.

2.3. Fonctionnement de l’ensemble

 

Que dire si ce n’est que tout fonctionne comme prévu sans constater de dégradation de performance? Après seulement quelques minutes de browsing la table de translation nat64 se remplit:

ASR1#sh nat64 translations 

Proto  Original IPv4         Translated IPv4
       Translated IPv6       Original IPv6 
----------------------------------------------------------------------------

tcp    144.254.231.90:993    [2001:db8:cafe:2::90fe:e75a]:993                
       10.151.20.1:1174      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60213    
tcp    72.163.4.70:443       [2001:db8:cafe:2::48a3:446]:443                 
       10.151.20.1:1043      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60052    
tcp    74.207.254.18:80      [2001:db8:cafe:2::4acf:fe12]:80                 
       10.151.20.1:1148      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60161    
tcp    72.9.238.226:80       [2001:db8:cafe:2::4809:eee2]:80                 
       10.151.20.1:1166      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60190    
tcp    74.125.39.103:443     [2001:db8:cafe:2::4a7d:2767]:443                
       10.151.20.1:1172      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60209    
tcp    74.125.39.147:80      [2001:db8:cafe:2::4a7d:2793]:80                 
       10.151.20.1:1134      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60140    
tcp    74.125.39.147:80      [2001:db8:cafe:2::4a7d:2793]:80                 
       10.151.20.1:1085      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60115    
tcp    72.163.4.70:443       [2001:db8:cafe:2::48a3:446]:443                 
       10.151.20.1:1034      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60037    
tcp    173.37.161.166:80     [2001:db8:cafe:2::ad25:a1a6]:80                 
       10.151.20.1:1063      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60081    
tcp    69.171.242.53:80      [2001:db8:cafe:2::45ab:f235]:80                 
       10.151.20.1:1054      [2001:db8:cafe:100:e6ce:8fff:fe0e:30e]:60062    
…
…

Total number of translations: 155

 

Un peu de lecture:

 

Stephane Bortzmeyer a réalisé 2 pages excellentes sur Stateful NAT64 et DNS64 que je vous recommande.

%d blogueurs aiment cette page :