Amazon Web Services 한국 블로그

Amazon VPC, IPv6 전용 워크로드를 IPv4 서비스에 연결하도록 허용하기

오늘 저희는 IPv6 전용 워크로드가 IPv4 전용 서비스와 투명하게 통신할 수 있도록 지원하는 Amazon Virtual Private Cloud(VPC) NAT 게이트웨이Amazon Route 53을 위한 두 가지 새로운 기능을 발표합니다.

여러분 중 일부는 수만 개의 가상 머신, 컨테이너 또는 마이크로 서비스와 관련된 매우 큰 워크로드를 실행하고 있습니다. 그러기 위해서, 이러한 워크로드가 IPv6 주소 공간에서 작동하도록 구성했습니다. 이러면 사용 가능한 IPv4 주소 부족 문제를 예방할 수 있으며 (/56 ranges for IPv6에 비해 단일 VPC의 이론상 최대 크기는 65,536 IPv4 주소이며, 이론상 최대 크기는 2^73 -1 IPv6 주소입니다), 복잡한 IPv4 기반 네트워크 관리의 어려움을 덜어줍니다 (복수의 AWS 계정, AWS 리전 또는 온프레미스 네트워크에 속한 VPC 간 일치하지 않는 서브넷을 생각해 보십시오).

하지만 나머지 IPv4 환경과는 별도로 IPv6 워크로드를 실행할 수 있습니까? 대부분의 사용자는 여러 종속 워크로드를 IPv6에서 IPv4로 마이그레이션하는 동안 이러한 워크로드가 IPv4 서비스와 계속 통신하도록 해서, 이전 API를 호출하거나 일시적인 디자인으로 계속 통신하는 것이 중요하다고 말씀하셨습니다. IPv6 호스트에서 IPv4 서비스를 호출할 수 없는 경우 마이그레이션 속도가 느려지고 필요 이상으로 어려워집니다. 일부 사용자는 유지 관리가 어려운 맞춤형 솔루션을 구축해야 했습니다.

따라서 저희는 IPv6 워크로드가 IPv4 서비스와 투명하게 통신할 수 있도록 지원하는 두 가지의 신기능을 출시합니다. VPC NAT 게이트웨이의 경우 NAT64 (“6, 4″로 읽음)와 Amazon Route 53 리졸버의 경우 DNS64(동일하게 “6, 4″로 읽음)입니다.

그렇다면 작동 원리는 무엇일까요?
다음 다이어그램에서 볼 수 있듯이 다른 EC2 인스턴스에서 실행되는 IPv4 서비스에 대한 API 호출을 수행해야 하는 IPv6 전용 주소를 가진 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있다고 가정해 보겠습니다. 다이어그램에서 IPv4 전용 호스트를 동일한 AWS 계정의 별도 VPC에 배치하기로 선택했으나, 이러한 기능은 동일 VPC 또는 다른 AWS 계정의 VPC, 온프레미스 네트워크 또는 퍼블릭 인터넷에 관계없이 모든 IPv4 서비스에 연결할 수 있습니다. IPv6 전용 호스트는 서비스의 DNS 이름만 알고 있습니다.

NAT64 DNS64 이전 IPv6 전용 호스트가 IPv4 서비스에 대한 연결을 시작할 때 일어나는 일의 순서는 다음과 같습니다.

1. IPV6 호스트는 DNS 호출을 수행하여 서비스 이름을 IP 주소로 확인합니다. DNS64이 없었다면, Route 53은 IPv4 주소를 반환했을 것입니다. IPv6 전용 호스트는 해당 IPv4 주소에 연결할 수 없었을 것입니다. 하지만 오늘부터 서브넷에 DNS64을 활성화할 수 있습니다. DNS 리졸버는 우선 레코드가 IPv6 주소(AAAA 레코드)를 포함하는지 확인합니다. 이 경우 IPv6 주소가 반환됩니다. IPv6 호스트는 IPv6만 사용하여 서비스에 연결할 수 있습니다. 레코드가 IPv4 주소만 포함하는 경우 Route 53 리졸버는 잘 알려진 64:ff9b::/96 접두사를 IPv4 주소 앞에 추가하여 IPv6을 합성합니다.

