초보 개발자

[AWS] IPv4 IPv6에 관하여 본문

카테고리 없음

[AWS] IPv4 IPv6에 관하여

taehyeki 2024. 6. 23. 18:03

 

들어가며

최근 들어 AWS에서는 Public IPv4 address를 이용하는 경우 개당 매월 4달러 정도의 과금이 됩니다. IPv4의 고갈 그리고 IPv6이용을 장려하기 위해서가 아닐까 하는 생각이 듭니다. 또한 IPv6를 서포트 하는 서비스들이 많이 생겨나고있기에 IPv6에 관하여 정리를 해보고 싶다는 생각이 들었습니다. 마침 AWS SUMMIT JAPAN 2024에서 이에 관한 세션이 있어 ( "IPv6 on AWS ~Public IPv4 アドレス削減に向けてできることできないこと~") 이를 정리하며 배운점과 느낀점에 대해 적은 글입니다. 

 


 


 

IPv4 주소의 고갈

여러분, IPv4의 주소가 고갈되고있다는 말을 들어보신 적이 있으신가요? 

 

IPv4는 약 42억정도의 주소를 가지고 있습니다. (255**4) IP의 개념이 처음 나왔을 때에는 이 정도면 걱정없이 사용할 수 있는 양이라고 생각했을텐데요. 하지만 비약적인 IT발전과 보급에의해 인터넷에 접속하는 단말의 수가 폭증하면서 이제는 42억개도 부족하다고 합니다. 수요는 증가하지만 공급은 감소하기에 가격이 오르는건 당연한 결과겠지요 ? 

 

이에 따라 AWS에서도 2024년 2월 1일부터 Public IPv4에 대한 가격정책을 변경 시행하였습니다. 지금까지는 무료였지만 시간당 0.005달러를 청구한다고합니다. 한달기준으로 약 4달러 정도 발생하네요. 한 개라면 그렇게 큰 부담이 아니지만 여러개라면 부담이 되겠네요..

24h x $0.005(per hour) x 31d = $3.72 

 

물론 IPv4를 이용해도 전혀 문제가 없지만 굳이 IPv4를 사용할 이유가 없다면 무료인 IPv6로 이행하는 것이 가격적인 면에서 합리적일거에요.

 


IPv6에 대하여

IPv6는 인터넷 프로토콜의 하나로써 Internet Protocol Version 6의 약칭인데요. 

IPv4의 고갈현상에 따라 대체자원으로써 사용됩니다.

 

IPv6의 주소길이는 128비트입니다. (IPv4는 32비트) 

42억 x 42억 x 42억 x 42억개 (320간 개)의 주소를 가질 수 있습니다. 이 정도라면 인류가 멸망할때까지는 고갈문제가 없겠죠 ?

 

IPv6의 보급률은 약 50%라고 합니다.  (2024년 4월 12일 시점 구글조사에 의하면) 생각보다 많아서 놀랐어요.

이유 중 하나로는  스마트폰 그리고 그안의 앱등이 IPv6를 대응하도록 의무화 되었다고 하네요. 

 

IPv6특징

  • 나중에 추가 가능 ( 네트워크 재구축 필요  X )  
  • VPC는 /44, /48, /52, /56, /60의 사이더 이용가능
  • Subet은 /44, /48, /52, /56, /60 /64의 사이더 이용가능
  • IPv6이행 이전 기존 EC2 인스턴스는 하나씩 IPv6를 유효화 해야함
  • 루트 테이블도 IPv6용 추가 필요

 

AWS서비스 중 IPv6를 지원하는 서비스를 참고해주세요.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/aws-ipv6-support.html

 

IPv6를 지원하는 AWS 서비스 - Amazon Virtual Private Cloud

IPv6를 지원하는 AWS 서비스 컴퓨터와 스마트 장치는 IP 주소를 사용하여 인터넷 및 기타 네트워크를 통해 서로 통신합니다. 인터넷이 계속 성장함에 따라 IP 주소에 대한 필요성도 증가하고 있습

docs.aws.amazon.com


 

IPv6에서 인터넷 접속 시 이용가능한 게이트웨이

Private Subnet, Public Subnet에 각각 EC2가 있는 평범한 아키텍쳐입니다.

여기에 IPv6를 대응하도록 살짝 추가해보았는데요. IPv6환경에서 인터넷에 접속할 때 사용할 수 있는 Gateway에 대해 설명하려 합니다.

 

