IPv6 auf AWS: VPC, EC2, ELB und mehr
Vollständiger Leitfaden zur Bereitstellung von IPv6 auf Amazon Web Services. Konfigurieren Sie VPCs, Subnetze, Sicherheitsgruppen, Load Balancer und Egress-Only-Gateways.
AWS bietet umfassende IPv6-Unterstützung für die meisten Dienste, aber sie ist nicht standardmäßig aktiviert. Sie müssen sich dafür entscheiden, und die Konfiguration erstreckt sich über mehrere Ebenen.
TL;DR - Kurzübersicht
Wichtige Punkte:
- AWS bietet Dual-Stack IPv6 (nicht IPv6-only für die meisten Dienste)
- Sie erhalten von Amazon zugewiesene
/56-Blöcke aus dem Bereich2600::/12 - Alle IPv6-Adressen sind global eindeutig und routbar (kein NAT)
- Egress-Only-Gateways bieten zustandsbehaftete Filterung ohne Adressübersetzung
Direkt zu: VPC-Konfiguration | EC2-Instanzen | Sicherheitsgruppen | Load Balancer | Terraform-Beispiel
Übersicht über die AWS IPv6-Architektur#
AWS stellt IPv6 in einer Dual-Stack-Konfiguration bereit. Ihre Ressourcen erhalten sowohl IPv4- als auch IPv6-Adressen. Sie können nicht mit nur IPv6 arbeiten in den meisten Diensten (außer einigen Container- und Serverless-Workloads).
Amazon weist IPv6-CIDR-Blöcke aus ihrem öffentlichen Pool zu. Sie können Ihr Präfix nicht auswählen – AWS weist Ihrer VPC einen /56-Block aus dem Bereich 2600::/12 zu.
Im Gegensatz zu IPv4, wo Sie private RFC1918-Adressen verwenden (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), sind alle AWS IPv6-Adressen global eindeutig und routbar (GUA). Es gibt kein NAT für IPv6 im traditionellen Sinne – wenn Sie reine Ausgangsverbindungen wünschen, verwenden Sie ein Egress-Only-Internet-Gateway.
VPC IPv6-Konfiguration#
Beginnen Sie mit Ihrer VPC. Das Hinzufügen von IPv6 stört vorhandene IPv4-Ressourcen nicht.
IPv6-CIDR-Block zuordnen#
Fügen Sie einen von Amazon bereitgestellten IPv6-CIDR zu Ihrer VPC hinzu:
aws ec2 associate-vpc-cidr-block \
--vpc-id vpc-0abc123def456 \
--amazon-provided-ipv6-cidr-blockAWS weist einen /56-Block zu. Die Antwort zeigt Ihren zugewiesenen Bereich:
{
"Ipv6CidrBlockAssociation": {
"Ipv6CidrBlock": "2600:1f13:1234:5600::/56",
"Ipv6CidrBlockState": {
"State": "associating"
}
}
}Warten Sie, bis sich der Status zu associated ändert:
aws ec2 describe-vpcs --vpc-ids vpc-0abc123def456 \
--query 'Vpcs[0].Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlockState.State'Sie können auch „Bring Your Own IP" (BYOIP) verwenden, wenn Sie anbieterunabhängigen IPv6-Adressraum haben und Adressen über AWS-Konten oder Migrationen hinweg beibehalten möchten. Die meisten Benutzer bleiben bei von Amazon bereitgestellten Adressen.
Subnetz-IPv6-Konfiguration#
Subnetze benötigen ihre eigenen /64-Segmente aus dem /56-Block der VPC.
Listen Sie den IPv6-CIDR Ihrer VPC auf:
aws ec2 describe-vpcs --vpc-ids vpc-0abc123def456 \
--query 'Vpcs[0].Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock'Ausgabe: 2600:1f13:1234:5600::/56
Weisen Sie /64-Blöcke zu Subnetzen zu. Verwenden Sie Hexadezimalwerte 00-FF für den Subnetzteil:
# Öffentliches Subnetz A - 2600:1f13:1234:5600::/64
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-0abc111 \
--ipv6-cidr-block 2600:1f13:1234:5600::/64
# Öffentliches Subnetz B - 2600:1f13:1234:5601::/64
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-0abc222 \
--ipv6-cidr-block 2600:1f13:1234:5601::/64
# Privates Subnetz A - 2600:1f13:1234:5610::/64
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-0abc333 \
--ipv6-cidr-block 2600:1f13:1234:5610::/64Aktivieren Sie die automatische Zuweisung von IPv6-Adressen für Instanzen, die in öffentlichen Subnetzen gestartet werden:
aws ec2 modify-subnet-attribute \
--subnet-id subnet-0abc111 \
--assign-ipv6-address-on-creationRouting-Tabellen#
IPv6-Routing ist von IPv4 getrennt. Erstellen Sie Routen für Ihre IPv6-CIDR-Blöcke.
Für öffentliche Subnetze leiten Sie allen IPv6-Verkehr (::/0) zum Internet-Gateway:
aws ec2 create-route \
--route-table-id rtb-0abc123 \
--destination-ipv6-cidr-block ::/0 \
--gateway-id igw-0def456Internet-Gateways verarbeiten sowohl IPv4 als auch IPv6 ohne Änderungen.
Für private Subnetze verwenden Sie ein Egress-Only-Internet-Gateway (später erläutert):
aws ec2 create-route \
--route-table-id rtb-0abc789 \
--destination-ipv6-cidr-block ::/0 \
--egress-only-internet-gateway-id eigw-0ghi012Überprüfen Sie die Routen:
aws ec2 describe-route-tables --route-table-ids rtb-0abc123 \
--query 'RouteTables[0].Routes'EC2-Instanz IPv6-Konfiguration#
EC2-Instanzen benötigen eine explizite IPv6-Adresszuweisung.
Neue Instanzen mit IPv6 starten#
Geben Sie --ipv6-address-count beim Start an:
aws ec2 run-instances \
--image-id ami-0abc123 \
--instance-type t3.medium \
--subnet-id subnet-0abc111 \
--ipv6-address-count 1 \
--key-name mykey \
--security-group-ids sg-0abc456Oder weisen Sie eine bestimmte IPv6-Adresse aus Ihrem Subnetzbereich zu:
aws ec2 run-instances \
--image-id ami-0abc123 \
--instance-type t3.medium \
--subnet-id subnet-0abc111 \
--ipv6-addresses Ipv6Address=2600:1f13:1234:5600::a \
--key-name mykey \
--security-group-ids sg-0abc456IPv6 zu vorhandenen Instanzen hinzufügen#
Holen Sie sich die Netzwerkschnittstellen-ID (ENI):
aws ec2 describe-instances --instance-ids i-0abc123 \
--query 'Reservations[0].Instances[0].NetworkInterfaces[0].NetworkInterfaceId'Weisen Sie eine IPv6-Adresse zu:
aws ec2 assign-ipv6-addresses \
--network-interface-id eni-0def456 \
--ipv6-address-count 1Oder geben Sie genaue Adressen an:
aws ec2 assign-ipv6-addresses \
--network-interface-id eni-0def456 \
--ipv6-addresses 2600:1f13:1234:5600::bInstanz-Betriebssystemkonfiguration#
Die meisten modernen AMIs (Amazon Linux 2023, Amazon Linux 2, Ubuntu 20.04+) konfigurieren IPv6 automatisch über cloud-init und DHCPv6.
Verbinden Sie sich per SSH mit Ihrer Instanz und überprüfen Sie:
ip -6 addr showSie sollten Ihre zugewiesene IPv6-Adresse auf der eth0-Schnittstelle sehen:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001
inet6 2600:1f13:1234:5600::a/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::4a2:c9ff:fe12:3456/64 scope link
valid_lft forever preferred_lft foreverTesten Sie die Konnektivität:
ping6 google.com
curl -6 https://ifconfig.coWenn IPv6 nicht konfiguriert ist, überprüfen Sie die cloud-init-Protokolle:
sudo cat /var/log/cloud-init.log | grep -i ipv6Einige ältere AMIs erfordern möglicherweise eine manuelle Konfiguration. Fügen Sie zu /etc/network/interfaces (Debian/Ubuntu) oder /etc/sysconfig/network-scripts/ifcfg-eth0 (RHEL/CentOS) hinzu.
Sicherheitsgruppen#
Sicherheitsgruppen benötigen explizite IPv6-Regeln. IPv4-Regeln gelten nicht für IPv6-Verkehr.
Erstellen von Dual-Stack-Sicherheitsgruppenregeln#
Erlauben Sie HTTP/HTTPS von überall (sowohl IPv4 als auch IPv6):
# IPv4
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges='[{CidrIp=0.0.0.0/0}]'
# IPv6
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,Ipv6Ranges='[{CidrIpv6=::/0}]'Erlauben Sie SSH von einem bestimmten IPv6-Präfix:
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--ip-permissions IpProtocol=tcp,FromPort=22,ToPort=22,Ipv6Ranges='[{CidrIpv6=2001:db8::/32,Description="Office IPv6"}]'Erlauben Sie alle ICMPv6 (erforderlich für IPv6-Betrieb):
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--ip-permissions IpProtocol=ipv6-icmp,FromPort=-1,ToPort=-1,Ipv6Ranges='[{CidrIpv6=::/0}]'ICMPv6 ist kritisch für IPv6. Blockieren Sie es nicht. Es wird für Neighbor Discovery, PMTUD und andere Kernfunktionen verwendet.
Best Practices für Sicherheitsgruppen#
- Spiegeln Sie IPv4-Regeln auf IPv6, es sei denn, Sie haben spezifische Gründe, dies nicht zu tun
- Erlauben Sie immer ICMPv6 von denselben Quellen wie Ihr Anwendungsverkehr
- Verwenden Sie Präfixlisten für die Verwaltung komplexer Regelsätze über beide Familien hinweg
- Taggen Sie Sicherheitsgruppen, um Dual-Stack von IPv4-only zu identifizieren
Beispiel: Erstellen Sie eine verwaltete Präfixliste für die IPv6-Bereiche Ihrer Organisation:
aws ec2 create-managed-prefix-list \
--prefix-list-name org-ipv6-ranges \
--address-family IPv6 \
--max-entries 10 \
--entries Cidr=2001:db8:100::/40,Description=HQ \
Cidr=2001:db8:200::/40,Description=DataCenterVerweisen Sie in Sicherheitsgruppenregeln darauf:
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,PrefixListIds='[{PrefixListId=pl-0abc123}]'Elastic Load Balancing#
Application Load Balancer (ALB) und Network Load Balancer (NLB) unterstützen Dual-Stack. Classic Load Balancer nicht.
Application Load Balancer Dual-Stack#
Erstellen Sie oder ändern Sie einen ALB, um Dual-Stack zu verwenden:
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-0abc111 subnet-0abc222 \
--security-groups sg-0abc123 \
--ip-address-type dualstackFür vorhandene Load Balancer:
aws elbv2 set-ip-address-type \
--load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/1234567890abcdef \
--ip-address-type dualstackDer Load Balancer erhält automatisch sowohl A- als auch AAAA-DNS-Einträge:
dig my-alb-1234567890.us-east-1.elb.amazonaws.com A
dig my-alb-1234567890.us-east-1.elb.amazonaws.com AAAAClients können über IPv4 oder IPv6 verbinden. Der Load Balancer leitet Verkehr an Ziele unter Verwendung ihrer konfigurierten Adressfamilie weiter (normalerweise IPv4 für Backend-Instanzen).
Network Load Balancer Dual-Stack#
NLB unterstützt Dual-Stack ähnlich:
aws elbv2 create-load-balancer \
--name my-nlb \
--type network \
--subnets subnet-0abc111 subnet-0abc222 \
--ip-address-type dualstackNLB bewahrt Client-IP-Adressen, sodass Ziele die tatsächlichen IPv6-Quelladressen sehen. Stellen Sie sicher, dass Ihre Anwendungsprotokolle und Sicherheitsgruppen beide Adressfamilien verarbeiten.
Zielgruppen#
Zielgruppen registrieren Instanzen über ihre IPv4-Adressen (am häufigsten) oder IPv6. Sie können Adressfamilien nicht in einer einzigen Zielgruppe mischen.
Erstellen Sie eine IPv4-Zielgruppe:
aws elbv2 create-target-group \
--name my-targets-ipv4 \
--protocol HTTP \
--port 80 \
--vpc-id vpc-0abc123 \
--ip-address-type ipv4Erstellen Sie eine IPv6-Zielgruppe:
aws elbv2 create-target-group \
--name my-targets-ipv6 \
--protocol HTTP \
--port 80 \
--vpc-id vpc-0abc123 \
--ip-address-type ipv6Die meisten Bereitstellungen verwenden IPv4-Zielgruppen auch mit Dual-Stack-Load-Balancern. Der Load Balancer übernimmt die Protokollübersetzung transparent.
Egress-Only-Internet-Gateway#
Egress-Only-Internet-Gateways ermöglichen ausgehende IPv6-Verbindungen von privaten Subnetzen, während sie eingehende Verbindungen blockieren. Dies ist ähnlich wie NAT für IPv4, aber ohne Adressübersetzung – IPv6-Adressen bleiben global eindeutig.
Egress-Only-Gateway erstellen#
aws ec2 create-egress-only-internet-gateway \
--vpc-id vpc-0abc123Notieren Sie sich die Gateway-ID:
{
"EgressOnlyInternetGateway": {
"EgressOnlyInternetGatewayId": "eigw-0abc123"
}
}Verkehr von privatem Subnetz routen#
Fügen Sie eine Route in Ihrer privaten Subnetz-Routing-Tabelle hinzu:
aws ec2 create-route \
--route-table-id rtb-0abc789 \
--destination-ipv6-cidr-block ::/0 \
--egress-only-internet-gateway-id eigw-0abc123Instanzen in privaten Subnetzen können jetzt ausgehende IPv6-Verbindungen initiieren, akzeptieren aber keinen eingehenden Verkehr aus dem Internet.
Anwendungsfälle:
- Datenbankserver, die Software-Updates benötigen
- Anwendungsserver, die auf externe APIs zugreifen
- Interne Dienste, die AWS-APIs aufrufen (S3, DynamoDB usw.) über IPv6
Sicherheitsüberlegungen#
Egress-Only-Gateways bieten keine Anonymität. Ihre IPv6-Adresse ist für externe Dienste weiterhin sichtbar. Es ist zustandsbehaftetes Firewalling, kein NAT.
Wenn Sie echtes Nur-Ausgehend mit Adressmaskierung benötigen, benötigen Sie ein NAT64-Gateway (komplexere Einrichtung, selten notwendig).
Route 53 DNS#
Route 53 unterstützt IPv6 vollständig mit AAAA-Einträgen.
AAAA-Einträge erstellen#
Fügen Sie einen AAAA-Eintrag für Ihre Instanz oder Ihren Load Balancer hinzu:
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "AAAA",
"TTL": 300,
"ResourceRecords": [{"Value": "2600:1f13:1234:5600::a"}]
}
}]
}'Alias-Einträge für Load Balancer#
Verwenden Sie Alias-Einträge für ALB/NLB (besser als AAAA-Einträge – werden automatisch aktualisiert, wenn sich LB-IPs ändern):
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "AAAA",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "my-alb-1234567890.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}]
}'Die HostedZoneId in AliasTarget ist die kanonische gehostete Zone für ELB in dieser Region (siehe AWS-Dokumentation für den korrekten Wert).
Integritätsprüfungen#
Route 53-Integritätsprüfungen unterstützen IPv6:
aws route53 create-health-check \
--health-check-config \
IPAddress=2600:1f13:1234:5600::a,Port=443,Type=HTTPS,ResourcePath=/health,RequestInterval=30,FailureThreshold=3 \
--caller-reference $(uuidgen)Verwenden Sie Integritätsprüfungen mit Failover- oder gewichteten Routing-Richtlinien für hohe Verfügbarkeit.
CloudFront IPv6#
CloudFront-Distributionen unterstützen IPv6 standardmäßig (kann in den meisten Fällen nicht deaktiviert werden).
Das globale Edge-Netzwerk von CloudFront verwendet Dual-Stack. Clients, die über IPv6 verbinden, erreichen dieselben Edge-Standorte wie IPv4-Clients.
Überprüfen Sie die IPv6-Unterstützung:
dig d111111abcdef8.cloudfront.net AAAACloudFront übernimmt die Protokollübersetzung. Wenn Ihr Origin nur IPv4 verwendet, liefert CloudFront dennoch Inhalte an IPv6-Clients.
Die Origin-Konfiguration benötigt keine Änderungen:
aws cloudfront create-distribution \
--distribution-config file://distribution-config.jsonBeispiel distribution-config.json (abgekürzt):
{
"Origins": {
"Items": [{
"Id": "my-origin",
"DomainName": "example.com",
"CustomOriginConfig": {
"OriginProtocolPolicy": "https-only"
}
}]
},
"Enabled": true,
"Comment": "My distribution"
}CloudFront stellt automatisch IPv6-Adressen für Ihre Distribution bereit. Keine zusätzliche Konfiguration erforderlich.
NAT64 für IPv6-Only-Workloads#
Einige Workloads (Lambda, Fargate) können nur mit IPv6 laufen. Wenn sie auf IPv4-only-Ressourcen zugreifen müssen, verwenden Sie NAT64.
AWS bietet kein verwaltetes NAT64. Sie müssen Ihr eigenes NAT64/DNS64-Gateway auf EC2 ausführen.
Beispiel mit Tayga (NAT64) und BIND (DNS64):
- Starten Sie eine EC2-Instanz mit sowohl IPv4 als auch IPv6
- Installieren und konfigurieren Sie Tayga für NAT64-Übersetzung
- Installieren und konfigurieren Sie BIND mit DNS64-Modul
- Routen Sie IPv6-only-Ressourcen durch NAT64-Gateway
Dies ist komplex und selten erforderlich. Die meisten Bereitstellungen laufen stattdessen mit Dual-Stack.
Terraform-Beispiel#
Infrastructure as Code für Dual-Stack-AWS-Setup:
# VPC mit IPv6
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
assign_generated_ipv6_cidr_block = true
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "main-vpc"
}
}
# Internet Gateway
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
}
# Egress-Only Internet Gateway
resource "aws_egress_only_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
}
# Öffentliches Subnetz
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
ipv6_cidr_block = cidrsubnet(aws_vpc.main.ipv6_cidr_block, 8, 1)
assign_ipv6_address_on_creation = true
availability_zone = "us-east-1a"
tags = {
Name = "public-subnet"
}
}
# Routing-Tabelle für öffentliches Subnetz
resource "aws_route_table" "public" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.main.id
}
route {
ipv6_cidr_block = "::/0"
gateway_id = aws_internet_gateway.main.id
}
tags = {
Name = "public-rt"
}
}
resource "aws_route_table_association" "public" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public.id
}
# Sicherheitsgruppe
resource "aws_security_group" "web" {
name = "web-sg"
description = "Allow HTTP/HTTPS"
vpc_id = aws_vpc.main.id
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
ingress {
from_port = -1
to_port = -1
protocol = "ipv6-icmp"
ipv6_cidr_blocks = ["::/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
}
# EC2-Instanz mit IPv6
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2023
instance_type = "t3.medium"
subnet_id = aws_subnet.public.id
ipv6_address_count = 1
vpc_security_group_ids = [aws_security_group.web.id]
tags = {
Name = "web-server"
}
}
# Application Load Balancer
resource "aws_lb" "main" {
name = "main-alb"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.web.id]
subnets = [aws_subnet.public.id] # Weitere Subnetze für HA hinzufügen
ip_address_type = "dualstack"
tags = {
Name = "main-alb"
}
}
# IPv6-CIDR ausgeben
output "vpc_ipv6_cidr" {
value = aws_vpc.main.ipv6_cidr_block
}
output "instance_ipv6" {
value = aws_instance.web.ipv6_addresses
}Anwenden mit:
terraform init
terraform plan
terraform applyCloudFormation-Beispiel#
YAML-Vorlage für Dual-Stack-VPC:
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Dual-Stack-VPC mit IPv6'
Resources:
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
IPv6CidrBlock:
Type: AWS::EC2::VPCCidrBlock
Properties:
VpcId: !Ref VPC
AmazonProvidedIpv6CidrBlock: true
PublicSubnet:
Type: AWS::EC2::Subnet
DependsOn: IPv6CidrBlock
Properties:
VpcId: !Ref VPC
CidrBlock: 10.0.1.0/24
Ipv6CidrBlock: !Select [0, !Cidr [!GetAtt VPC.Ipv6CidrBlock, 256, 64]]
AssignIpv6AddressOnCreation: true
AvailabilityZone: !Select [0, !GetAZs '']
InternetGateway:
Type: AWS::EC2::InternetGateway
AttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref VPC
InternetGatewayId: !Ref InternetGateway
PublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
PublicRoute:
Type: AWS::EC2::Route
DependsOn: AttachGateway
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicRouteIPv6:
Type: AWS::EC2::Route
DependsOn: AttachGateway
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationIpv6CidrBlock: ::/0
GatewayId: !Ref InternetGateway
SubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnet
RouteTableId: !Ref PublicRouteTable
Outputs:
VPCId:
Value: !Ref VPC
IPv6CidrBlock:
Value: !GetAtt VPC.Ipv6CidrBlockBereitstellen mit:
aws cloudformation create-stack \
--stack-name ipv6-vpc \
--template-body file://template.yamlTesten Ihrer AWS IPv6-Bereitstellung#
Überprüfen Sie die End-to-End-Konnektivität:
# DNS-Auflösung testen
dig app.example.com AAAA
# HTTP/HTTPS-Zugriff testen
curl -6 https://app.example.com
# Von Instanz testen
ssh ec2-user@<instance-ipv6>
ping6 google.com
curl -6 https://ifconfig.coVerwenden Sie AWS Reachability Analyzer, um Netzwerkpfade zu überprüfen:
aws ec2 create-network-insights-path \
--source <instance-eni> \
--destination <alb-eni> \
--protocol tcp \
--destination-port 443
aws ec2 start-network-insights-analysis \
--network-insights-path-id <path-id>Überprüfen Sie auf Fehlkonfigurationen, die IPv6 blockieren könnten.
Häufige Probleme und Lösungen#
Problem: Instanz hat IPv6-Adresse, kann aber nicht ins Internet
Lösung: Überprüfen Sie, ob die Routing-Tabelle eine ::/0-Route zum IGW hat, überprüfen Sie, ob die Sicherheitsgruppe ausgehenden IPv6-Verkehr erlaubt
Problem: Load Balancer hat keinen AAAA-Eintrag
Lösung: Stellen Sie sicher, dass ip-address-type auf dualstack gesetzt ist, überprüfen Sie, ob Subnetze IPv6-CIDR-Blöcke haben
Problem: Kann nicht per SSH über IPv6 auf Instanz zugreifen
Lösung: Fügen Sie eine Sicherheitsgruppenregel hinzu, die TCP-Port 22 von ::/0 oder einem bestimmten IPv6-CIDR erlaubt
Problem: Egress-Only-Gateway funktioniert nicht Lösung: Überprüfen Sie die Zuordnung der Routing-Tabelle, prüfen Sie, ob der Instanz eine IPv6-Adresse zugewiesen ist
Problem: CloudFront liefert nicht über IPv6 Lösung: CloudFront IPv6 ist automatisch und kann nicht deaktiviert werden – überprüfen Sie DNS-Auflösung und Client-Konnektivität
Kostenüberlegungen#
IPv6 selbst ist kostenlos bei AWS. Sie zahlen nicht für IPv6-CIDR-Blöcke oder Adressen.
Die Datenübertragungskosten sind für IPv4 und IPv6 gleich. Es gibt keinen Preisvorteil für IPv6 – der Vorteil liegt in der architektonischen Einfachheit und der Vermeidung von IPv4-Erschöpfung.
Egress-Only-Internet-Gateways sind kostenlos (im Gegensatz zu NAT-Gateways, die ~0,045 $/Stunde plus Datenverarbeitungsgebühren kosten).
Verwandte Artikel#
- IPv6 in AWS, Azure und GCP - Multi-Cloud-IPv6-Übersicht
- IPv6 Best Practices - Richtlinien für die Produktionsbereitstellung
- Dual-Stack-Migrationsleitfaden - Übergang von IPv4-only zu Dual-Stack