
AWS는 NAT64를 사용하여 IPv6 전용 노드에서 외부 IPv4 전용 서비스에 대한 연결을 지원합니다. 그 반대에 해당하는 것이 있습니까?
상황에 따라 현재 IPv4 전용이며 모두 프라이빗 서브넷에 있는 EKS 클러스터가 있습니다. 외부 IP와의 통신은 NAT 게이트웨이를 통해 이루어집니다(일반적으로 웹후크 또는 유사한 아웃바운드 요청의 경우). 이제 일부 외부 서비스가 IPv6 전용으로 전환되고 있습니다. 전체 클러스터를 IPv6으로 마이그레이션하지 않고 연결할 수 있는 방법이 있습니까? EKS는 듀얼 스택 네트워크를 지원하지 않으므로 마이그레이션은 상당히 크고 위험한 프로젝트가 될 수 있습니다.
답변1
아니요, IPv4 소스 IPv6 대상은 그다지 쉽지 않습니다. 다른 방법이나 기본 IPv6과 비교합니다.
DNS64 + NAT64IPv6 전용 네트워크에서 v4에 연결하는 데 사용되는 전환 메커니즘은 간단합니다. 작은 v6 접두사는 전체 v4 주소 공간을 포함할 수 있습니다. Fancy DNS는 결과에 A 레코드만 있는 경우 이 접두사에 AAAA 레코드를 생성합니다. 그리고 듀얼 스택 NAT에는 간단한 상태 비저장 1:1 변환 기능이 있어 속도가 빠르고 구성이 필요하지 않습니다.
다른 방향으로 가는 것과 대조됩니다. 원격 서비스의 주소가 다음과 같다고 가정해 보겠습니다. 2001:db8:114:6614:240e:6d9d:8a1d:59d3
전체 32비트 IPv4 주소 공간에는 마지막 두 자리 그룹인 8a1d:59d3
부분만 포함될 수 있습니다. 따라서 화려한 DNS 트릭과 수정되지 않은 애플리케이션은 작동하지 않습니다. 이론적으로 듀얼 스택 프록시는 v4 연결을 종료하고 v6 연결을 종료할 수 있습니다. 하지만 v6 주소를 어떻게 얻고 DNS 또는 TLS의 이름에 대한 애플리케이션 트래픽을 구문 분석할 건가요? 상태 저장 NAT를 통해 흐름을 유지하는 방법은 무엇입니까?
그러나 Kubernetes에는 네트워킹에 대한 자체 아이디어가 있으며 EKS도 예외는 아닙니다. NAT64를 도입하는 것뿐만 아니라EKS에는 이중 스택 설계가 있습니다.v6은 포드에 할당되지만 v4의 경우 인터넷에 몇 번 NAT되는 호스트 전용 v4도 있습니다.
NAT가 없는 송신 인터넷 게이트웨이에서 애플리케이션의 v6이 인터넷의 v6에 비해 얼마나 간단한지 확인하세요. v6 외부 리소스와 연결을 얻는 것이 조직에서 이렇게 하는 이유입니다. 포드 수에 따른 서브넷 크기 조정에 대한 우려를 제거하는 것 외에도.
이것을 구현하고 현대 인터넷에 적용하는 것은 하나의 프로젝트입니다. 그렇습니다. 가장 먼저 할 일은EKS의 IPv6 체크리스트클러스터는 v6으로 생성되어야 합니다.
이 프로젝트를 할 수 있습니다. 이 새로운 디자인으로 두 번째 클러스터를 만듭니다. 새 애플리케이션을 시작하고 유지 관리 기회가 있을 때 다른 애플리케이션을 마이그레이션하세요. 문제가 있으면 되돌리기 계획을 세워서 이전 상태로 되돌리세요. 최악의 경우에는 기존 클러스터를 그대로 재구축할 수도 있습니다. 결국 이는 코드형 인프라입니다.
답변2
이 옵션은 문서에 숨겨져 있지만 IPv4 EKS 클러스터에서 IPv6 송신을 수행하는 것이 가능합니다. 이 작업은 다음을 사용하여 수행할 수 있습니다.ENABLE_V6_EGRESSvpc-cni 애드온의 옵션입니다.
그러면 "fd00::ac:00/118" 범위의 노드-개인 주소로 각 Pod가 구성됩니다. 외부 엔드포인트의 경우 포드는 노드를 통해 NAT를 수행합니다.
기술적으로 이것은 "IPv4에서 IPv6 NAT로"는 아니지만 IPv4 EKS 클러스터에서 IPv6 송신 목표를 달성합니다.
필요한 단계:
- VPC 및 서브넷에 IPv6 블록을 할당하고 서브넷에서 "IPv6 주소 자동 할당"을 활성화합니다. 외부 전용 인터넷 게이트웨이를 추가하고 라우팅 테이블을 적절하게 구성합니다.
- 모든 노드를 순환하여 각각에 할당된 IPv6 주소를 얻습니다.
- vpc-cni 애드온이 버전 1.13 이상인지 확인하세요.
- 다음 구성으로 vpc-cni 애드온을 업데이트합니다
{"env":{"ENABLE_V6_EGRESS":"true"},"init":{"env":{"ENABLE_V6_EGRESS":"true"}}}
. 모든 노드를 순환시킨 후에만 이 작업을 수행하십시오. 그렇지 않으면 롤아웃이 실패합니다.