Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit comment configurer l'appareil de sécurité adaptatif Cisco (ASA) afin de transmettre le trafic IPv6 (Internet Protocol Version 6) dans ASA Versions 7.0(1) et ultérieures.
Aucune exigence spécifique n'est associée à ce document.
Les informations contenues dans ce document sont basées sur les versions 7.0(1) et ultérieures de Cisco ASA.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Actuellement, IPv6 est encore relativement nouveau en termes de pénétration du marché. Cependant, les demandes d'assistance à la configuration et de dépannage IPv6 ont régulièrement augmenté. L'objectif de ce document est de répondre à ces besoins et de fournir :
Remarque : Étant donné que l'IPv6 n'en est encore qu'à ses débuts en tant que protocole de remplacement de l'IPv4 à l'échelle mondiale, ce document doit être mis à jour régulièrement afin de garantir sa précision et sa pertinence.
Voici quelques informations importantes sur la fonctionnalité IPv6 :
Le protocole IPv6 a été développé entre le milieu et la fin des années 1990, principalement en raison du fait que l'espace d'adressage IPv4 public a rapidement été réduit. Bien que la traduction d'adresses de réseau (NAT) ait considérablement aidé IPv4 et retardé ce problème, il est devenu indéniable qu'un protocole de remplacement serait finalement nécessaire. Le protocole IPv6 a été officiellement détaillé dans le document RFC 2460 en décembre 1998. Vous pouvez en savoir plus sur le protocole dans le document officiel RFC 2460, situé sur le site Web de l'IETF (Internet Engineering Task Force).
Cette section décrit les améliorations apportées au protocole IPv6 par rapport à l'ancien protocole IPv4.
Le protocole IPv6 augmente la taille de l'adresse IP de 32 bits à 128 bits afin de prendre en charge davantage de niveaux de hiérarchie d'adressage, un plus grand nombre de noeuds adressables et une configuration automatique des adresses plus simple. L’évolutivité du routage de multidiffusion est améliorée par l’ajout d’un champ d’étendue aux adresses de multidiffusion. En outre, un nouveau type d’adresse, appelé adresse de diffusion anycast, est défini. Il est utilisé afin d'envoyer un paquet à n'importe quel noeud d'un groupe.
Certains champs d'en-tête IPv4 ont été supprimés ou rendus facultatifs afin de réduire le coût de traitement de cas commun de la gestion des paquets et afin de limiter le coût de bande passante de l'en-tête IPv6.
Les modifications apportées au mode de codage des options d'en-tête IP permettent un transfert plus efficace, des limites moins strictes sur la longueur des options et une plus grande flexibilité pour l'introduction de nouvelles options à l'avenir.
Une nouvelle fonctionnalité est ajoutée afin de permettre l'étiquetage de paquets qui appartiennent à des flux de trafic particuliers pour lesquels l'expéditeur demande un traitement spécial, comme une qualité de service (QoS) non par défaut ou un service en temps réel.
Les extensions utilisées pour prendre en charge l'authentification, l'intégrité des données et (facultatif) la confidentialité des données sont spécifiées pour IPv6.
Cette section décrit comment configurer Cisco ASA pour l'utilisation d'IPv6.
Remarque : Utilisez l'Outil de recherche de commande (clients inscrits seulement) pour obtenir plus d'informations sur les commandes utilisées dans cette section.
Voici la topologie IPv6 pour les exemples utilisés tout au long de ce document :

