Download - Rapport IPV6

Transcript
Page 1: Rapport IPV6

I - Introduction à IPv6

1.1 - IPv6: historique, contexte et objectifs

Le réseau Internet actuel, basé sur le protocole IPv4 a été initialement prévu pour relier auMaximum une centaine de machines. Hors on connaît tous le succès actuel d’Internet, et on aVu le nombre d’utilisateurs augmenter de manière exponentielle.

Les plus pessimistes avaient prévu la saturation du réseau IPv4 dès 1994. Cette prévision ne s’est pas réalisée, car des mesures d’urgence ont été prises, comme par exemple le CIDR (Classless Interrompais Routing, RFC 1519), l’adressage privé (RFC 1918) ou encore l’utilisation du NAT (translation d’adresses). Cependant, la situation n’en est pas moins préoccupante, et la pénurie d’adresse IPv4 se fait sentir, particulièrement en Asie et en Afrique.

Un autre problème du protocole IPv4 concerne le routage : les noeuds du réseau IPv4 ont vu leur table de routage exploser ces dernières années. Cette augmentation des tables dues à une mauvaise hiérarchisation des adresses, rend la gestion du réseau IPv4 de plus en plus complexe pour les routeurs, et il était urgent de résoudre ce problème en agrégeant les adresses IP au maximum.

Pour ces raisons, l’IETF a travaillé sur une nouvelle version du protocole IP, permettantDe pallier aux limites d’IPv4. Cette nouvelle version est la version 6 du protocole.

IPv6 est conçu pour s’affranchir des limitations d’IPv4, mais aussi pour prendre en compte les avancées issues des recherches sur les réseaux, comme l’auto-configuration, la mobilité, le multicast ou encore la sécurité.

 L’objectif à terme est de remplacer tous les systèmes IPv4 par des systèmes IPv6. Les routeurs prenant en charge à la fois IPv4 et IPv6 peuvent être utilisés pour relayer des informations entre les réseaux exécutant le protocole IPv4 et d’autres utilisant déjà IPv6.

1.2 - IPv4   : certaines limites \ IPv6   : des atouts pour un relais de croissance

IPv4   : un espace d’adressage restreint avec une répartition géographique inégale

Le protocole IPv4, finalisé en 1983 s’adressait alors à une communauté restreinte. Ainsi, l’adressage d’IPv4 est-il prévu sur 32 bits, ce qui permet de disposer d’un "stock" de 4,3 milliards d’adresses IP environ. A cette époque et avec la vision qu’avaient alors les responsables, à savoir un réseau destiné aux militaires et scientifiques (donc assez éloignée de

Page 2: Rapport IPV6

ce qu’allait devenir l’Internet que nous connaissons aujourd’hui), le stock paraissait plus que suffisant.

Aujourd’hui, ce stock d’adresses IPv4 est très entamé et si près de 47% des adresses ne sont pas attribuées (parmi le stock total d’adresses), la répartition géographique en est très inégale. Les adresses allouées (destinées à être utilisées par un registre régional ou par des organisations pre-RIR) représentent la majorité du stock et sont destinées essentiellement à la zone américaine aux dépens de l’Asie qui présente pourtant un important potentiel de développement (Chine, Inde). Il est également à noter, que parmi le total des adresses IPv4 disponibles, 53% ont été attribuées directement à des organisations (américaines pour la plupart), avant l’apparition des RIR qui ne les contrôlent donc pas.Ainsi, en tenant compte de ces organisations pre-RIR, on peut estimer, fin 2001, que 74% des adresses allouées le sont pour l’Amérique du Nord, 17% pour l’Europe et 9% pour l’Asie.

IPv4 est face à une explosion des besoins

Outre la croissance organique encore forte d’Internet dans le monde entier (particulièrement en Asie où le potentiel de croissance est très élevé et les ressources en adresses très faibles), bon nombre d’applications nouvelles, consommatrices d’adresses IP devraient se développer :

l’arrivée des services mobiles autour du GPRS.

les accès haut débit et le mode "always on".

l’électronique connectée et les véhicules communicants, les applications domotiques et réseaux de capteurs

IPv4   : un protocole non pensé pour un usage commercial d’Internet

Prévu à l’origine pour des usages non commerciaux, IPv4 n’a pas été conçu pour assurer les fonctions de QoS attendues aujourd’hui, ni pour assurer les fonctions d’auto-configuration ou Multicast, ou encore la sécurité, essentielles dans l’Internet commercial moderne. Des solutions ont été trouvées pour assurer ces fonctions, alourdissant le protocole de couches supplémentaires, ou pour doper artificiellement la durée de vie du stock d’adresses (NAT), faisant notamment exploser la complexité des tables de routage.

Nous sommes dès à présent dans une période de gestion de la pénurie d’adresses IP

Cette gestion de la pénurie d’adresses se traduit par des politiques drastiques d’attribution d’adresses IPv4 pratiquées par les RIR. De plus, l’emploi généralisé des NAT permet de retarder la pénurie, mais cela alourdit la gestion des réseaux et constitue un frein au développement d’applications temps réel et P2P.Ainsi, toutes choses égales par ailleurs, on peut estimer un épuisement du stock d’adresses IPv4 d’ici 2010.

L’immense capacité d’adressage d’IPv6 justifie à elle seule, le passage au nouveau protocole

Malgré les divers avantages techniques d’IPv6 décrits ci-après, l’essentiel, de l’avis général des experts, reste l’espace d’adressage large, qui permettra de faire face aux besoins

Page 3: Rapport IPV6

engendrés par le développement des nouvelles applications « always on » et de rétablir l’usage du mode end-to-end qui est le principal apport d’IPv6 au niveau des applicatifs. Les autres avantages techniques, bien que réels, ne présentent pour l’heure que des potentiels intéressants, mais ne sont pas l’atout premier d’IPv6 :

Adressage hiérarchique pour optimiser le routage,

Autoconfiguration,

IPSec natif,

Multicast,

Mobile IPv6.

