IPv6 dans AWS, Azure et GCP
Activez IPv6 dans votre infrastructure cloud. Guides de configuration pratiques pour AWS, Azure et Google Cloud Platform.
La plupart des charges de travail cloud fonctionnent toujours en IPv4-only. Cela devient un problème.
TL;DR - Résumé rapide
Points clés :
- Les réseaux mobiles sont IPv6-first : forcer les traductions ajoute de la latence pour la plupart des utilisateurs
- Les adresses IPv4 coûtent de l'argent dans le cloud tandis qu'IPv6 est gratuit
- La configuration est similaire sur AWS, Azure et GCP avec support dual-stack
- Les clusters Kubernetes peuvent fonctionner en dual-stack sur tous les principaux fournisseurs cloud
Aller à : Configuration AWS | Configuration Azure | Configuration GCP | Kubernetes
Pourquoi activer IPv6 dans le cloud#
Les réseaux mobiles sont IPv6-first depuis des années. Quand vos utilisateurs mobiles accèdent à votre service, ils viennent d'une adresse IPv6. Fonctionner en IPv4-only signifie forcer une traduction quelque part dans le chemin, ajoutant latence et complexité.
Certains FAI sont passés à des réseaux IPv6-only avec NAT64 pour les services IPv4 hérités. Si vous n'êtes pas accessible via IPv6, vous ajoutez un saut de traduction supplémentaire pour ces utilisateurs.
Les adresses IPv4 coûtent de l'argent maintenant. Les fournisseurs cloud facturent les adresses IPv4 publiques dans la plupart des régions. Les adresses IPv6 sont gratuites et abondantes.
L'architecture est aussi plus simple. Pas de NAT, pas de règles de redirection de port, pas d'épuisement d'adresses à gérer. Chaque instance obtient une adresse routable globalement.
Configuration IPv6 AWS#
AWS a un bon support IPv6 sur la plupart des services. Commencez avec votre VPC.
Configuration VPC dual-stack#
Ajoutez un bloc CIDR IPv6 à votre VPC existant :
aws ec2 associate-vpc-cidr-block \
--vpc-id vpc-abc123 \
--amazon-provided-ipv6-cidr-blockAWS assigne un bloc /56. Associez des sous-réseaux /64 à chaque zone de disponibilité :
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-xyz789 \
--ipv6-cidr-block 2600:1f13:123:4500::/64Mettez à jour vos tables de routage. IPv6 a besoin de sa propre route vers la passerelle Internet :
aws ec2 create-route \
--route-table-id rtb-abc123 \
--destination-ipv6-cidr-block ::/0 \
--gateway-id igw-xyz789Adressage IPv6 EC2#
Les instances existantes n'obtiennent pas automatiquement IPv6. Assignez les adresses manuellement :
aws ec2 assign-ipv6-addresses \
--network-interface-id eni-abc123 \
--ipv6-address-count 1Les nouvelles instances dans les sous-réseaux dual-stack obtiennent IPv6 automatiquement si vous définissez --ipv6-address-count 1 au lancement.
À l'intérieur de l'instance, vérifiez qu'IPv6 est configuré. Amazon Linux et Ubuntu gèrent ceci automatiquement via cloud-init, mais vérifiez avec ip -6 addr show.
Groupes de sécurité#
Le trafic IPv6 utilise des règles séparées. Si vous avez une règle HTTP pour 0.0.0.0/0, elle ne s'appliquera pas à IPv6. Ajoutez ::/0 :
aws ec2 authorize-security-group-ingress \
--group-id sg-abc123 \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,Ipv6Ranges='[{CidrIpv6=::/0}]'Erreur courante : oublier d'ajouter les règles IPv6 et se demander pourquoi les connexions échouent.
Load Balancers#
Les Application et Network Load Balancers supportent dual-stack. Définissez ip-address-type sur dualstack :
aws elbv2 set-ip-address-type \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--ip-address-type dualstackLe load balancer obtient automatiquement des enregistrements A et AAAA.
DNS Route 53#
Créez des enregistrements AAAA pointant vers vos adresses IPv6 :
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch file://add-aaaa.jsonRoute 53 supporte IPv6 pour les enregistrements alias aussi, ce qui est utile pour les load balancers et distributions CloudFront.
Passerelle Internet sortante uniquement#
Si vous voulez que les instances initient des connexions IPv6 sortantes mais n'acceptent pas les entrantes, utilisez une passerelle egress-only. C'est l'équivalent IPv6 du NAT, mais avec état uniquement — il n'y a pas de traduction d'adresse.
aws ec2 create-egress-only-internet-gateway \
--vpc-id vpc-abc123Mettez à jour la table de routage pour les sous-réseaux privés pour router le trafic IPv6 à travers elle au lieu de la passerelle Internet normale.
Configuration IPv6 Azure#
L'approche d'Azure est similaire mais utilise une terminologie différente.
VNet dual-stack#
Ajoutez un espace d'adressage IPv6 à votre VNet. Vous ne pouvez pas utiliser les adresses fournies par Amazon ici ; Azure assigne depuis ses propres plages.
az network vnet update \
--resource-group myResourceGroup \
--name myVNet \
--address-prefixes "10.0.0.0/16" "fd00:db8::/56"Azure utilise les préfixes fd00::/8 pour ses exemples de documentation, mais vous obtiendrez des adresses GUA publiques en production.
Ajoutez IPv6 aux sous-réseaux :
az network vnet subnet update \
--resource-group myResourceGroup \
--vnet-name myVNet \
--name mySubnet \
--address-prefixes "10.0.1.0/24" "fd00:db8:1::/64"Configuration IPv6 VM#
Les VM ont besoin de configurations d'interface réseau IPv4 et IPv6. Créez une adresse IPv6 publique :
az network public-ip create \
--resource-group myResourceGroup \
--name myPublicIPv6 \
--version IPv6 \
--sku StandardAttachez-la à l'interface réseau :
az network nic ip-config create \
--resource-group myResourceGroup \
--nic-name myNIC \
--name ipv6config \
--private-ip-address-version IPv6 \
--vnet-name myVNet \
--subnet mySubnet \
--public-ip-address myPublicIPv6Load Balancer avec IPv6#
Azure Load Balancer a besoin de configurations IP frontend séparées pour IPv4 et IPv6 :
az network lb frontend-ip create \
--resource-group myResourceGroup \
--lb-name myLoadBalancer \
--name LoadBalancerFrontEndIPv6 \
--public-ip-address myPublicIPv6Configurez les pools backend, les sondes de santé et les règles pour les deux piles. La configuration est dupliquée, ce qui semble fastidieux mais vous donne un contrôle total.
Zones DNS#
Ajoutez des enregistrements AAAA à Azure DNS :
az network dns record-set aaaa add-record \
--resource-group myResourceGroup \
--zone-name example.com \
--record-set-name www \
--ipv6-address 2001:db8::1Configuration IPv6 GCP#
Google Cloud a été plus lent à adopter IPv6 qu'AWS et Azure, mais le support s'est considérablement amélioré.
Configuration IPv6 VPC#
Les VPC GCP supportent dual-stack, mais IPv6 est toujours en preview pour certaines fonctionnalités. Activez-le lors de la création du sous-réseau :
gcloud compute networks subnets create mysubnet \
--network=myvpc \
--region=us-central1 \
--range=10.0.1.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=EXTERNALGCP assigne un /64 depuis sa plage 2600:1900::/28.
Instances Compute Engine#
Les instances dans les sous-réseaux dual-stack obtiennent IPv6 automatiquement. Vérifiez avec :
gcloud compute instances describe myinstance \
--zone=us-central1-a \
--format="get(networkInterfaces[0].ipv6Address)"Les règles de pare-feu nécessitent des blocs CIDR IPv6 explicites :
gcloud compute firewall-rules create allow-ipv6-http \
--network myvpc \
--allow tcp:80 \
--source-ranges ::/0Cloud Load Balancing#
Les load balancers globaux de Google supportent IPv6. Définissez la version IP lors de la création d'une règle de transfert :
gcloud compute forwarding-rules create ipv6-lb-forwarding-rule \
--load-balancing-scheme=EXTERNAL \
--ip-protocol=TCP \
--ports=443 \
--address=myipv6address \
--ip-version=IPV6 \
--target-https-proxy=mytargetproxy \
--globalGoogle provisionne automatiquement une adresse IPv6 anycast pour les load balancers globaux.
Cloud DNS#
Créez des enregistrements AAAA :
gcloud dns record-sets create www.example.com \
--zone=myzone \
--type=AAAA \
--ttl=300 \
--rrdatas=2001:db8::1Kubernetes et IPv6#
Les principaux services Kubernetes gérés supportent maintenant les clusters dual-stack.
Clusters dual-stack#
EKS, AKS et GKE peuvent exécuter dual-stack. Les pods obtiennent des adresses IPv4 et IPv6. Activez lors de la création du cluster :
# EKS
eksctl create cluster --name mycluster --ip-family ipv4,ipv6
# GKE
gcloud container clusters create mycluster \
--enable-ip-alias \
--stack-type=IPV4_IPV6Les services peuvent exposer les deux familles d'adresses. Définissez ipFamilyPolicy: RequireDualStack dans votre manifeste Service.
Adressage IPv6 Pod#
Chaque pod reçoit des adresses des deux familles. Les plugins CNI (VPC CNI, Calico, Cilium) gèrent l'attribution d'adresse. Vérifiez les adresses de pod :
kubectl get pods -o wideLes applications dans les pods doivent se lier à :: pour écouter sur IPv4 et IPv6.
Service IPv6#
Les services obtiennent des adresses ClusterIP des deux familles. Les services LoadBalancer provisionnent automatiquement des load balancers cloud avec des frontends dual-stack si le cluster le supporte.
Un piège : tous les contrôleurs Ingress ne supportent pas encore IPv6. Vérifiez la documentation de votre contrôleur.
Défis courants#
Support d'application#
La plupart des langages et frameworks modernes supportent IPv6, mais les applications plus anciennes peuvent ne pas le faire. Les applications Java ont parfois besoin de -Djava.net.preferIPv6Addresses=true pour préférer IPv6.
Les bases de données sont délicates. MySQL et PostgreSQL supportent IPv6, mais les chaînes de connexion et bibliothèques clientes nécessitent une notation entre crochets appropriée : psql -h [2001:db8::1] -p 5432.
Failles de surveillance#
Certains outils de surveillance ne collectent que les métriques IPv4 par défaut. CloudWatch, Azure Monitor et Cloud Monitoring supportent IPv6, mais les tableaux de bord personnalisés peuvent nécessiter des mises à jour.
Les outils APM tiers (Datadog, New Relic) gèrent dual-stack, mais vérifiez que vos agents sont correctement configurés.
Considérations de coût#
IPv6 lui-même est gratuit, mais les coûts de sortie restent. En fait, certains fournisseurs cloud facturent les mêmes tarifs de sortie pour IPv6 que pour IPv4, ce qui ne fournit pas d'économies de coûts — juste des avantages architecturaux.
AWS facture les passerelles Internet egress-only dans certaines régions. Vérifiez la page de tarification avant de déployer.
Tester votre IPv6 cloud#
Ne supposez pas que ça fonctionne. Testez depuis un réseau IPv6-only.
Désactivez IPv4 sur votre machine locale temporairement :
# Linux
sudo ip addr del <votre-adresse-ipv4> dev eth0
# macOS
sudo ifconfig en0 inet deleteEssayez d'accéder à votre service. Si ça échoue, vous avez des problèmes de configuration.
Utilisez des outils en ligne comme ipv6-test.com pour vérifier l'accessibilité depuis différents emplacements.
Vérifiez la propagation DNS avec dig AAAA votredomaine.com depuis plusieurs résolveurs.
Testez le comportement du load balancer sous trafic dual-stack. Certains load balancers ont des différences de routage subtiles entre les familles d'adresses qui n'apparaissent que sous charge.
Articles connexes#
- Stratégies de migration IPv6 - Planifiez votre transition vers IPv6 avec un minimum de perturbations
- Bonnes pratiques IPv6 - Directives de déploiement IPv6 prêtes pour la production
Testez la connectivité cloud
Utilisez notre Outil Ping pour vérifier que vos instances cloud sont accessibles via IPv6.