Pour faire passer le trafic IPv6 via un ASA, vous devez d'abord activer IPv6 sur au moins deux interfaces. Cet exemple décrit comment activer IPv6 afin de transmettre le trafic de l'interface interne sur Gi0/0 à l'interface externe sur Gi0/1 :
ASAv(config)# interface GigabitEthernet0/0
ASAv(config-if)# ipv6 enable
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 enable
Vous pouvez maintenant configurer les adresses IPv6 sur les deux interfaces.
Remarque : Dans cet exemple, les adresses dans l'espace Unique Local Addresses (ULA) de fc00::/7 sont utilisées, de sorte que toutes les adresses commencent par FD (tel que, fdxx:xxxx:xxxx....). En outre, lorsque vous écrivez des adresses IPv6, vous pouvez utiliser des doubles deux-points (::) afin de représenter une ligne de zéros de sorte que FD01::1/64 soit identique à FD01:0000:0000:0000:0000:0000:0000:00001.
ASAv(config)# interface GigabitEthernet0/0
ASAv(config-if)# ipv6 address fd03::1/64
ASAv(config-if)# nameif inside
ASAv(config-if)# security-level 100
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 address fd02::2/64
ASAv(config-if)# nameif outside
ASAv(config-if)# security-level 0
Vous pouvez maintenant avoir la connectivité de base de couche 2 (L2)/couche 3 (L3) à un routeur en amont sur le VLAN externe à l'adresse fd02::1:
ASAv(config-if)# ping fd02::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to fd02::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/10 ms
Tout comme avec IPv4, même s'il existe une connectivité IPv6 avec les hôtes sur le sous-réseau connecté directement, vous devez toujours disposer des routes vers les réseaux externes afin de savoir comment les atteindre. Le premier exemple montre comment configurer une route statique par défaut afin d'atteindre tous les réseaux IPv6 via l'interface externe avec une adresse de tronçon suivant de fd02::1.
Utilisez ces informations afin de configurer le routage statique pour IPv6 :
ASAv(config)# ipv6 route outside 0::0/0 fd02::1
ASAv(config)# show ipv6 route
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, B - BGP
L fd02::2/128 [0/0]
via ::, outside
C fd02::/64 [0/0]
via ::, outside
L fd03::1/128 [0/0]
via ::, inside
C fd03::/64 [0/0]
via ::, inside
L fe80::/10 [0/0]
via ::, inside
via ::, outside
L ff00::/8 [0/0]
via ::, inside
via ::, outside
S ::/0 [1/0]
via fd02::1, outside ASAv(config)#
Comme indiqué, il existe désormais une connectivité à un hôte sur un sous-réseau externe :
ASAv(config)# ping fd99::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to fd99::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
ASAv(config)#
Remarque : Si un protocole de routage dynamique est souhaité afin de gérer le routage pour IPv6, vous pouvez également le configurer. Ceci est décrit dans la section suivante.
Vous devez tout d'abord examiner la configuration OSPFv3 (Open Shortest Path First Version 3) sur le routeur à services intégrés (ISR) Cisco 881 en amont :
C881#show run | sec ipv6
ipv6 unicast-routing
!--- This enables IPv6 routing in the Cisco IOS®.
.....
ipv6 ospf 1 area 0
address-family ipv6 unicast
passive-interface default
no passive-interface Vlan302
!--- This is the interface to send OSPF Hellos to the ASA.
default-information originate always
!--- Always distribute the default route.
redistribute static
ipv6 route ::/0 FD99::2
!--- Creates a static default route for IPv6 to the internet.
Voici la configuration d’interface appropriée :
C881#show run int Vlan302
interface Vlan302
....
ipv6 address FD02::1/64
ipv6 ospf 1 area 0
C881#
Vous pouvez utiliser des captures de paquets ASA afin de vérifier que les paquets Hello OSPF sont vus depuis l'ISR sur l'interface externe :
ASAv(config)# show run access-list test_ipv6
access-list test_ipv6 extended permit ip any6 any6
ASAv(config)# show cap
capture capout type raw-data access-list test_ipv6 interface outside
[Capturing - 37976 bytes]
ASAv(config)# show cap capout
367 packets captured
1: 11:12:04.949474 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
2: 11:12:06.949444 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
3: 11:12:07.854768 fe80::c671:feff:fe93:b516 > ff02::5: ip-proto-89 40
[hlim 1]
4: 11:12:07.946545 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
5: 11:12:08.949459 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
6: 11:12:09.542772 fe80::217:fff:fe17:af80 > ff02::5: ip-proto-89 40
[hlim 1]
....
13: 11:12:16.983011 fe80::c671:feff:fe93:b516 > ff02::5: ip-proto-89 40
[hlim 1]
14: 11:12:18.947170 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
neighbor sol: who has fe80::250:56ff:fe9d:34a8 [class 0xe0]
15: 11:12:19.394831 fe80::217:fff:fe17:af80 > ff02::5: ip-proto-89 40
[hlim 1]
16: 11:12:19.949444 fe80::250:56ff:fe9d:34a8 > ff02::1:ff9d:34a8: icmp6:
21: 11:12:26.107477 fe80::c671:feff:fe93:b516 > ff02::5: ip-proto-89 40
[hlim 1]
ASAv(config)#
Dans la capture de paquets précédente, vous pouvez voir que les paquets OSPF (ip-proto-89) arrivent de l'adresse link-local IPv6, qui correspond à l'interface correcte sur l'ISR :
C881#show ipv6 interface brief
......
Vlan302 [up/up]
FE80::C671:FEFF:FE93:B516
FD02::1
C881#
Vous pouvez maintenant créer un processus OSPFv3 sur l'ASA afin d'établir une contiguïté avec l'ISR :
ASAv(config)# ipv6 router ospf 1
ASAv(config-rtr)# passive-interface default
ASAv(config-rtr)# no passive-interface outside
ASAv(config-rtr)# log-adjacency-changes
ASAv(config-rtr)# redistribute connected
ASAv(config-rtr)# exit
Appliquez la configuration OSPF à l'interface externe ASA :
ASAv(config)# interface GigabitEthernet0/1
ASAv(config-if)# ipv6 ospf 1 area 0
ASAv(config-if)# end
Cela peut amener l'ASA à envoyer les paquets Hello OSPF de diffusion sur le sous-réseau IPv6. Entrez la commande show ipv6 ospf neighbor afin de vérifier la contiguïté avec le routeur :
ASAv# show ipv6 ospf neighbor
Neighbor ID Pri State Dead Time Interface ID Interface
14.38.104.1 1 FULL/BDR 0:00:33 14 outside
Vous pouvez également confirmer l'ID de voisin sur l'ISR, car il utilise l'adresse IPv4 configurée la plus élevée pour l'ID par défaut :
C881#show ipv6 ospf 1
Routing Process "ospfv3 1" with ID 14.38.104.1
Supports NSSA (compatible with RFC 3101)
Event-log enabled, Maximum number of events: 1000, Mode: cyclic
It is an autonomous system boundary router
Redistributing External Routes from,
static
Originate Default Route with always
!--- Notice the other OSPF settings that were configured.
Router is not originating router-LSAs with maximum metric
....
C881#
L'ASA doit maintenant avoir appris la route IPv6 par défaut à partir de l'ISR. Afin de confirmer ceci, entrez la commande show ipv6 route :
ASAv# show ipv6 route
IPv6 Routing Table - 8 entries
Codes: C - Connected, L - Local, S - Static
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, B - BGP
O 2001:aaaa:aaaa:aaaa::/64 [110/10]
via ::, outside
L fd02::2/128 [0/0]
via ::, outside
C fd02::/64 [0/0]
via ::, outside
L fd03::1/128 [0/0]
via ::, inside
C fd03::/64 [0/0]
via ::, inside
L fe80::/10 [0/0]
via ::, inside
via ::, outside
L ff00::/8 [0/0]
via ::, inside
via ::, outside
OE2 ::/0 [110/1], tag 1
!--- Here is the learned default route.
via fe80::c671:feff:fe93:b516, outside
ASAv#
La configuration de base des paramètres d'interface et des fonctions de routage pour IPv6 sur l'ASA est maintenant terminée.
Aucune procédure de vérification n'est disponible pour cette configuration.
Les procédures de dépannage pour la connectivité IPv6 utilisent la plupart de la même méthodologie que celle utilisée pour dépanner la connectivité IPv4, avec quelques différences. Du point de vue du dépannage, l'une des différences les plus importantes entre IPv4 et IPv6 est que le protocole ARP (Address Resolution Protocol) n'existe plus dans IPv6. Au lieu d'utiliser le protocole ARP pour résoudre les adresses IP sur le segment LAN local, IPv6 utilise un protocole appelé ND (Neighbor Discovery).
Il est également important de comprendre que ND exploite le protocole ICMPv6 (Internet Control Message Protocol Version 6) pour la résolution d'adresses MAC (Media Access Control). Pour plus d'informations sur IPv6 ND, reportez-vous au guide ASA IPv6 Configuration dans la section IPv6 Neighbor Discovery du CLI Book 1: Guide de configuration CLI des opérations générales de la gamme Cisco ASA, version 9.4 ou dans la RFC 4861.
Actuellement, la plupart des dépannages liés à IPv6 impliquent des problèmes de configuration ND, de routage ou de sous-réseau. Cela est probablement dû au fait qu'il s'agit également des différences clés entre IPv4 et IPv6. Le ND fonctionne différemment du protocole ARP et l'adressage réseau interne est également très différent, car l'utilisation de la NAT est fortement déconseillée dans IPv6 et l'adressage privé n'est plus exploité de la même manière que dans IPv4 (après RFC 1918). Une fois que ces différences sont comprises et/ou que les problèmes de couche 2/3 sont résolus, le processus de dépannage au niveau de la couche 4 (L4) et supérieure est essentiellement le même que celui utilisé pour IPv4, car les protocoles TCP/UDP et de couche supérieure fonctionnent essentiellement de la même manière (quelle que soit la version IP utilisée).
La commande la plus basique qui est utilisée afin de dépanner la connectivité de couche 2 avec IPv6 est la commande show ipv6 neighbor [nameif], qui est l'équivalent de la commande show arp pour IPv4.
Voici un exemple de résultat :
ASAv(config)# show ipv6 neighbor outside
IPv6 Address Age Link-layer Addr State Interface
fd02::1 0 c471.fe93.b516 REACH outside
fe80::c671:feff:fe93:b516 32 c471.fe93.b516 DELAY outside
fe80::e25f:b9ff:fe3f:1bbf 101 e05f.b93f.1bbf STALE outside
fe80::b2aa:77ff:fe7c:8412 101 b0aa.777c.8412 STALE outside
fe80::213:c4ff:fe80:5f53 101 0013.c480.5f53 STALE outside
fe80::a64c:11ff:fe2a:60f4 101 a44c.112a.60f4 STALE outside
fe80::217:fff:fe17:af80 99 0017.0f17.af80 STALE outside
ASAv(config)#
Dans ce résultat, vous pouvez voir la résolution réussie pour l'adresse IPv6 de fd02::1, qui appartient au périphérique avec une adresse MAC de c471.fe93.b516.
Remarque : Vous remarquerez peut-être que la même adresse MAC d'interface de routeur apparaît deux fois dans le résultat précédent, car le routeur a également une adresse link-local auto-attribuée pour cette interface. L'adresse link-local est une adresse spécifique au périphérique qui ne peut être utilisée que pour la communication sur le réseau connecté directement. Les routeurs ne transmettent pas les paquets via des adresses link-local, mais uniquement pour la communication sur le segment de réseau connecté directement. De nombreux protocoles de routage IPv6 (tels qu'OSPFv3) utilisent des adresses link-local afin de partager les informations de protocole de routage sur le segment L2.
Afin d'effacer le cache ND, entrez la commande clear ipv6 neighbors. Si le ND échoue pour un hôte particulier, vous pouvez entrer la commande debug ipv6 nd, effectuer des captures de paquets et vérifier les syslogs, afin de déterminer ce qui se produit au niveau de L2. N'oubliez pas que le ND IPv6 utilise des messages ICMPv6 afin de résoudre les adresses MAC pour les adresses IPv6.
Considérez ce tableau comparatif d'ARP pour IPv4 et ND pour IPv6 :
| IPv4 ARP | ND IPv6 |
|---|---|
| REQUÊTE ARP (Qui a 10.10.10.1 ?) | Sollicitation de voisin |
| RÉPONSE ARP (10.10.10.1 est à dead.dead.dead) | Annonce de voisin |
Dans le scénario suivant, le ND ne parvient pas à résoudre l'adresse MAC de l'hôte fd02::1 qui est situé sur l'interface externe.
Voici le résultat de la commande debug ipv6 nd :
ICMPv6-ND: Sending NS for fd02::1 on outside
!--- "Who has fd02::1"
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: INCMP deleted: fd02::1
ICMPv6-ND: INCMP -> DELETE: fd02::1
ICMPv6-ND: DELETE -> INCMP: fd02::1
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NA for fd02::2 on outside
!--- "fd02::2 is at dead.dead.dead"
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: INCMP deleted: fd02::1
ICMPv6-ND: INCMP -> DELETE: fd02::1
ICMPv6-ND: DELETE -> INCMP: fd02::1
!--- Here is where the ND times out.
ICMPv6-ND: Sending NS for fd02::1 on outside
ICMPv6-ND: Sending NS for fd02::1 on outside
Dans cette sortie de débogage, il apparaît que les annonces de voisinage de fd02::2 ne sont jamais reçues. Vous pouvez vérifier les captures de paquets afin de confirmer si c'est réellement le cas.
Remarque : Depuis la version 9.4(1) de l'ASA, les listes d'accès sont toujours requises pour les captures de paquets IPv6. Une demande d'amélioration a été déposée afin de suivre ceci avec l'ID de bogue Cisco CSCtn09836.
Configurez la liste de contrôle d’accès (ACL) et les captures de paquets :
ASAv(config)# access-list test_ipv6 extended permit ip any6 any6
ASAv(config)# cap capout interface outside access-list test_ipv6
Lancez une requête ping vers fd02::1 à partir de l'ASA:
ASAv(config)# show cap capout
....
23: 10:55:10.275284 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
24: 10:55:10.277588 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
26: 10:55:11.287735 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
27: 10:55:11.289642 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
28: 10:55:12.293365 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
29: 10:55:12.298538 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
32: 10:55:14.283341 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
33: 10:55:14.285690 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
35: 10:55:15.287872 fd02::2 > ff02::1:ff00:1: icmp6: neighbor sol: who has
fd02::1 [class 0xe0]
36: 10:55:15.289825 fd02::1 > fd02::2: icmp6: neighbor adv: tgt is fd02::1
[class 0xe0]
Comme indiqué dans les captures de paquets, les annonces de voisinage de fd02::1 sont reçues. Cependant, les annonces ne sont pas traitées pour une raison quelconque, comme indiqué dans les sorties de débogage. Pour un examen plus approfondi, vous pouvez afficher les journaux système.
Voici quelques exemples de syslogs ND :
May 13 2015 10:55:10: %ASA-7-609001: Built local-host identity:fd02::2
May 13 2015 10:55:10: %ASA-6-302020: Built outbound ICMP connection for faddr
ff02::1:ff00:1/0 gaddr fd02::2/0 laddr fd02::2/0(any)
May 13 2015 10:55:10: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:10: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:11: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:11: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:12: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:12: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:14: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:14: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
May 13 2015 10:55:15: %ASA-3-325003: EUI-64 source address check failed. Dropped
packet from outside:fd02::1/0 to fd02::2/0 with source MAC address c471.fe93.b516.
May 13 2015 10:55:15: %ASA-3-313008: Denied IPv6-ICMP type=136, code=0 from fd02::1
on interface outside
Dans ces syslogs, vous pouvez voir que les paquets d'annonce de voisin ND de l'ISR à fd02::1 sont abandonnés en raison de l'échec des vérifications de format d'identificateur unique étendu modifié (EUI) 64 (EUI-64 modifié).
Conseil : Référez-vous à la section Codage d'adresse EUI-64 modifié de ce document pour plus d'informations sur ce problème spécifique. Cette logique de dépannage peut également être appliquée à toutes sortes de raisons d'abandon, par exemple lorsque les listes de contrôle d'accès n'autorisent pas l'ICMPv6 sur une interface spécifique ou lorsque des échecs de vérification du transfert de chemin inverse de monodiffusion (uRPF) se produisent, qui peuvent tous deux entraîner des problèmes de connectivité de couche 2 avec IPv6.
Les procédures de dépannage des protocoles de routage lorsque IPv6 est utilisé sont essentiellement les mêmes que celles utilisées lorsque IPv4 est utilisé. L'utilisation des commandes debug et show, ainsi que des captures de paquets, sont utiles pour tenter de déterminer la raison pour laquelle un protocole de routage ne se comporte pas comme prévu.
Cette section présente les commandes de débogage utiles pour IPv6.
Débogages globaux du routage IPv6
Vous pouvez utiliser la commande debug ipv6 routing debug afin de dépanner toutes les modifications de la table de routage IPv6 :
ASAv# clear ipv6 ospf 1 proc
Reset OSPF process? [no]: yes
ASAv# IPv6RT0: ospfv3 1, Route update to STANDBY with epoch: 2 for
2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ospfv3 1, Delete 2001:aaaa:aaaa:aaaa::/64 from table
IPv6RT0: ospfv3 1, Delete backup for fd02::/64
IPv6RT0: ospfv3 1, Route update to STANDBY with epoch: 2 for ::/0
IPv6RT0: ospfv3 1, Delete ::/0 from table
IPv6RT0: ospfv3 1, ipv6_route_add_core for 2001:aaaa:aaaa:aaaa::/64 [110/10],
next-hop :: nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, Add 2001:aaaa:aaaa:aaaa::/64 to table
IPv6RT0: ospfv3 1, Added next-hop :: over outside for 2001:aaaa:aaaa:aaaa::/64,
[110/10]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for
2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: input add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: output add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ospfv3 1, ipv6_route_add_core for fd02::/64 [110/10], next-hop ::
nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, ipv6_route_add_core for ::/0 [110/1], next-hop
fe80::c671:feff:fe93:b516
nh_source fe80::c671:feff:fe93:b516 via interface outside route-type 16
IPv6RT0: ospfv3 1, Add ::/0 to table
IPv6RT0: ospfv3 1, Added next-hop fe80::c671:feff:fe93:b516 over outside for ::/0,
[110/1]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for ::/0
IPv6RT0: ipv6_route_add_core: input add ::/0
IPv6RT0: ipv6_route_add_core: output add ::/0
IPv6RT0: ospfv3 1, ipv6_route_add_core for 2001:aaaa:aaaa:aaaa::/64 [110/10],
next-hop :: nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, Route add 2001:aaaa:aaaa:aaaa::/64 [owner]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for
2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: input add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ipv6_route_add_core: output add 2001:aaaa:aaaa:aaaa::/64
IPv6RT0: ospfv3 1, ipv6_route_add_core for fd02::/64 [110/10], next-hop ::
nh_source :: via interface outside route-type 2
IPv6RT0: ospfv3 1, Reuse backup for fd02::/64, distance 110
IPv6RT0: ospfv3 1, ipv6_route_add_core for ::/0 [110/1], next-hop
fe80::c671:feff:fe93:b516 nh_source fe80::c671:feff:fe93:b516 via interface outside
route-type 16
IPv6RT0: ospfv3 1, Route add ::/0 [owner]
IPv6RT0: ospfv3 1, ipv6_route_add_core Route update to STANDBY with epoch: 2 for ::/0
IPv6RT0: ipv6_route_add_core: input add ::/0
IPv6RT0: ipv6_route_add_core: output add ::/0
Débogages OSPFv3
Vous pouvez utiliser la commande debug ipv6 ospf afin de dépanner les problèmes OSPFv3 :
ASAv# debug ipv6 ospf ?
adj OSPF adjacency events
database-timer OSPF database timer
events OSPF events
flood OSPF flooding
graceful-restart OSPF Graceful Restart processing
hello OSPF hello events
ipsec OSPF ipsec events
lsa-generation OSPF lsa generation
lsdb OSPF database modifications
packet OSPF packets
retransmission OSPF retransmission events
spf OSPF spf
Voici un exemple de résultat pour tous les débogages qui sont activés après le redémarrage du processus OSPFv3 :
ASAv# clear ipv6 ospf 1
OSPFv3: rcv. v:3 t:1 l:44 rid:192.168.128.115
aid:0.0.0.0 chk:a9ac inst:0 from outside
OSPFv3: Rcv hello from 192.168.128.115 area 0 from outside fe80::217:fff:fe17:af80
interface ID 142
OSPFv3: End of hello processingpr
OSPFv3: rcv. v:3 t:1 l:44 rid:14.38.104.1
aid:0.0.0.0 chk:bbf3 inst:0 from outside
OSPFv3: Rcv hello from 14.38.104.1 area 0 from outside fe80::c671:feff:fe93:b516
interface ID 14
OSPFv3: End of hello processingo
ASAv# clear ipv6 ospf 1 process
Reset OSPF process? [no]: yes
ASAv#
OSPFv3: Flushing External Links
Insert LSA 0 adv_rtr 172.16.118.1, type 0x4005 in maxage
OSPFv3: Add Type 0x4005 LSA ID 0.0.0.0 Adv rtr 172.16.118.1 Seq 80000029 to outside
14.38.104.1 retransmission list
....
!--- The neighbor goes down:
OSPFv3: Neighbor change Event on interface outside
OSPFv3: DR/BDR election on outside
OSPFv3: Elect BDR 14.38.104.1
OSPFv3: Elect DR 192.168.128.115
OSPFv3: Schedule Router LSA area: 0, flag: Change
OSPFv3: Schedule Router LSA area: 0, flag: Change
OSPFv3: Schedule Prefix DR LSA intf outside
OSPFv3: Schedule Prefix Stub LSA area 0
OSPFv3: 14.38.104.1 address fe80::c671:feff:fe93:b516 on outside is dead, state DOWN
....
!--- The neighbor resumes the exchange:
OSPFv3: Rcv DBD from 14.38.104.1 on outside seq 0xd09 opt 0x0013 flag 0x7 len 28
mtu 1500 state EXSTART
OSPFv3: First DBD and we are not SLAVE
OSPFv3: rcv. v:3 t:2 l:168 rid:14.38.104.1
aid:0.0.0.0 chk:5aa3 inst:0 from outside
OSPFv3: Rcv DBD from 14.38.104.1 on outside seq 0x914 opt 0x0013 flag 0x2 len 168
mtu 1500 state EXSTART
OSPFv3: NBR Negotiation Done. We are the MASTER
OSPFv3: outside Nbr 14.38.104.1: Summary list built, size 0
OSPFv3: Send DBD to 14.38.104.1 on outside seq 0x915 opt 0x0013 flag 0x1 len 28
OSPFv3: rcv. v:3 t:2 l:28 rid:192.168.128.115
aid:0.0.0.0 chk:295c inst:0 from outside
OSPFv3: Rcv DBD from 192.168.128.115 on outside seq 0xfeb opt 0x0013 flag 0x7 len 28
mtu 1500 state EXSTART
OSPFv3: NBR Negotiation Done. We are the SLAVE
OSPFv3: outside Nbr 192.168.128.115: Summary list built, size 0
OSPFv3: Send DBD to 192.168.128.115 on outside seq 0xfeb opt 0x0013 flag 0x0 len 28
OSPFv3: rcv. v:3 t:2 l:28 rid:14.38.104.1
aid:0.0.0.0 chk:8d74 inst:0 from outside
OSPFv3: Rcv DBD from 14.38.104.1 on outside seq 0x915 opt 0x0013 flag 0x0 len 28
mtu 1500 state EXCHANGE
....
!--- The routing is re-added to the OSPFv3 neighbor list:
OSPFv3: Add Router 14.38.104.1 via fe80::c671:feff:fe93:b516, metric: 10
Router LSA 14.38.104.1/0, 1 links
Link 0, int 14, nbr 192.168.128.115, nbr int 142, type 2, cost 1
Ignore newdist 11 olddist 10
Enhanced Interior Gateway Routing Protocol (EIGRP)
Le protocole EIGRP sur l'ASA ne prend pas en charge l'utilisation d'IPv6. Reportez-vous à la section Guidelines for EIGRP du manuel CLI 1 : Guide de configuration CLI des opérations générales de la gamme Cisco ASA, 9.4 pour plus d'informations.
Protocole BGP (Border Gateway Protocol)
Cette commande debug peut être utilisée afin de dépanner BGP quand IPv6 est utilisé :
ASAv# debug ip bgp ipv6 unicast ?
X:X:X:X::X IPv6 BGP neighbor address
keepalives BGP keepalives
updates BGP updates
<cr>
Vous pouvez utiliser ces commandes show afin de dépanner les problèmes IPv6 :
Vous pouvez utiliser la fonctionnalité Packet Tracer intégrée avec IPv6 sur l'ASA de la même manière qu'avec IPv4. Voici un exemple où la fonctionnalité Packet Tracer est utilisée afin de simuler l'hôte interne à fd03::2, qui tente de se connecter à un serveur Web à 555::1 qui est situé sur Internet avec la route par défaut qui est apprise à partir de l'interface 881 via OSPF :
ASAv# packet-tracer input inside tcp fd03::2 10000 5555::1 80 detailed
Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
Forward Flow based lookup yields rule:
in id=0x7fffd59ca0f0, priority=1, domain=permit, deny=false
hits=2734, user_data=0x0, cs_id=0x0, l3_type=0xdd86
src mac=0000.0000.0000, mask=0000.0000.0000
dst mac=0000.0000.0000, mask=0100.0000.0000
input_ifc=inside, output_ifc=any
Phase: 2
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
found next-hop fe80::c671:feff:fe93:b516 using egress ifc outside
Phase: 3
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
in id=0x7fffd589cc30, priority=1, domain=nat-per-session, deny=true
hits=1166, user_data=0x0, cs_id=0x0, reverse, use_real_addr, flags=0x0,
protocol=6
src ip/id=::/0, port=0, tag=any
dst ip/id=::/0, port=0, tag=any
input_ifc=any, output_ifc=any
<<truncated output>>
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
ASAv#
Notez que l'adresse MAC de sortie est l'adresse link-local de l'interface 881. Comme mentionné précédemment, pour de nombreux protocoles de routage dynamique, les routeurs utilisent des adresses IPv6 link-local afin d'établir des contiguïtés.
Voici les débogages qui peuvent être utilisés afin de dépanner les problèmes IPv6 :
ASAv# debug ipv6 ?
dhcp IPv6 generic dhcp protocol debugging
dhcprelay IPv6 dhcp relay debugging
icmp ICMPv6 debugging
interface IPv6 interface debugging
mld IPv6 Multicast Listener Discovery debugging
nd IPv6 Neighbor Discovery debugging
ospf OSPF information
packet IPv6 packet debugging
routing IPv6 routing table debugging
Cette section décrit comment résoudre les problèmes les plus courants liés à IPv6.
De nombreux cas de TAC IPv6 sont générés en raison d'un manque général de connaissances sur le fonctionnement d'IPv6, ou en raison de tentatives de l'administrateur de mettre en oeuvre IPv6 avec l'utilisation de processus spécifiques à IPv4.
Par exemple, le TAC a constaté des cas où un fournisseur d'accès Internet (FAI) a attribué à un administrateur un bloc \56 d'adresses IPv6. L'administrateur attribue ensuite une adresse et le sous-réseau \56 complet à l'interface externe ASA et choisit une plage interne à utiliser pour les serveurs internes. Cependant, avec IPv6, tous les hôtes internes doivent également utiliser des adresses IPv6 routables, et le bloc d'adresses IPv6 doit être divisé en sous-réseaux plus petits selon les besoins. Dans ce scénario, vous pouvez créer de nombreux sous-réseaux \64 dans le bloc \56 qui a été alloué.
Conseil : Référez-vous à RFC 4291 pour des informations supplémentaires.
L'ASA peut être configuré afin d'exiger des adresses IPv6 codées EUI-64 modifiées. Conformément à la RFC 4291, l'EUI permet à un hôte de s'attribuer un identifiant d'interface IPv6 64 bits unique (EUI-64). Cette fonctionnalité est un avantage par rapport à IPv4, car elle supprime la nécessité d'utiliser DHCP pour l'attribution d'adresses IPv6.
Si l'ASA est configuré afin d'exiger cette amélioration via la commande ipv6 apply-eui64 nameif, alors il abandonne probablement de nombreuses sollicitations et annonces de découverte de voisins à partir d'autres hôtes sur le sous-réseau local.
Conseil : Pour plus d'informations, consultez le document Understanding IPv6 EUI-64 Bit Address Cisco Support Community.
Par défaut, de nombreux systèmes d'exploitation clients, tels que les systèmes Microsoft Windows versions 7 et 8, Macintosh OS-X et Linux, utilisent des adresses IPv6 temporaires auto-attribuées pour une confidentialité étendue via la configuration automatique d'adresses sans état IPv6 (SLAAC).
Le centre d'assistance technique de Cisco a constaté certains cas où cela a causé des problèmes inattendus dans des environnements parce que les hôtes génèrent du trafic à partir de l'adresse temporaire et non de l'adresse attribuée statiquement. Par conséquent, les listes de contrôle d’accès et les routes basées sur l’hôte peuvent entraîner l’abandon ou le mauvais routage du trafic, ce qui entraîne l’échec de la communication avec l’hôte.
Deux méthodes sont utilisées pour remédier à cette situation. Le comportement peut être désactivé individuellement sur les systèmes clients, ou vous pouvez désactiver ce comportement sur les routeurs ASA et Cisco IOS. Du côté de l'ASA ou du routeur, vous devez modifier l'indicateur de message d'annonce de routeur (RA) qui déclenche ce comportement.
Reportez-vous aux sections suivantes afin de désactiver ce comportement sur les systèmes clients individuels.
Microsoft Windows
Complétez ces étapes afin de désactiver ce comportement sur les systèmes Microsoft Windows :
netsh interface ipv6 set global randomizeidentifiers=disabled
netsh interface ipv6 set privacy state=disabled
sudo sysctl -w net.inet6.ip6.use_tempaddr=0
sudo sh -c 'echo net.inet6.ip6.use_tempaddr=0 >> /etc/sysctl.conf'
sysctl -w net.ipv6.conf.all.use_tempaddr=0
ASAv(config)# interface gigabitEthernet 1/1
ASAv(config-if)# ipv6 nd prefix 2001::db8/32 300 300 no-autoconfig
Conseil : Référez-vous à RFC 4941 pour des informations supplémentaires.
Cette section décrit quelques questions fréquemment posées au sujet de l'utilisation d'IPv6.
Oui. Il vous suffit d'activer IPv6 sur l'interface et d'attribuer à la fois une adresse IPv4 et une adresse IPv6 à l'interface, qui gère les deux types de trafic simultanément.
Vous pouvez le faire dans les versions ASA antérieures à la version 9.0(1). Depuis ASA version 9.0(1), toutes les listes de contrôle d'accès sur ASA sont unifiées, ce qui signifie qu'une liste de contrôle d'accès prend en charge une combinaison d'entrées IPv4 et IPv6 dans la même liste de contrôle d'accès.
Dans ASA versions 9.0(1) et ultérieures, les listes de contrôle d'accès sont simplement fusionnées et la liste de contrôle d'accès unique et unifiée est appliquée à l'interface via la commande access-group.
Oui. L'ASA prend en charge la réglementation et la mise en file d'attente par priorité pour IPv6 de la même manière qu'avec IPv4.
Depuis ASA version 9.0(1), toutes les listes de contrôle d'accès sur ASA sont unifiées, ce qui signifie qu'une liste de contrôle d'accès prend en charge une combinaison d'entrées IPv4 et IPv6 dans la même liste de contrôle d'accès. Par conséquent, toutes les commandes QoS exécutées sur une carte-classe qui correspond à une liste de contrôle d'accès agissent à la fois sur le trafic IPv4 et IPv6.
Bien que la NAT puisse être configurée pour IPv6 sur l'ASA, l'utilisation de la NAT dans IPv6 est fortement déconseillée et inutile, étant donné la quantité quasi infinie d'adresses IPv6 disponibles et routables globalement.
Si la NAT est requise dans un scénario IPv6, vous pouvez trouver plus d'informations sur la façon de la configurer dans la section IPv6 NAT Guidelines du CLI Book 2 : Guide de configuration CLI du pare-feu Cisco ASA, 9.4.
Remarque : Certaines directives et limitations peuvent être prises en compte lors de la mise en oeuvre de la fonction NAT avec IPv6.
Cela dépend de la version du logiciel.
Dans toutes les versions sans le correctif CSCup8922, si une interface sur l'ASA a une adresse IPv6 configurée et est opérationnelle, l'ASA demande une adresse IPv6 lors de l'interrogation d'un serveur DNS. Si aucune adresse IPv6 n'est retournée, ou si l'adresse n'est pas accessible selon la table de routage de l'ASA, une adresse IPv4 est demandée (le contrôle d'accessibilité a été ajouté dans CSCuu02761).
Dans les versions plus récentes, le type de requête peut être explicitement configuré par nom de domaine complet, par exemple :
object network <fqdn> fqdn v4 <fqdn>
<fqdn> est le nom de domaine complet. Notez que cela doit correspondre exactement dans le nom de l'objet ainsi que dans le nom de domaine complet lui-même. Si 'v6' est spécifié pour le type d'adresse fqdn, ou si un tel objet n'existe pas, le comportement d'origine est conservé. Si 'v4' est spécifié, l'ASA demande une adresse IPv4 au serveur DNS et utilise l'adresse IPv4 uniquement si l'adresse IPv6 existe déjà dans le cache DNS (par exemple, si aucun objet réseau de ce type n'existait auparavant et que l'ASA a effectué une demande DNS et a renvoyé l'adresse IPv6 en cache à partir du serveur DNS).
Il s'agit d'une amélioration importante pour les utilisateurs qui utilisent le filtrage du trafic Botnet ou Smart CallHome sur ASA, car les sites « updates.ironport.com », « update-manifests.ironport.com » et « tools.cisco.com » risquent de ne pas être accessibles par IPv6 à partir de l'ASA du client. Exemple de configuration :
object network update-manifests.ironport.com
fqdn v4 update-manifests.ironport.com
object network updates.ironport.com
fqdn v4 updates.ironport.com
Dans IPv6, ND utilise des adresses link-local afin d'effectuer la résolution d'adresse de couche 2. Pour cette raison, les adresses IPv6 pour les interfaces surveillées dans le résultat de la commande show failover montrent l'adresse link-local et non l'adresse IPv6 globale qui est configurée sur l'interface. C’est un comportement attendu.
Voici quelques mises en garde connues concernant l'utilisation d'IPv6 :
| Révision | Date de publication | Commentaires |
|---|---|---|
1.0 |
29-Jun-2015
|
Première publication |
Commentaires