1. Internet Gateway

Public Subnet에 있는 인스턴스는 직접 Internet Gateway를 통해 인터넷에 접속할 수 있습니다.

클라이언트는 인터넷게이트웨이를 통해 인스턴스에 접속도 할수있죠. 이는 IPv4일 때와같죠?

한가지 특징이 있다면, IPv6를 이용할 때에는 IPv6주소가 퍼블릭 IP주소로써 기능한다는 것입니다. (NAT하지 않음 )

 

2.Egress-only Internet Gateway

Private Subnet에 있는 인스턴스가 직접 Egress-only Internet Gateway를 통해서 인터넷에 접속할 수 있습니다.

대상은 IPv4가 아닌 IPv6만 가능합니다.

(종래 IPv4를 이용하는 경우에는 NAT gateway -> Internet Gateway순으로 나가야했지요.)

 

다만 이름에서 추측할 수 있듯이 클라이언트는 인터넷을 통해 인스턴스에 들어오는 것은 불가능합니다.

IPv6를 이용할 때에는 IPv6주소가 퍼블릭 IP주소로써 기능합니다. (NAT하지 않음 )

 

3. NAT Gateway - DNS64 ( IPv6주소만 가질 경우를 상정, 위 아키텍쳐와 다름)

일반적으로는 IPv6에서는 IPv6로 밖에 접속이 안됩니다. (IPv6 -> IPv4 X)

하지만 NAT Gateway를 이용하면 IPv6에서 IPv4로 접속이 가능합니다.

 

프라이빗 서브넷의 IPv6인스턴스에서 203.0.113.1이라는 외부 IPv4서비스를 이용한다고 가정해보겠습니다.

 

1. 먼저 서브넷에서 도메인 이름 해석을 위하여 DNS64을 활성화 시킬 필요가 있습니다.

2. IPv6인스턴스는 Route 53 resolver에게 203.0.113.1에 해당하는 이름 해석 의뢰를 합니다.

3. Route53 resolver는 203.0.113.1에 IPv6의 주소를 부여합니다 (ex) 64:ff9b::/96)

4. 루트 테이블에 64:ff9b::/96를 NAT gateway로 보내도록 하는 루트를 추가합니다.

5. NAT Gateway는 자신의 글로벌아이피(ex) 198.51.100.1을 이용하여 203.0.113.1과 통신을합니다.

 

이로 인해서 IPv6가 IPv4와 통신을 할 수 있게됩니다.

 


 

IPv4 , IPv6 코스트 삭감 방법

1. Public IPv4사용을 최소화 

Public IPv4의 비용이 발생한다고 해서 당장 IPv6로 변경하기는 현실적으로 힘들어요.

만약 ALB IPv6만을 허용한다면, IPv4주소를 가진 클라이언트는 해당 ALB를 이용할 수 없게 되기 때문이에요.

ALB뿐만아니라 인터넷에 서비스를 제공하는 리소스들을 IPv4에 IPv6를 더하여 사용할 수 있는 듀얼스택을 제공하고있습니다.

 

여러 ALB를 두어 여러 Public IPv4를 이용하는 경우, 이를 하나로 통일하여 host header나, path rule등으로 구분하여 각각의 대상그룹에 트래픽을 전달하는 방법을 고려해도됩니다. 이로 인해서 Public IPv4는 하나만 사용하게 되므로 비용을 절감시킬 수 있어요.

 

다만 이에 따라 고려해야할 부분(SSL)이 있습니다. 아래의 링크를 참고해주세요.

https://stackoverflow.com/questions/27521758/multiple-domain-names-attached-to-same-load-balancer-as-alias-records

 

Multiple domain names attached to same load balancer as alias records?

I have hosted multiple domain names (example.com and example.net ) on same instance in my auto scaling group. Now I have attached this auto scaling group to a load balancer. Using Route 53 can I po...

stackoverflow.com

 

 

2. Egress-only Internet Gateway 사용 ()

Private Subnet에서 인터넷에 접속하려면 통상적으로 NAT Gateway를 이용해야합니다. NAT Instance를 이용하여 비용을 절감시킬 수는 있지만 이를 운용하려면 또 그에 대한 노동력과 코스트가 발생하겠지요. NAT Gateway는 서비스 이용료 뿐만아니라 데이터 전송료가 들기때문에 생각보다 비용이 많이 듭니다. 막대한 데이터 양을 다룬다면 어마어마한 비용이 청구될 수 있습니다.

 