IPv6 présente également plusieurs avantages permettant de mieux gérer la QoS mais qui ne sont pas encore significatifs. De manière générale, on considère que dans un premier temps, la QoS sera gérée de la même façon sous IPv6 que ce que l’on connaît aujourd’hui sous IPv4.

1.3 - Convention de notation de l'adressage IPv6

Une adresse IPv6 est longue de 16 octets, soit 128 bits, contre 4 octets (32 bits) pour IPv4. On dispose ainsi d'environ 3,4 × 1038 adresses, soit 340 282 366 920 938 463 374 607 431 768 211 456, soit encore, pour reprendre l'image usuelle, plus de 667 132 000 milliards (6,67 × 1017) d'adresses par millimètre carré de surface terrestre.

On abandonne la notation décimale pointée employée pour les adresses IPv4 (par exemple 172.31.128.1) au profit d'une écriture hexadécimale, où les 8 groupes de 16 bits sont séparés par un signe deux-points :

Fedc: 0482: cafe: ba05:a200:e8ff:fe65:000a.

La notation canonique complète ci-dessus comprend exactement 39 caractères.

Les 64 premiers bits de l'adresse IPv6 (préfixe) servent généralement à l'adresse de sous réseau, tandis que les 64 bits suivants identifient l'hôte à l'intérieur du sous réseau : ce découpage joue un rôle un peu similaire aux masques de sous réseau d'IPv4.

Les "0" les plus à gauche des mots de 16 bits ne se figurent pas dans l'écriture.

Fedc: 0482: cafe: ba05:a200:e8ff:fe65:000a deviant fedc: 482: cafe: ba05:a200:e8ff:fe65: a

La machine « a200:e8ff:fe65:a » sur le réseau « Fed:6482:cafe:ba05 »

Page 4: Rapport IPV6

Fedc: 6482: cafe: ba05:a200:e8ff:fe65:df9a /64

L'adresse de boucle « :1 » a le même rôle qu'une adresse IPv4 127.0.0.1. Lorsqu'une machine utilise cette adresse, elle s'envoie des paquets IPv6 à elle même.

L'adresse indéterminée, cette adresse 0:0:0:0:0:0:0:0 (ou encore notée "::") est utilisée pendant l'initialisation de l'adresse IPv6 d'une machine. C'est une phase transitoire.

Un ou plusieurs groupes de 4 zéros consécutifs peuvent être remplacés par un double deux-points « : ». C'est ainsi que l'adresse

8000:0000:0000:0000:0123:4567:89ab: cdef deviant: 8000: 123:4567:89ab: cdef

Il est pourtant parfois nécessaire de manipuler littéralement des adresses IPv6. Le caractère ":" utilisé pour séparer les mots peut créer des ambiguïtés. C'est le cas avec les URL où il est aussi utilisé pour indiquer le numéro de port. Ainsi l'URL

http://2001:1234:12::1:8000/, peut aussi bien indiquer le port 8000 sur la machine Ayant l'adresse IPv6 2001:1234:12:1, que la machine 2001:1234:12:1:8000 en utilisant Le port par défaut. Pour lever cette ambiguïté, le RFC 2732 propose d'inclure l'adresse

IPv6 entre "[ ]". L'adresse précédente s'écrirait :

http://[2001:1234:12::1:8000]/

1.4 - Les types\Portée d’adresses IPv6

IPv6 supporte 3 types d'adresses: Unicast, Multicast et Anycast.

Les adresses Unicast :

Elles désignent une et une seule machine. Elles comportent une partie réseau "préfixe" et une partie hôte "suffixe" La partie réseau ou préfixe est codée sur 64 bits : les 48 bits publics "Global

Routing Prefix" et les 16 bits de site définissant le sous réseau

La partie hôte ou suffixe est codée aussi sur 64 bits, fabriquée à partir de l'adresse MAC de l'interface, elle permet d'identifier la machine dans un réseau donné.

Page 5: Rapport IPV6

Prenons par exemple cette adresse fe80:20d:61ff:fe22:3476

Les adresses Multicast :

Le protocole IPv6 généralise l'utilisation des adresses Multicast qui remplacent les adresses de type "broadcast" (diffusion) qui n'existent plus en IPv6. La raison de cette disparition est que l'émission d'un paquet broadcast était très pénalisante pour toutes les machines se trouvant sur un même lien.

Une adresse Multicast est une adresse désignant un groupe d'interfaces donné. Une interface est libre de s'abonner à un groupe ou de le quitter à tout moment, c'est donc moins pénalisant qu'en IPv4.

Le format des adresses Multicast est le suivant : ff01 : noeud local, les paquets ne quittent pas l'interface. ff02 : lien local, les paquets ne quittent pas le lien. ff05 : site local, les paquets ne quittent pas le site.

Voici un exemple intéressant d'utilisation d'adresse Multicast qui vous permet de détecter les hôtes actifs sur le lien local :

