-
[ 목차 ]
Google Cloud에서 IPv6 전용 환경을 구축할 때 IPv4 기반 서비스에 접근해야 하는 요구가 자주 발생합니다.
IPv4를 제거하고 IPv6만 사용하는 환경을 구성하는 것이 장기적으로 필요한데, 이때 DNS64와 NAT64를 함께 구성하면 IPv6 전용 인스턴스에서 IPv4 서비스에 접근하도록 할 수 있습니다.

1. 개요
IPv6 전용 환경에서는 IPv4 주소가 없기 때문에 IPv4 기반 서비스의 DNS 조회가 불가능합니다. 이를 해결하기 위해 Google Cloud는 두 가지 기능을 제공합니다.
- DNS64 : IPv4 전용 서비스 이름을 질의하면, 자동으로 합성된 IPv6 주소를 반환합니다.
- NAT64 : 그 합성된 IPv6 주소로 들어온 트래픽을 실제 IPv4 네트워크로 변환(트랜슬레이트) 해 줍니다.
즉, DNS64는 이름 → 주소를 만들어주는 역할을 하고, NAT64는 그 패킷을 IPv4로 변환해주는 역할을 합니다.
2. 준비 조건
아래 조건이 만족되어야 합니다.
- Custom 모드 VPC 네트워크
IPv6 전용 서브넷을 만들기 위해 Custom 모드 네트워크가 필요합니다. - IPv6 전용 서브넷을 사용할 것이므로 서브넷에 IPv6 주소 범위가 할당되어야 합니다.
- 적절한 IAM 권한이 필요합니다.
특히 dns.policies.create, compute.networks.create, compute.routers.create 등이 있어야 작업 가능합니다.
3. VPC 및 IPv6 전용 서브넷 만들기
먼저 네트워크와 서브넷을 준비합니다. Terraform 또는 gcloud CLI로 진행할 수 있으며, 여기서는 gcloud 기준입니다.
VPC 네트워크 생성
gcloud compute networks create ipv6-nat64-vpc \
--project=PROJECT_ID \
--subnet-mode=custom \
--mtu=1500 \
--bgp-routing-mode=regional
IPv6 전용 서브넷 생성
gcloud compute networks subnets create ipv6-only-subnet \
--network=ipv6-nat64-vpc \
--region=us-central1 \
--stack-type=IPV6_ONLY \
--ipv6-access-type=EXTERNAL
이렇게 구성하면 IPv6 전용 서브넷이 생성됩니다. 이 서브넷에 할당되는 인스턴스는 기본적으로 IPv6만 할당받습니다.
4. IPv6 전용 VM 인스턴스 생성
이 서브넷에 VM 인스턴스를 생성합니다.
gcloud compute instances create v6-only-vm \
--project=PROJECT_ID \
--zone=us-central1-a \
--subnet=ipv6-only-subnet \
--stack-type=IPV6_ONLY \
--machine-type=e2-medium
이 인스턴스는 IPv6만 가지고 있으며, 직접적으로 IPv4 서비스를 호출할 수 없습니다.
5. DNS64 서버 정책 구성

IPv6 전용 환경에서도 IPv4 이름을 IPv6 주소로 바꿔주는 DNS64 정책을 구성해야 합니다.
DNS64 정책 생성
gcloud dns policies create dns64-policy \
--project=PROJECT_ID \
--networks=ipv6-nat64-vpc \
--description="Enable DNS64 for IPv6-only workloads" \
--enable-dns64-all-queries
위 정책은 이 VPC 내에서 DNS 쿼리가 있을 때 IPv4 전용 서비스의 A 레코드를 AAAA로 합성해서 반환합니다.
6. NAT64 게이트웨이 구성
DNS64는 주소를 합성하지만, 실제로 패킷을 IPv4로 보내려면 NAT64가 필요합니다.
1) Cloud Router 생성

gcloud compute routers create nat64-router \
--project=PROJECT_ID \
--network=ipv6-nat64-vpc \
--region=us-central1
2) NAT64 지원 Cloud NAT 생성

gcloud beta compute routers nats create nat64-gateway \
--router=nat64-router \
--region=us-central1 \
--project=PROJECT_ID \
--auto-allocate-nat-external-ips \
--nat64-all-v6-subnet-ip-ranges
이렇게 구성하면 IPv6 전용 인스턴스에서 온 트래픽이 NAT64 게이트웨이를 통해 IPv4로 변환되어 외부 IPv4 서비스에 접근할 수 있습니다.
7. 확인 및 테스트
구성이 완료되면 테스트를 해 봅니다. IPv6 전용 VM 안에서 다음 명령을 실행합니다.
curl http://ipv4-only-service.example.com
DNS64 정책 덕분에 IPv4 서비스 도메인이 AAAA로 합성되어 돌아오고
NAT64가 그 패킷을 IPv4로 변환하여 정상적으로 응답이 와야 합니다.
만약 연결이 안 된다면 다음을 점검합니다.
- DNS64 정책이 올바르게 적용된 VPC인지 확인
- NAT64 게이트웨이가 생성되었는지 확인
- 방화벽 규칙에서 IPv6 아웃바운드를 허용했는지 확인
8. 제한 사항
DNS64 + NAT64 환경에서도 VPC 내부의 IPv4 전용 서비스에는 기본적으로 접근이 되지 않습니다. 이는 Google Cloud의 NAT64가 외부 인터넷 접근만 지원하기 때문입니다.
9. 결론
이 가이드는 Google Cloud에서 IPv6 전용 워크로드가 IPv4 서비스에 접근할 수 있게 하는 구성을 다룹니다. 기본적으로 다음과 같이 구성합니다.
- IPv6 전용 서브넷과 VM 생성
- DNS64 정책으로 IPv4 도메인을 IPv6로 합성
- NAT64 게이트웨이로 IPv6 → IPv4 트래픽 변환
이 구성을 통해 IPv4 주소 없이도 IPv4 전용 서비스와 통신하도록 할 수 있습니다.