서론이 길었지만, 대상이 IPv6를 지원한다면(IPv4이면 안됨) NAT Gateway경유를 하지 않고 Egress-only Internet Gateway를 이용하는 것이 합리적입니다. Egress-only internet Gateway는 비용이 발생하지 않기때문이에요.

 

2AZ구성의 프라이빗 서브넷의 두 인스턴스에서 SaaS 혹은 외부 API에 데이터(AZ마다 120TB)를 전송한다고 가정해보죠.

 

SaaS, 외부 API가 IPv6대응하지 않을 경우 Nat Gateway경유

NAT Gateway 비용 ( 도쿄 리전 2024.06 기준 )
서비스 이용료 $45.26  x 2AZ = $90.52
퍼블릭 IP 요금 $3.65 x 2 = $7.3
데이터 처리 비용 $0.062 x 122,880 GB x 2 AZ = $15,237
데이터 송신 비용 $21,360 (240TB)
합계 / 월  $36,695 

 

 

SaaS, 외부 API가 IPv6대응할 경우 Egress-only internetGateway경유 (IPv4에 접속하는 경우를 위해 NAT Gateway를 완전 대체하지는 않다고 가정)

NAT Gateway 비용 ( 도쿄 리전 2024.06 기준 )
서비스 이용료 $45.26  x 2AZ = $90.52
퍼블릭 IP 요금 $3.65 x 2 = $7.3
데이터 처리 비용 $0.062 x 122,880 GB x 2 AZ = $15,237
데이터 송신 비용 $21,360 (240TB)
합계 / 월  $21,457 

 

데이터 처리 비용이 발생하지 않아 ( Egress-only internetGateway 비용 발생 X ) 약 $15.237를 매월 삭감이 가능합니다.

 

정리

1. 인터넷에 접속하는 리소스들은 IPv4대응을 해야할 필요가 있기때문에, 하나로 통일 시켜 비용을 절감하는 방법이 있다.

2. 프라이빗 서브넷에서의 IPv6통신을 Egress-only internet Gateway에 오프로드 하는 것으로 NAT Gateway의 데이터 처리 요금을 삭감 가능합니다. 

3. NAT Gateway를 완전히 Egress-only internet gateway로 대체하기 위해서는 모든 통신 상대가 IPv6를 대응해야합니다.

 


IPv6 이행 도전

1. ALB를 듀얼스택화

ALB를 듀얼스택화 시킴으로써 IPv6의 통신을 수신하는 것이 가능해진다.  그럼 ALB의 대상인 EC2도 IPv6를 대응해야할 필요가 있나? 싶을텐데.  ALB는 대상에 IPv4 통신이 가능하기 때문에 대상 EC2에서는 별도 IPv6대응을 할 필요는 없다.

 

따라서 만약 서비스가 IPv6를 대응해야하는 경우, 단순히 이용하는 ALB를 듀얼스택화 시킴으로써 간단히 IPv6대응이 가능해진다.

 

듀얼스택화 방법

1. IPv6 CIDR블록을 VPC및 서브넷에 연결시킨다.

2. 루트 테이블을 갱신한다.

3. 보안 그룹을 갱신한다.

4. ALB의 IP address type을 Dualstack으로 설정한다.

5. DNS 리소스 레코드를 등록한다.

-동일한 레코드를 생성하고 타입 A, AAAA에 동일한 호스트 명을 적는다 ( 호스트 명을 분리하는 것도 가능 ) 

6. 필요하다면 AWS WAF 룰을 확인한다.

 

2. 아웃바운드 통신을 IPv6대응하도록

Egress-only internet gateway를 이용하면, 내부 데이터 처리 비용이 발생하지 않기때문에, 

인스턴스를 IPv6를 대응하도록 수정 후, 통신 대상이 IPv6인 경우에는  Egress에 오프로드를 시킴으로써 비용을 감소시킬 수 있다.

 


정리 

  • IPv4 / IPv6는 상호 호환되지 않기에 각 환경에 맞게 설계, 설정, 관리, 운용이 필요합니다.
    • 시큐리티, 필터링 
    • 루트테이블, 게이트웨이
    • DNS
    • ...
  • ALB를 듀얼스택화 시킴으로써 변경을 최소화 하며 IPv6대응이 가능해집니다.
  • 아웃바운드 통신을 Egress-only Internet Gateway에 오프로드 시킴으로써 코스트 최적화가 가능해집니다.