Vous pouvez identifier 2 hôtes actifs « fe80::20e:35ff:fe8f:6c99 » (celui d'où est passée la commande) et « fe80::20d:61ff:fe22:3476 » (qui correspond à un autre poste du réseau local).

Les adresses Anycast :

Anycast est un nouveau type d'adressage. Il identifie qu'un noeud, parmi un groupe de noeuds, doit recevoir l'information.

Une adresse Anycast, comme une adresse Multicast, désigne un groupe d'interfaces, à la différence qu'un paquet émis avec comme destinataire une adresse Anycast ne sera remis qu'à un seul membre du groupe, par exemple le plus proche au sens de la métrique des protocoles de routage, même si

Plusieurs interfaces ont répondu au message. L'interface de destination doit spécifiquement être configurée pour savoir qu'elle est Anycast.

# ping6 -I eth0 ff02::1 PING ff02::1(ff02::1) from fe80::20e:35ff:fe8f:6c99 eth2: 56 data bytes64 bytes from ::1: icmp_seq=1 ttl=64 time=0.048 ms64 bytes from fe80::20d:61ff:fe22:3476: icmp_seq=1 ttl=64 time=9.05 ms (DUP!)64 bytes from ::1: icmp_seq=2 ttl=64 time=0.045 ms64 bytes from fe80::20d:61ff:fe22:3476 icmp_seq=2 ttl=64 time=3.33 ms (DUP!)

64 bytes from ::1: icmp_seq=3 ttl=64 time=0.037 ms

Page 6: Rapport IPV6

Pour l'instant, une seule adresse Anycast est utilisée, elle est réservée au routeur mais dans l'avenir, d'autres pourraient être définies.

La portée ou "scope" des adresses, est une nouvelle notion qui n'existait pas en IPv4.En fait une interface ne possède pas une seule adresse IPv6 mais peut en avoir plusieurs.

Les quatre portées d'adresses sont :

Nœud local : il s'agit de l'adresse de loopback. Elle est notée : 1/128.

Lien local : adressage commun aux machines d'un même lien physique reliées entre elles sans routeur intermédiaire .Ces adresses ont comme préfixe fe80:/64. Seuls les équipements de la couche 2 du modèle OSI peuvent utiliser ces adresses pour communiquer entre eux. Cette adresse est obtenue par auto configuration "sans état".

Site local : adressage commun des machines d'un même site.Par exemple, un site qui n'est pas encore relié à Internet peut utiliser ce type d'adresse. C'est un peu le concept des adresses privées en IPv4 (192.168.x.x ou 10.x.x.x). Une adresse site local a comme préfixe fec0:/48 suivi d'un champ de 16 bits permettant de définir des sous réseaux.

Globale : ce sont des adresses dont le routage est effectué sans restriction. Leur préfixe est 2000:/3, ce qui signifie qu'elles commencent par 001 en binaire. Concrètement, on utilise 2xxx ou 3xxx.

Par exemple « 2001:7a8:4b09:1bff:feb1:defa » est une adresse globale.

1.5 - Description du format de tête d’IPv6

Figure 1   : Format d’entête IPv4   /IPv6

Grâce aux schémas, nous nous apercevons tout d'abord qu'il existe certaines similitudes entre IPv4 et IPv6.

La première constatation est de voir que l'en-tête IPv6 a été simplifié. Certains en-têtes IPv4 ont été supprimés ou rendus optionnels pour réduire dans les situations classiques le coût en

Page 7: Rapport IPV6

ressources de traitement de la gestion des paquets et pour limiter le surcoût en bande passante de l'en-tête IPv6.

Champ version : indique la version du protocole utilisé, IPv4 ou IPv6. Il sert à vérifier que le paquet est bien traité par la bonne couche réseau.

Champ priorité : ce champ permet d'indiquer aux routeurs la priorité relative des différents datagrammes transmis. Il peut prendre les valeurs allant de 0 à 15.

Champ étiquette de flot : permet de définir différents flots, que les noeuds du réseau peuvent alors traiter avec un comportement particulier (en termes de gestion des files d’attente par exemple).

Champ longueur de charge utile : ce champ indique le nombre d'octets d'information qui suivent les en-têtes de base et d'extension. Ce champ contient 16 bits, ce qui permet d'avoir jusqu'à 64 Ko de données utiles par datagramme.

Champ en-tête suivant : ce champ indique le type du prochain en-tête d'extension.

Champ nombre maximum de sauts : ce champ a comme fonction d'éviter qu'un Datagramme ne circule indéfiniment dans un réseau. La valeur contenue dans ce champ représente le nombre de routeurs que Le datagramme peut traverser avant d'être détruit.

IPv6 avancé 3.1 - Exploitation de DNS avec IPv6

Le service de noms, qui permet la résolution d'adresses vers des noms (et vice-versa), est unepartie très importante de la migration d'un site vers IPv6.

Les adresses IPv6 sont difficiles à retenir du fait de leur notation et de leur longueur. Le système de gestion des noms de domaines, DNS (Domain Name System), est en partie là pour pallier ce problème. De plus, il est souvent nécessaire d’être enregistré dans un serveur DNS pour accéder à certaine services qui effectuent un test de correspondance DNS inverse (adresse IP vers nom DNS) afin de s’assurer de l’authenticité d’un hôte.

Un noeud IPv6 peut s’auto-configurer sans l’aide d’un système plus coûteux qu’est DHCP. La difficulté est alors de savoir comment gérer les enregistrements DNS de noeuds dans le cas où ils sont autorisés à gérer eux-mêmes leurs adresses.

Cependant, afin de supporter le nouveau schéma d'adressage d'IPv6 (adresses sur 128 bits, hiérarchie d'adressage...), deux extensions au DNS ont été apportées (RFC 1886) :

Un nouveau type d'enregistrement a été créé, AAAA (l’enregistrement des adresses Ipv4 étant de type A).

Page 8: Rapport IPV6

De même, deux nouveaux domaines ont été créés, le domaine ip6.int et ip6.arpa pour la résolution inverse

Avec la configuration automatique des clients, le maintien de bases de données DNS devient très complexe et fastidieux. A ces fins, il paraît très avantageux d’utiliser un service de mises à jour dynamiques du DNS. Après avoir implémenté et testé notre service de nom, nous avons donc décidé de modifier notre serveur DNS pour rajouter ce module de mises à jour. DNS dynamique : un client met à jour l’adresse associée à son nom

Le protocole de mises à jour dynamique du DNS, appelé DNS Update permet de supprimer ou de rajouter des enregistrements en utilisant des formats de messages DNS prévus à cet effet [RFC 2136]. Deux types de messages sont utilisés, updateQuery, qui permet au client de rajouter un champ, en donnant s’il le souhaite une liste de pré requis, et updateResponse envoyé par le serveur sur le résultat de l’opération.

Il existe deux modes d’utilisation pour mettre à jour le DNS :

La mise à jour est réalisée directement par le serveur DHCP. Lorsque celui-ci attribue une adresse et un nom, il va lui même envoyer les messages DNSUpdate au serveur de noms pour rajouter les enregistrements.

La mise à jour est effectuée par un utilisateur (administrateur ou autre), en utilisant un outil spécifique appelé nsupdate, qui possède des commandes permettant de modifier les enregistrements DNS.

Il est nécessaire de spécifier au moins une zone pour la résolution directe et une pour la résolution inverse.

Format   :

Le format textuel d'un enregistrement AAAA tel qu'il apparaît dans le fichier de zone DNS est le suivant :

<nom> IN AAAA <adresse>

L'adresse est écrite suivant la représentation classique des adresses IPv6 (RFC 4291). Par exemple, l'adresse IPv6 de la machine Pc1.cnss.ma est publiée dans le fichier de zone cnss.ma comme suit :

Pc1.cnss.ma. IN AAAA 2001:660:3006:1::1:1

Il est important de noter que toutes les adresses IPv4 et/ou IPv6 correspondant à un équipement donné, doivent cohabiter dans le même fichier de zone renseignant le nom de l'équipement en question. Ainsi, les adresses de ns3.nic.fr sont publiées dans le fichier de zone cnss.ma comme suit :

Pc1 IN A 192.134.1.49

Page 9: Rapport IPV6

IN AAAA 2001:660:3006:1::1:1

Une adresse IPv6 est transformée en un nom de domaine publié sous l'arborescence inverse ip6.arpa de la manière suivante :

les 32 demi-octets formant l'adresse IPv6 sont séparés par le caractère `.' et concaténés dans l'ordre inverse au suffixe ip6.arpa.

Par exemple l'adresse 2001:660:3006:1::1:1 (adresse de Pc1.cnss.ma) est transformée en le nom de domaine inverse suivant :

1.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.6.0.0.3.0.6.6.0.1.0.0.2.ip6.arpa.

Voici un extrait du fichier de zone DNS inverse :

6.0.0.3.0.6.6.0.1.0.0.2.ip6.arpa.1.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0 IN PTR Pc1.ntic.ma

3.2 - Exploitation DHCP avec IPv6

DHCP (Dynamic Host Configuration Protocol) est un protocole permettant de configurer les paramètres réseaux de machines clientes (adresse IP, adresse des serveurs DNS, de la passerelle,…).

Comme nous l’avons vu précédemment dans la présentation d’IPv6, il est possible de configurer automatiquement les machines à partir du préfixe réseau annoncé par le routeur du lien. Toutefois, cette solution ne permet pas un contrôle total de la distribution des adresses par l’administrateur réseau. Nous avons donc décidé d’intégrer un serveur DHCP à notre site.

La différence majeure est que le serveur DHCPv6 n’envoie pas l’adresse de la passerelle aux clients. Ceux-ci l’obtiennent automatiquement grâce aux messages d’annonce des routeurs.

Le protocole DHCPv6 met en jeu 12 messages DHCP différents :

DHCP Solicit (Sollicitation DHCP)   :

Message d'interrogation de présence de serveurs DHCP. Il est émis vers un serveur ou un relais DHCP. Un client émet un tel message pour localiser les serveurs DHCP.Elle envoie sa requête en mode multicast vers tous les agents DHCP du lien (adresse FF02::1:2).

DHCP Advertise (Annonce DHCP)   :

Page 10: Rapport IPV6

Message de présence de serveurs DHCP. Il est émis en réponse à un message sollicitation DHCP afin de communiquer l'adresse IP d'un serveur DHCP. Le destinataire est le client s'il est sur le même lien que le serveur sinon ce message est adressé au relais du client

DHCP Request (Requête DHCP) :

Message de demande de paramètres de configuration de la part d'un client sans adresse.

DHCP Reply (Réponse DHCP) :

Message émis par le serveur suite à une demande du client. Il contient les valeurs des paramètres de configuration demandés.

DHCP Confirm (Confirmation DHCP) :

Message de demande de confirmation de validité des paramètres alloués au client.

DHCP Renew (Renouvellement DHCP) :

Message de demande de prolongation de l'adresse IP affectée

DHCP Rebind (Ré affectation DHCP) :

Identique au précédent message mais un autre serveur DHCP peut répondre, pas obligatoirement celui qui a alloué l'adresse IP.

DHCP Release (Libération DHCP) :

Message d'indication du client de libération des adresses IP préalablement allouées par le serveur.

DHCP Decline (Refus DHCP) :

Message d'indication du client qu'une ou plusieurs adresses affectées sont déjà utilisées sur son lien.

DHCP Reconfigure-init (Notification de reconfiguration DHCP) :

Message émis par le serveur pour informer le client qu'il a de nouvelles valeurs pour les paramètres de configuration. Le client doit alors commencer une nouvelle transaction pour acquérir ces informations

DHCP Relay-Forward (Encapsulation relais DHCP) :

Message du relais pour véhiculer les messages du client vers le serveur. Le message du client est encapsulé dans ce message.

Page 11: Rapport IPV6

DHCP Relay-Reply (Encapsulation serveur DHCP) :

Message généré par le serveur contenant un message pour le client. Ce message est à destination du relais qui extraira un message pour le client afin de le transmettre sur le lien du client

La configuration du routeur DHCP

La configuration du relay DHCP

Cette configuration est nécessaire si votre serveur DHCP se situe sur un autre segment de votre réseau que celle du client DHCP

Router> enableRouter# configure terminalRouter(config)# interface Ethernet 4/2Router(config-if) ipv6 dhcp relay destination FE80::250:A2FF:FEBF:A056 Ethernet 1

Router> enableRouter# configure terminalRouter(config)# ipv6 dhcp pool nticRouter(config-dhcp)# prefix-delegation 2001:0DB8:1263::/48Router(config-dhcp)# domain-name ntic.maRouter(config-dhcp)# dns-server 2001:0DB8:3000:1263::42Router(config-dhcp)# exitRouter(config)# interface serial 3Router(config-if)# ipv6 dhcp server dhcp-pool

Page 12: Rapport IPV6

Figure 6   : Les messages DHCP v6

3.3 - La sécurité dans IPv6

IPsec par défaut

IPv6 supporte par défaut les deux architectures classiques d'IPsec : AH et ESP.

L'extension d'authentification, ou AH, assure l'authentification et l'intégrité des données. L'émetteur calcule une signature sur un datagramme et l'émet avec le datagramme sur lequel elle porte. Le récepteur récupère cette valeur et vérifie qu'elle est correcte. Cette signature peut s'appuyer sur des clés asymétriques et éventuellement des certificats.

L'extension ESP (pour Encryption Security Payload) complète la précédente pour offrir la confidentialité des données. Elle permet de chiffrer l'ensemble des paquets (entête IPv6 comprise) ou seulement leur partie transport (tout ce qui se trouve après l'entête IP), selon les modes dits repectivement tunnel et transport.

Avant l'authentification ou le chiffrement de données IP, l'émetteur et le receveur doivent convenir des algorithmes et des clés à utiliser. Ceci se fait par le protocole IKE (pour Internet Key Exchange, [RFC2409]). Sans décrire les détails de ce dernier, il est important de se souvenir que ce protocole ne convient pas, dans l'état actuel, aux échanges multicast. Le trafic multicast passe donc en clair, pour la majorité des cas, dans le réseau.

Page 13: Rapport IPV6

SEND : Sécuriser la découverte du voisinage NDP

SEND propose de sécuriser NDP, le protocole de voisinage d'IPv6 . La première proposition est l'utilisation de CGA (Cryptographically Generated Addresses), qui crée des identifiants d'adresses à partir d'une clé publique.

Ce mécanisme permet de vérifier l'identité de la machine émettrice du paquet NDP. Pare-feux et filtrage

Plusieurs outils de filtrage existent, et sont mis à disposition dans les systèmes d'exploitation avec la couche IPv6. Parmi ceux-ci :

Sous Linux, il existe ip6tables, dont l'usage est très similaire à celui de son prédécesseur iptables pour IPv4.

Dans les versions BSD, pf permet de filtrer IPv6 de manière assez simple Mac OS s'appuie sur l'utilitaire ipfw (ip6fw) pour offrir le filtrage IPv6. Microsoft fournit également un pare-feu à partir de la version XP SP1, nommé

Internet Connexion Firewall puis Windows Firewall. L'utilisateur définit une seule configuration, qui s'applique pour IPv4 et IPv6.

Routage en IPv6

Configuration du Routage

Une fois les interfaces configurées (adresses, tunnels, annonce de préfixe), une connectivité de niveau 3 existe uniquement entre les routeurs directement connectés. Pour étendre cette connectivité, il faut mettre en oeuvre le routage IP. Il existe 3 types de routage :

le routage statique : les routes sont configurées manuellement et ne nécessitent pas la mise en oeuvre d'un protocole de routage

OmnisSwitch Alcatel Cisco Juniper

le routage interne : cantonné à un domaine administratif (ou système autonome, AS), il permet de distribuer des préfixes du domaine à des routeurs du domaine. On trouvera ci-dessous des exemples pour les protocoles de routage internes (IGP):

RIPOmnisSwitch Alcatel Cisco

ISIS Cisco Juniper

OSPF

Page 14: Rapport IPV6

Cisco Juniper

le routage externe : il permet à un AS d'échanger des préfixes réseaux avec des AS voisins. Ces préfixes, une fois redistribués à l'intérieur de l'AS, permettent d'avoir la connectivité vers l'Internet mondial. On trouvera ci-dessous des exemples pour le protocole EGP le plus répandu aujourd'hui : BGP4.

Cisco Juniper

Utilisation d'un ordinateur comme routeur

En IPv6 les fonctions de machine simple («node») et de routeur ont été nettement séparées. Il est donc courant d'utiliser de matériels spécialisés comme routeurs, et de configurer les machines normales comme des noeuds simples, sans fonction de routage (cf. Installation d'un équipement), et ce d'autant plus qu'un routeur dédié peut devenir complexe (plusieurs protocoles de routage, filtrage des paquets, interfaces spécialisées, VLANs, MPLS...). Il est malgré cela toujours possible d'utiliser un ordinateur universel comme routeur, en configurant des routes à la main ou en lançant des logiciels de routage. Il ne faut pas oublier que dans ce cas l'auto-configuration «sans état» ne peut plus être utilisée, et qu'il faut donner explicitement des adresses aux différentes interfaces.

Routeur Solaris Routeur Linux Routeur FreeBSD Routeur NetBSD

Quagga :

Généralités

Rappelons que la fonction de routage peut être décomposée en deux temps : le routage effectif des paquets (forwarding) et la construction des tables de routage (routing). Tout routeur IP fait du forwarding mais le routage pouvant être statique, tous ne font pas du routing. Ces deux fonctions sont typiquement mises en oeuvre par des parties très distinctes du routeur.

Sur Unix, le noyau effectue le forwarding, alors que le routing est confié à un programme extérieur comme Zebra\Quagga, outil qui regroupe un ensemble de systèmes de gestion de protocoles de routage. Il offre via un système unique la possibilité de gérer RIP, OSPF, BGP... En pratique, Zebra\Quagga se charge de mettre à jour les tables de routage de la machine, sous les ordres des démons de routage utilisés (cf. schema ci-dessous).

Page 15: Rapport IPV6

Les démons que sont Zebra et Quagga sont donc des intermédiaires entre le noyau de Linux et les démons de routage dynamique. Pour autant, il peuvent récupérer les routes statiques définies directement sous Linux afin de les diffuser via le routage dynamique. Ils permettent

eux-même de définir des routes statiques. Les routages statique et dynamique peuvent donc cohabiter sans problème avec Zebra ou Quagga.

L'un des intérêts de tels programmes est qu'ils offrent un ensemble d'outils permettant d'inspecter à distance d'autres machines sous Zebra\Quagga et d'étudier les actions en cours et les tables de routage. Ils permettent également de définir des routes statiques, des rêgles de filtrage ou encore le contrôle des échanges entre protocoles différents.

Le développement de Zebra est plus ou moins arrêté depuis novembre 2003, mois de sortie de la dernière version de ce logiciel.

Il reste néanmoins que c'est un système pratique, car il regroupe, sous un même principe, un grand nombre de méthodes de routage dynamique; c'est pourquoi il demeure un outil important pour la gestion de routage dynamique dans des réseaux de type moyen-grand sous Linux.

Quagga est le digne successeur du programme Zebra. Il se veut plus ouvert, et surtout plus actif que son prédécesseur. Il est composé, tout comme Zebra, de plusieurs démons qui acceptent chacun des connexions TCP. Il semble donc facile d'effectuer la configuration de chaque démon via une connexion telnet.

Programme encore en cours d'évolution, Quagga permet la gestion de systèmes de routage comme RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4...

Si cette connexion aux démons est très pratique pour déboguer ou surveiller un routeur, elle n'est pas forcément la plus efficace pour écrire ou modifier la configuration du routeur. Le mieux serait plutôt de modifier les fichiers de configuration via un éditeur, ce qui permet d'utiliser un bon outil d'édition et de préserver les commentaires.

Page 16: Rapport IPV6

L'emplacement des fichiers de configuration de Zebra ou de Quagga dépend du système Unix utilisé et de la manière dont Quagga a été compilé. En général, les fichiers sont dans /etc/zebra ou dans /etc/quagga. On trouve notamment :

zebra.conf, la configuration générale ; ospfd.conf, la configuration du protocole OSPF ; ripd.conf, la configuration du protocole RIP ; ospf6d.conf, la configuration du protocole OSPFv6 ; bgpd.conf, la configuration du protocole BGP.

Venons en maintenant à la console d'administration du démon. On l'atteint en faisant un telnet routeur démon. Comme on vient de le voir, le nom du démon est zebra, ospfd, ospf6d ou bien bgp.

Certaines commandes nécessiteronnt plus de privilège, ce sont celles qui modifieront l'état du routeur. La commande enable permet de passer dans cet état privilégié. Par exemple, pour changer la configuration du routeur ou bien pour réinitialiser une session BGP, vous devrez être en mode enable.

Avantages de Zebra et Quagga Logiciel libre sous licence GNU Interface de configuration interactive accessible via telnet Philosophie d'un langage de configuration proche d'IOS de Cisco Supporte les principaux protocoles de routage Il fonctionne avec IPv6.

Installation

Avant d'installer, on doit vérifier le contenue des fichiers des interfaces utilisés durant le routage. Les fichiers en question se trouve:

/etc/sysconfig/network-scripts

Les fichiers sont nommé : ifcfg-eth(chiffre de l'interface)

On doit s'assuré que les lignes IPADDR et NETMASK ne si trouve pas et que BOOTPROTO soit égale à static (BOOTPROTO=static).

On doit vérifier l'inexistance de variable GATEWAY ou GATEWAYDEV.

Page 17: Rapport IPV6

/etc/sysconfig/network

On voit la modification des fichiers effectuée on redémarrer le service de réseau.

service network restart

Il y a plusieurs rpm à télécharger avec Quagga, le mieux et d'installer le tout pour son bon fonctionnement.

yum -y install quagga*

Ceci permettra d'installer tous les rpms destiné au bon fonctionnement du routage. Il suffira d'activé l'auto-démarrage du routage lors de l'allumage de la machine.

chkconfig zebra onchkconfig ripd on

On active le routage RIP pour activé le routage dynamique des routes. Une fois que l'on s'est débrouiller pour le démarrage des services à l'allumage de la machine, maintenant il faut s'assurer que les services démarront adéquatement.

cp /etc/quagga/zebra.conf.sample /etc/quagga/zebra.conf cp /etc/quagga/ripd.conf.sample /etc/quagga/ripd.conf

Voilà que des fichiers de configuration prêt à l'emploi son placé, le problème est qu'il ne sont peut-être pas tous attribués à l'utilisateur Quagga qui démarre les services de routage.

chown quagga: /etc/quagga/*

Page 18: Rapport IPV6

Maintenant nous avons remédier à se problème. Activons les services de Quagga.

service zebra startservice ripd start

Il est temps de passer à sa configuration.

Configuration

Il y a divers méthode pour configurer le routage de quagga, soit en éditant les fichiers de configuration de chaque service, soit en passant par telnet ou en passant par le shell de quagga (vtysh).

Pour accéder individuellement chaque fonction de routage en passant par telnet, il faut connaître les ports de communication auxquels ils sont relié.

zebra: telnet localhost 2601 ripd: telnet localhost 2602ripng: telnet localhost 2603ospfd: telnet localhost 2604bgpd: telnet localhost 2605ospf6d: telnet localhost 2606

En utilisant le shell du logiciel, on est plus à l'aise pour faire sa configuration et on peut configurer tout les services en quelque commande et d'autant plus que si on connait la configuration d'un routeur Cisco tout devient facile dans les commandes qui sont similaire. Afin d'accéder au shell:

root@localhost~# vtysh

Maintenant, passons à la configuration du routage qui doit s'effectuer

Page 19: Rapport IPV6

vtysh!Hello, this is Quagga (version 0.99.3).Copyright 1996-2005 Kunihiro Ishiguro, et al.!localhost#localhost# conf tlocalhost(config)# hostname fedosrvfedosrv(config)# interface eth0fedosrv(config interface)# ip address 10.17.0.2/16fedosrv(config interface)# exitfedosrv(config)# interface eth1fedosrv(config interface)# ip address 172.168.1.2/24fedosrv(config interface)# exitfedosrv(config)# interface eth2fedosrv(config interface)# ip address 192.168.1.2/24fedosrv(config interface)# exitfedosrv(config)# router ripfedosrv(config router)# version 2fedosrv(config router)# redistribute connectedfedosrv(config router)# network 10.17.0.0/16fedosrv(config router)# network 172.168.1.0/24fedosrv(config router)# network 192.168.1.0/24fedosrv(config router)# exitfedosrv(config)# exitfedosrv # wrfedosrv # exitroot@localhost~#

Contenu du fichier zebra.conf   :

! Zebra configuration saved from vty! 2009/01/30 12:49:30!hostname fedosrv!interface eth0ip address 10.17.0.2/16ipv6 nd suppress-ra!interface eth1ip address 172.168.1.2/24ipv6 nd suppress-ra!interface eth1ip address 192.168.1.2/24ipv6 nd suppress-ra!interface lo!interface sit0ipv6 nd suppress-ra!ip forwarding!line vty

Page 20: Rapport IPV6

Le contenue du fichier ripd.conf

! Zebra configuration saved from vty! 2009/01/30 12:49:30!hostname ripdpassword zebralog stdout!router ripversion 2redistribute connectednetwork 10.17.0.0/16network 172.168.1.0/24network 192.168.1.0/24!line vty

Page 21: Rapport IPV6

Configuration de l’adressage IPv6

La première chose avant de configurer IPv6 sur le routeur est de s’assurer que la version adéquate d’IOS est installée sur le routeur. IPv6 a été introduit dans la version IOS 12.2 (2) T et c’est donc la version la plus ancienne que l’on peut utiliser.La version de Cisco IOS peut être vérifiée par la commande show version.Voici quelques commandes du routeur qui donnent un aperçu des commandes variées que l’on peut configurer rien que pour IPv6. La première liste est en mode de configuration globale. La seconde est en mode interface et dans ce cas précis une interface ethernet.

Router(config)#ipv6 ?

access-list Configure access listshop-limit Configure hop count limithost Configure static hostnamesicmp Configure ICMP parametersneighbor Neighborprefix-list Build a prefix listroute Configure static routesrouter Enable an IPv6 routing processunicast-routing Enable unicast routing

Router(config-if)#ipv6 ?

IPv6 interface subcommands:address Configure IPv6 address on interfaceenable Enable IPv6 on interfacemtu Set IPv6 Maximum Transmission Unitnd IPv6 interface Neighbor Discovery redirects Enable sending of ICMP Redirect messagesrip Configure RIP routing protocoltraffic-filter Access control list for packetsunnumbered Configure IPv6 interface as unnumbered

La première étape est maintenant d’activer globalement IPv6 sur le routeur. On peut le faire mode de configuration avec la commande « ipv6 unicast-routing »Cette commande active IPv6 pour tout le routeur. Si cette commande n’est pas activée globalement, le reste des commandes sur les interfaces seront inopérantes.

L’étape suivante est d’activer IPv6 sur les interfaces désirées.On peut configurer une adresse IPv6 sur une interface LAN ou WAN et nous prendrons comme exemple une interface LAN.

Il y a quelques étapes pour configurer une adresse LAN. En considérant que le routage IPv6 global est déjà activé, la première étape est de configurer l’interface actuelle. Dans la plupart des cas, cela peut être une interface Ethernet bien qu’il soit possible de configurer IPv6 aussi bien du Token Ring ou FDDI. Nous nous concentrerons sur les interfaces ethernet.

Il y a trois types d’adresses que l’on peut attribuer à des adresses LAN. Les trois types sont «

Router#conf tEnter configuration commands, one per line. End with CNTL/Z.Router(config)#ipv6 unicast-routingRouter(config)#

Page 22: Rapport IPV6

link-local », « site-local » et les adresses dites globales. L’adresse globale et l’adresse « site-local » sont attribuées en même temps. SI une adresse globale est déjà attribuée par l’architecture du réseau, alors l’adresse complète sera tapée pendant la configuration. Si seulement les 64 premiers bits sont spécifiés, alors la commande EUI (Extended Unique Identifier) à la fin de l’adresse globale va avoir un identifiant d’interface attribué pour l’adresse globale.Pour entrer une adresse dans le routeur, il faut passer en mode de configuration et sélectionner l’interface désirée. L’EUI fonctionne de manière similaire pour les adresses « link-local ». Si l’EUI est utilisé, alors seuls les 64 premiers bits de l’adresse ont besoin d’être spécifiés ; le reste de l’adresse étant remplis automatiquement en utilisant l’adresse MAC du routeur. Si on a des interfaces multiples utilisant le paramètre EUI, on aura alors des adresses qui finiront toutes par les même 64 derniers bits.

Router configuration for predetermined global address

Router configuration for global address to be assigned interface identifier

RouterA#conf tEnter configuration commands, one per line. End with CNTL/Z.RouterA(config)#int s0RouterA(config-if)#ipv6 address 2000:1:1::1/64RouterA(config-if)#

RouterA#conf tEnter configuration commands, one per line. End with CNTL/Z.RouterA(config)#int s0RouterA(config-if)#ipv6 address 2000:1:1:1::/64 eui-64RouterA(config-if)#

Quand le paramètre EUI est utilisé, les 64 bits restants de l’adresse sont automatiquement remplis par le routeur. On peut voir l’adresse ainsi produite par la commande ci-dessous. Notons que seulement les 64 premiers bits ont été définis. Notons également que l’adresse « link-local » possède les même 64 derniers bits que l’adresse globale.

Vérification de la configuration d’adressage

Cette section montre beaucoup des commandes nécessaires pour vérifier que la configuration est en place et qu’elle fonctionne telle que prévu.La liste suivante montre les commandes show disponibles qui sont spécifiques à l’IPv6

Router#show ipv6 int s0Serial1 is down, line protocol is downIPv6 is enabled, link-local address is FE80::2E0:B0FF:FE5A:D998Global unicast address(es):2001:1:1:1:2E0:B0FF:FE5A:D998, subnet is 2001:1:1:1::/64

Page 23: Rapport IPV6

La première commande montre si IPv6 est configuré pour fonctionner est “show running-config”.

Pour vérifier qu’une adresse LAN est configurée correctement, utilisons la commande « show ipv6 interfaces <type> ». Cette commande est très utile pour obtenir des informations de bases sur l’interface

4.2 - Routage statique IPv6

Pour mettre en place un routage statique IPv6 sur un routeur Cisco, il est nécessaire de disposer d'IOS 12.2 minimum.

La configuration d'un routage statique IPv6 est similaire à la configuration d'une route statique IPv4. La différence réside dans le fait que l'on utilise la commande  « ipv6 route ».

4.3 - Routage avec le protocole RIPng

Bien que RIP IPv6 soit très similaire à son prédécesseur, certaines différences existent entre les deux protocoles. La première de ces différences est apparente quand on active le processus de routage RIP. Dans la version précédente, on démarrait le processus RIP par un commande « router rip » en mode de configuration globale suivie de la spécification des réseaux que l’on voulait inclure dans le domaine de routage RIP en tapant la commande network. La configuration de RIP IPv6 est similaire mais pas identique. Pour activer le processus RIP pour IPv6, on utilise la commande « ipv6 router rip <word> ». La commande <word> désigne un

router#show ipv6 ?

access-list         Summary of access listsinterface           IPv6 interface status and configurationmtu                   MTU per destination cacheneighbors         Show IPv6 neighbor cache entriesprefix-list         List IPv6 prefix listsprotocols          IPv6 Routing Protocolsrip                     RIP routing protocol statusroute                Show IPv6 route table entriesrouters             Show local IPv6 routerstraffic               IPv6 protocol statisticstunnel              Summary of IPv6 tunnels

Router> enable Router# configure terminalRouter(config)# ipv6 route 2000:1:3::0 /64 2000:1:1::2

Page 24: Rapport IPV6

identifiant de processus qui est une série de chiffres ou lettres définis pas l’utilisateur pour identifier le processus RIP en question. Cela permet au routeur de lancer séparément de multiples processus RIP sur le même routeur. Pour ajouter des réseaux particuliers au domaine de routage RIP IPv6, on utilise la commande « ipv6 rip <word> enable. » Cette commande place cette interface IPv6 dans le domaine de routage RIP IPv6.

Dans l’exemple qui figure ci-dessus, nous avons crée un domaine de routage RIP avec 6 sous réseaux séparés, 2000:1:1::/64, qui est le réseau qui relie les interfaces séries des deux routeurs A , B et le sous réseau 2000:1:5::/64 relie les interfaces séries des deux routeurs A , B, 2000:1:1::/64, qui est le réseau qui relie les interfaces séries des deux routeurs A et B et nous avons 3 réseaux sur les interface Ethernet 0 de chaque routeur, 2000:1:2::/64 et 2000:1:3::/64 respectivement. En tapant la commande « show ipv6 protocol », on peut voir tous les protocoles de routage IPv6 qui tournent actuellement sur le routeur. Dans le listing ci-dessous, nous voyons deux réseaux connectés, des routes statiques et, bien sur le RIP qui tourne sur le Routeur A.

Vérification du fonctionnement de RIP IPv6

Nous avons peu de commandes à utiliser pour vérifier que RIP IPv6 fonctionne correctement :

commande utilité« show ipv6 rip » -Information sur le délai

-Information de Port-Fréquence de mise à jour-Type de mise à jour-Information sur la route par défaut

« show ipv6 protocols »-Protocoles de routage utilisés

Router>enablePassword:RouterA#config terminalEnter configuration commands, one per line. End with CNTL/Z.RouterA(config)#ipv6 router rip ciscoRouterA(config-rtr)#exitRouterA(config)#interface ethernet 0RouterA(config-if)#ipv6 rip cisco enableRouterA(config-if)#exitRouterA(config)#interface serial 0RouterA(config-if)#ipv6 rip cisco enableRouterA(config-if)#exitRouterA(config)#interface serial 1RouterA(config-if)#ipv6 rip cisco enableRouterA(config-if)#exit

Page 25: Rapport IPV6

-Interfaces utilisées par les protocoles de routage-Information sur la Redistribution

4.4 - Routage par défaut IPv6

Une route par défaut est, simplement, une route que le routeur ou le protocole de routage utilise pour transférer les paquets dont il n’a pas actuellement d’adresse de destination dans ses tables de routage. Les routes par défaut ont été utilisées largement par tous protocoles de routage IPv4. RIP IPv6 supporte également l’utilisation et la configuration des routes par défaut. A la différence de RIP IPv4, par contre, la ou l’on configurait les routes par défaut en mode de configuration globale, on configure RIP IPv6 pour les routes par défaut en mode d’interface en utilisant la commande « default-information ». Cette commande indique au routeur d’injecter une route « ::/0 » dans le domaine de routage RIP comme la route par défaut (ou connue comme la passerelle de la dernière chance). La commande « default-information » nous donne un ou deux paramètres : « originate » et « only ».

- « originate » indique au routeur d’injecter une route «::/0 » dans le domaine de routage RIP et annonce cette route accompagnée de toutes les autres routes dans ses messages de mises à jour de routage.

- « only » demande au routeur d’annoncer seulement cette route par défaut et de supprimer des mises à jour de routage toute autre route.

Dans l’exemple précédent, nous sommes allé en mode de configuration d’interface et tapé la commande «ipv6 rip cisco default-information originate », ce qui a indiqué au routeur d’utiliser le réseau connecté à l’interface serial 0 comme la route par défaut.

Si nous regardons dans la table de routage du routeur voisin RouteurB, on voit que le RouteurA a injecté en fait cette route par défaut dans le domaine de routage RIP. Si nous regardons la table de routage précédente, nous voyons une entrée RIP supplémentaire pour le réseau ::/0 via serial 0. Notons que ces entrées RIP sont suivies de la mention « R ». C’est la route par défaut.

4.5 - Utilisation Telnet IPv6

RouterA#conf tEnter configuration commands, one per line. End with CNTL/Z.RouterA(config)#interface serial0RouterA(config-if)#ipv6 rip cisco default-information ?only Advertise only the default routeoriginate Originate the default routeRouterA(config-if)#ipv6 rip cisco default-information originateRouterA(config-if)#exit

Page 26: Rapport IPV6

Le client et le serveur Telnet de Cisco IOS supportent les connections IPv6. Un utilisateur peudirectement établir une connexion IPv6 sur le routeur ou bien une session Telnet peut être initialisée à partir du routeur.

Une interface vty et un mot de passe doivent d'abord être créés pour activer la fonction Telnet du routeur IPv6.

Figure 8 : Session Telnet

La configuration du service Telnet v6

Router> enableRouter# configure terminalRouter# enable password torinoRouter(config)# ipv6 host cisco-sj 2001:0db8:20:1::12Router(config)# line vty 0 4Router(config)# password hostwordRouter(config-line)# login Router(config-line)# exitRouter(config)# telnet cisco-sjouRouter(config)# telnet 2001:0db8:20:1::12Router(config)# exit


Top Related