AWS에서의 IPv6: VPC, EC2, ELB 등
Amazon Web Services에서 IPv6 배포에 대한 완전한 가이드. VPC, 서브넷, 보안 그룹, 로드 밸런서 및 송신 전용 게이트웨이를 구성합니다.
AWS는 대부분의 서비스에서 포괄적인 IPv6 지원을 제공하지만 기본적으로 활성화되지 않습니다. 옵트인해야 하며 구성은 여러 계층에 분산되어 있습니다.
TL;DR - 빠른 요약
핵심 포인트:
- AWS는 듀얼 스택 IPv6를 제공합니다(대부분의 서비스에 대해 IPv6 전용이 아님)
2600::/12범위에서 Amazon 할당/56블록을 받습니다- 모든 IPv6 주소는 전역적으로 고유하고 라우팅 가능합니다(NAT 없음)
- 송신 전용 게이트웨이는 주소 변환 없이 상태 저장 필터링을 제공합니다
바로가기: VPC 구성 | EC2 인스턴스 | 보안 그룹 | 로드 밸런서 | Terraform 예시
AWS IPv6 아키텍처 개요#
AWS는 듀얼 스택 구성으로 IPv6를 제공합니다. 리소스는 IPv4 및 IPv6 주소를 모두 받습니다. 대부분의 서비스에서 IPv6 전용으로 실행할 수 없습니다(일부 컨테이너 및 서버리스 워크로드 제외).
Amazon은 공용 풀에서 IPv6 CIDR 블록을 할당합니다. 접두사를 선택할 수 없습니다. AWS는 2600::/12 범위에서 VPC에 /56 블록을 할당합니다.
사설 RFC1918 주소(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)를 사용하는 IPv4와 달리 모든 AWS IPv6 주소는 전역적으로 고유하고 라우팅 가능합니다(GUA). 기존 의미에서 IPv6에 대한 NAT는 없습니다. 아웃바운드 전용 연결을 원하면 송신 전용 인터넷 게이트웨이를 사용합니다.
VPC IPv6 구성#
VPC부터 시작하세요. IPv6 추가는 기존 IPv4 리소스를 중단하지 않습니다.
IPv6 CIDR 블록 연결#
Amazon 제공 IPv6 CIDR을 VPC에 추가하세요:
aws ec2 associate-vpc-cidr-block \
--vpc-id vpc-0abc123def456 \
--amazon-provided-ipv6-cidr-blockAWS는 /56 블록을 할당합니다. 응답은 할당된 범위를 표시합니다:
{
"Ipv6CidrBlockAssociation": {
"Ipv6CidrBlock": "2600:1f13:1234:5600::/56",
"Ipv6CidrBlockState": {
"State": "associating"
}
}
}상태가 associated로 변경될 때까지 기다리세요:
aws ec2 describe-vpcs --vpc-ids vpc-0abc123def456 \
--query 'Vpcs[0].Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlockState.State'공급자 독립적인 IPv6 공간이 있고 AWS 계정 또는 마이그레이션 간에 주소를 유지하려는 경우 "자체 IP 가져오기"(BYOIP)를 사용할 수도 있습니다. 대부분의 사용자는 Amazon 제공 주소를 사용합니다.
서브넷 IPv6 구성#
서브넷에는 VPC의 /56 블록에서 자체 /64 슬라이스가 필요합니다.
VPC의 IPv6 CIDR을 나열하세요:
aws ec2 describe-vpcs --vpc-ids vpc-0abc123def456 \
--query 'Vpcs[0].Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock'출력: 2600:1f13:1234:5600::/56
서브넷에 /64 블록을 할당하세요. 서브넷 부분에 16진수 값 00-FF를 사용하세요:
# 퍼블릭 서브넷 A - 2600:1f13:1234:5600::/64
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-0abc111 \
--ipv6-cidr-block 2600:1f13:1234:5600::/64
# 퍼블릭 서브넷 B - 2600:1f13:1234:5601::/64
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-0abc222 \
--ipv6-cidr-block 2600:1f13:1234:5601::/64
# 프라이빗 서브넷 A - 2600:1f13:1234:5610::/64
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-0abc333 \
--ipv6-cidr-block 2600:1f13:1234:5610::/64퍼블릭 서브넷에서 시작된 인스턴스에 대해 자동 할당 IPv6 주소를 활성화하세요:
aws ec2 modify-subnet-attribute \
--subnet-id subnet-0abc111 \
--assign-ipv6-address-on-creation라우팅 테이블#
IPv6 라우팅은 IPv4와 별도입니다. IPv6 CIDR 블록에 대한 경로를 생성하세요.
퍼블릭 서브넷의 경우 모든 IPv6 트래픽(::/0)을 인터넷 게이트웨이로 라우팅하세요:
aws ec2 create-route \
--route-table-id rtb-0abc123 \
--destination-ipv6-cidr-block ::/0 \
--gateway-id igw-0def456인터넷 게이트웨이는 수정 없이 IPv4 및 IPv6를 모두 처리합니다.
프라이빗 서브넷의 경우 송신 전용 인터넷 게이트웨이를 사용합니다(나중에 설명):
aws ec2 create-route \
--route-table-id rtb-0abc789 \
--destination-ipv6-cidr-block ::/0 \
--egress-only-internet-gateway-id eigw-0ghi012경로를 확인하세요:
aws ec2 describe-route-tables --route-table-ids rtb-0abc123 \
--query 'RouteTables[0].Routes'EC2 인스턴스 IPv6 구성#
EC2 인스턴스에는 명시적인 IPv6 주소 할당이 필요합니다.
IPv6로 새 인스턴스 시작#
시작할 때 --ipv6-address-count를 지정하세요:
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-0abc456또는 서브넷 범위에서 특정 IPv6 주소를 할당하세요:
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-0abc456기존 인스턴스에 IPv6 추가#
네트워크 인터페이스 ID(ENI)를 가져오세요:
aws ec2 describe-instances --instance-ids i-0abc123 \
--query 'Reservations[0].Instances[0].NetworkInterfaces[0].NetworkInterfaceId'IPv6 주소를 할당하세요:
aws ec2 assign-ipv6-addresses \
--network-interface-id eni-0def456 \
--ipv6-address-count 1또는 정확한 주소를 지정하세요:
aws ec2 assign-ipv6-addresses \
--network-interface-id eni-0def456 \
--ipv6-addresses 2600:1f13:1234:5600::b인스턴스 OS 구성#
대부분의 최신 AMI(Amazon Linux 2023, Amazon Linux 2, Ubuntu 20.04+)는 cloud-init 및 DHCPv6를 통해 IPv6를 자동으로 구성합니다.
인스턴스에 SSH로 접속하여 확인하세요:
ip -6 addr showeth0 인터페이스에서 할당된 IPv6 주소가 표시되어야 합니다:
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 forever연결을 테스트하세요:
ping6 google.com
curl -6 https://ifconfig.coIPv6가 구성되지 않은 경우 cloud-init 로그를 확인하세요:
sudo cat /var/log/cloud-init.log | grep -i ipv6일부 오래된 AMI는 수동 구성이 필요할 수 있습니다. /etc/network/interfaces(Debian/Ubuntu) 또는 /etc/sysconfig/network-scripts/ifcfg-eth0(RHEL/CentOS)에 추가하세요.
보안 그룹#
보안 그룹에는 명시적인 IPv6 규칙이 필요합니다. IPv4 규칙은 IPv6 트래픽에 적용되지 않습니다.
듀얼 스택 보안 그룹 규칙 생성#
어디에서나 HTTP/HTTPS 허용(IPv4 및 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}]'특정 IPv6 접두사에서 SSH 허용:
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"}]'모든 ICMPv6 허용(IPv6 작동에 필요):
aws ec2 authorize-security-group-ingress \
--group-id sg-0abc123 \
--ip-permissions IpProtocol=ipv6-icmp,FromPort=-1,ToPort=-1,Ipv6Ranges='[{CidrIpv6=::/0}]'ICMPv6는 IPv6에 중요합니다. 차단하지 마세요. 이웃 탐색, PMTUD 및 기타 핵심 기능에 사용됩니다.
보안 그룹 모범 사례#
- 특별한 이유가 없는 한 IPv4 규칙을 IPv6에 미러링
- 애플리케이션 트래픽과 동일한 소스에서 항상 ICMPv6 허용
- 복잡한 규칙 세트를 두 패밀리 모두에서 관리하기 위해 접두사 목록 사용
- 듀얼 스택 대 IPv4 전용을 식별하기 위한 보안 그룹 태그
예제: 조직의 IPv6 범위에 대한 관리형 접두사 목록 생성:
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=DataCenter보안 그룹 규칙에서 참조하세요:
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) 및 Network Load Balancer(NLB)는 듀얼 스택을 지원합니다. Classic Load Balancer는 지원하지 않습니다.
Application Load Balancer 듀얼 스택#
듀얼 스택을 사용하도록 ALB를 생성하거나 수정하세요:
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-0abc111 subnet-0abc222 \
--security-groups sg-0abc123 \
--ip-address-type dualstack기존 로드 밸런서의 경우:
aws elbv2 set-ip-address-type \
--load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/1234567890abcdef \
--ip-address-type dualstack로드 밸런서는 자동으로 A 및 AAAA DNS 레코드를 모두 받습니다:
dig my-alb-1234567890.us-east-1.elb.amazonaws.com A
dig my-alb-1234567890.us-east-1.elb.amazonaws.com AAAA클라이언트는 IPv4 또는 IPv6를 통해 연결할 수 있습니다. 로드 밸런서는 구성된 주소 패밀리(일반적으로 백엔드 인스턴스의 경우 IPv4)를 사용하여 대상으로 트래픽을 전달합니다.
Network Load Balancer 듀얼 스택#
NLB는 유사하게 듀얼 스택을 지원합니다:
aws elbv2 create-load-balancer \
--name my-nlb \
--type network \
--subnets subnet-0abc111 subnet-0abc222 \
--ip-address-type dualstackNLB는 클라이언트 IP 주소를 유지하므로 대상은 실제 IPv6 소스 주소를 봅니다. 애플리케이션 로그 및 보안 그룹이 두 주소 패밀리를 모두 처리하는지 확인하세요.
대상 그룹#
대상 그룹은 IPv4 주소(가장 일반적) 또는 IPv6로 인스턴스를 등록합니다. 단일 대상 그룹에서 주소 패밀리를 혼합할 수 없습니다.
IPv4 대상 그룹 생성:
aws elbv2 create-target-group \
--name my-targets-ipv4 \
--protocol HTTP \
--port 80 \
--vpc-id vpc-0abc123 \
--ip-address-type ipv4IPv6 대상 그룹 생성:
aws elbv2 create-target-group \
--name my-targets-ipv6 \
--protocol HTTP \
--port 80 \
--vpc-id vpc-0abc123 \
--ip-address-type ipv6대부분의 배포는 듀얼 스택 로드 밸런서에서도 IPv4 대상 그룹을 사용합니다. 로드 밸런서는 프로토콜 변환을 투명하게 처리합니다.
송신 전용 인터넷 게이트웨이#
송신 전용 인터넷 게이트웨이는 프라이빗 서브넷에서 아웃바운드 IPv6 연결을 허용하면서 인바운드 연결을 차단합니다. 이것은 IPv4의 NAT와 유사하지만 주소 변환은 없습니다. IPv6 주소는 전역적으로 고유하게 유지됩니다.
송신 전용 게이트웨이 생성#
aws ec2 create-egress-only-internet-gateway \
--vpc-id vpc-0abc123게이트웨이 ID를 기록하세요:
{
"EgressOnlyInternetGateway": {
"EgressOnlyInternetGatewayId": "eigw-0abc123"
}
}프라이빗 서브넷 트래픽 라우팅#
프라이빗 서브넷 라우팅 테이블에 경로를 추가하세요:
aws ec2 create-route \
--route-table-id rtb-0abc789 \
--destination-ipv6-cidr-block ::/0 \
--egress-only-internet-gateway-id eigw-0abc123프라이빗 서브넷의 인스턴스는 이제 아웃바운드 IPv6 연결을 시작할 수 있지만 인터넷에서 인바운드 트래픽을 수락하지 않습니다.
사용 사례:
- 소프트웨어 업데이트가 필요한 데이터베이스 서버
- 외부 API에 액세스하는 애플리케이션 서버
- IPv6를 통해 AWS API(S3, DynamoDB 등)를 호출하는 내부 서비스
보안 고려 사항#
송신 전용 게이트웨이는 익명성을 제공하지 않습니다. IPv6 주소는 여전히 외부 서비스에 표시됩니다. 이것은 상태 저장 방화벽이지 NAT가 아닙니다.
주소 마스킹으로 진정한 아웃바운드 전용이 필요한 경우 NAT64 게이트웨이가 필요합니다(더 복잡한 설정, 거의 필요하지 않음).
Route 53 DNS#
Route 53은 AAAA 레코드로 IPv6를 완전히 지원합니다.
AAAA 레코드 생성#
인스턴스 또는 로드 밸런서에 대한 AAAA 레코드를 추가하세요:
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"}]
}
}]
}'로드 밸런서용 별칭 레코드#
ALB/NLB에 별칭 레코드를 사용하세요(AAAA 레코드보다 낫습니다. LB IP가 변경되면 자동으로 업데이트됨):
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
}
}
}]
}'AliasTarget의 HostedZoneId는 해당 리전의 ELB에 대한 표준 호스팅 영역입니다(올바른 값은 AWS 문서 참조).
상태 확인#
Route 53 상태 확인은 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)고가용성을 위해 장애 조치 또는 가중치 라우팅 정책과 함께 상태 확인을 사용하세요.
CloudFront IPv6#
CloudFront 배포는 기본적으로 IPv6를 지원합니다(대부분의 경우 비활성화할 수 없음).
CloudFront의 글로벌 엣지 네트워크는 듀얼 스택을 사용합니다. IPv6를 통해 연결하는 클라이언트는 IPv4 클라이언트와 동일한 엣지 위치에 도달합니다.
IPv6 지원 확인:
dig d111111abcdef8.cloudfront.net AAAACloudFront는 프로토콜 변환을 처리합니다. 오리진이 IPv4 전용이어도 CloudFront는 여전히 IPv6 클라이언트에 콘텐츠를 제공합니다.
오리진 구성은 변경이 필요하지 않습니다:
aws cloudfront create-distribution \
--distribution-config file://distribution-config.json예제 distribution-config.json(축약):
{
"Origins": {
"Items": [{
"Id": "my-origin",
"DomainName": "example.com",
"CustomOriginConfig": {
"OriginProtocolPolicy": "https-only"
}
}]
},
"Enabled": true,
"Comment": "My distribution"
}CloudFront는 배포에 대한 IPv6 주소를 자동으로 프로비저닝합니다. 추가 구성이 필요하지 않습니다.
IPv6 전용 워크로드용 NAT64#
일부 워크로드(Lambda, Fargate)는 IPv6 전용으로 실행할 수 있습니다. IPv4 전용 리소스에 액세스해야 하는 경우 NAT64를 사용하세요.
AWS는 관리형 NAT64를 제공하지 않습니다. EC2에서 자체 NAT64/DNS64 게이트웨이를 실행해야 합니다.
Tayga(NAT64) 및 BIND(DNS64)를 사용하는 예제:
- IPv4 및 IPv6를 모두 사용하여 EC2 인스턴스 시작
- NAT64 변환을 위해 Tayga 설치 및 구성
- DNS64 모듈로 BIND 설치 및 구성
- NAT64 게이트웨이를 통해 IPv6 전용 리소스 라우팅
이것은 복잡하고 거의 필요하지 않습니다. 대부분의 배포는 대신 듀얼 스택을 실행합니다.
Terraform 예제#
듀얼 스택 AWS 설정을 위한 코드형 인프라:
# IPv6가 있는 VPC
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"
}
}
# 인터넷 게이트웨이
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
}
# 송신 전용 인터넷 게이트웨이
resource "aws_egress_only_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
}
# 퍼블릭 서브넷
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"
}
}
# 퍼블릭 서브넷용 라우팅 테이블
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
}
# 보안 그룹
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"]
}
}
# IPv6가 있는 EC2 인스턴스
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] # HA를 위해 더 많은 서브넷 추가
ip_address_type = "dualstack"
tags = {
Name = "main-alb"
}
}
# IPv6 CIDR 출력
output "vpc_ipv6_cidr" {
value = aws_vpc.main.ipv6_cidr_block
}
output "instance_ipv6" {
value = aws_instance.web.ipv6_addresses
}다음으로 적용하세요:
terraform init
terraform plan
terraform applyAWS IPv6 배포 테스트#
엔드 투 엔드 연결을 확인하세요:
# DNS 해석 테스트
dig app.example.com AAAA
# HTTP/HTTPS 액세스 테스트
curl -6 https://app.example.com
# 인스턴스에서 테스트
ssh ec2-user@<instance-ipv6>
ping6 google.com
curl -6 https://ifconfig.co네트워크 경로를 확인하려면 AWS Reachability Analyzer를 사용하세요:
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>IPv6를 차단할 수 있는 잘못된 구성을 확인하세요.
일반적인 문제 및 해결 방법#
문제: 인스턴스에 IPv6 주소가 있지만 인터넷에 연결할 수 없음
해결책: 라우팅 테이블에 IGW로의 ::/0 경로가 있는지 확인, 보안 그룹이 아웃바운드 IPv6를 허용하는지 확인
문제: 로드 밸런서에 AAAA 레코드가 없음
해결책: ip-address-type이 dualstack으로 설정되어 있는지 확인, 서브넷에 IPv6 CIDR 블록이 있는지 확인
문제: IPv6를 통해 인스턴스에 SSH를 할 수 없음
해결책: ::/0 또는 특정 IPv6 CIDR에서 TCP 포트 22를 허용하는 보안 그룹 규칙 추가
문제: 송신 전용 게이트웨이가 작동하지 않음 해결책: 라우팅 테이블 연결 확인, 인스턴스에 IPv6 주소가 할당되어 있는지 확인
문제: CloudFront가 IPv6를 통해 제공하지 않음 해결책: CloudFront IPv6는 자동이며 비활성화할 수 없습니다. DNS 해석 및 클라이언트 연결 확인
비용 고려 사항#
IPv6 자체는 AWS에서 무료입니다. IPv6 CIDR 블록이나 주소에 대한 비용을 지불하지 않습니다.
데이터 전송 비용은 IPv4 및 IPv6에 대해 동일합니다. IPv6에 대한 가격 이점은 없습니다. 이점은 아키텍처 단순성과 IPv4 고갈 방지입니다.
송신 전용 인터넷 게이트웨이는 무료입니다(시간당 약 $0.045 및 데이터 처리 요금이 부과되는 NAT 게이트웨이와 달리).
관련 글#
- AWS, Azure 및 GCP의 IPv6 - 멀티 클라우드 IPv6 개요
- IPv6 모범 사례 - 프로덕션 배포 가이드라인
- 듀얼 스택 마이그레이션 가이드 - IPv4 전용에서 듀얼 스택으로 전환