예를 들어 IPv4 서비스의 주소가 34.207.250.62인 경우, Route 53은 64:ff9b::ffff:22cf:fa3e을 반환합니다.

IPv6 (16진수): 64:ff9b::ffff: 22 cf fa 3e
IPv4 (십진수): 34 207 250 62

64:ff9b::/96RFC 6052 제안 스탠더드에 정의된 잘 알려진 접두사이며, IETF를 대상으로 합니다. 스탠더드 텍스트 읽기는 IPv6에서 IPv4로의 변환에 관한 모든 세부 정보를 배우기 위해 빠르게 잠들 수 있는 좋은 방법입니다.

2. IPv6 호스트는 64:ff9b::ffff:22cf:fa3e에 대한 연결을 시작합니다. 64:ff9b::/96으로 시작하는 모든 패킷을 NAT 게이트웨이로 전송하도록 서브넷 라우팅을 구성할 수 있습니다. NAT 게이트웨이는 IPv6 주소 접두사를 인식하고, 이 접두사에서 IPv4 주소를 추출하며, 대상에 대한 IPv4 연결을 시작합니다. 일반적으로 원본 IPv4 주소는 NAT 게이트웨이의 자체 IPv4 주소입니다.

3. 패킷 응답이 도착하면 NAT 게이트웨이는 대상 호스트 IPv6 주소를 다시 채우고, 잘 알려진 접두사 64:ff9b::/96을 응답 패킷의 소스 IP 주소 앞에 추가합니다.

작동 방식을 이해했으니 이제 이러한 두 가지 신기능을 활용하려면 VPC를 어떻게 구성해야 할까요?

시작하기
이 두 가지 기능을 사용하려면 두 개의 구성을 조정해야 합니다. 첫째로 DNS64 변환이 필요한 서브넷에 플래그를 지정하고, 둘째로는 IPv6 서브넷 라우팅 테이블에 경로를 추가하여 IPv6 트래픽의 일부를 NAT 게이트웨이로 전송합니다.

DNS64 을 활성화하려면 새로운 --enable-dns64 옵션을 사용하여 기존 서브넷을 수정해야 합니다. 이 데모에서는 modify-subnet-attribute 명령을 사용합니다. 이 작업은 한 번만 수행하면 됩니다. 이 작업은 VPC API, AWS 명령줄 인터페이스(CLI) 또는 AWS 관리 콘솔을 사용하여 수행할 수 있습니다. 이 구성은 명시적으로 활성화해야 하는 서브넷 수준 구성입니다. 기본적으로 기존 동작은 유지됩니다.

aws ec2 modify-subnet-attribute --subnet-id subnet-123 --enable-dns64

VPC가 접두사가 DNS64인 IPv6 패킷을 NAT 게이트웨이로 전달할 수 있도록, 서브넷의 라우팅 테이블에 경로를 추가해야 합니다. 대상이 64:ff9b::/96인 모든 패킷을 NAT 게이트웨이로 라우팅하도록 지시합니다.

aws ec2 create-route --route-table-id rtb-123 –-destination-ipv6-cidr-block 64:ff9b::/96 –-nat-gateway-id nat-123

다음 다이어그램은 이러한 두 가지 간단한 구성 변경 사항을 보여줍니다.

NAT64 DNS64 이후 이 두 가지의 간단한 변경 사항을 통해 서브넷의 IPv6 전용 워크로드가 이제 IPv4 서비스와 통신할 수 있습니다. IPv4 서비스는 동일한 VPC, 다른 VPC 또는 인터넷의 어느 곳에서나 상주할 수 있습니다.

기존 NAT 게이트웨이를 계속 사용할 수 있으며, 게이트웨이 자체 또는 NAT 게이트웨이 서브넷에 연결된 라우팅 테이블을 변경할 필요가 없습니다.

요금 및 가용성
VPC NAT 게이트웨이 및 Route 53에 대한 이 두 가지 새로운 기능은 현재 모든 AWS 리전에서 추가 비용 없이 사용할 수 있습니다. 일반 NAT 게이트웨이 요금이 적용될 수 있습니다.

IPv6 전용 네트워크를 구축해 보세요!

— seb