1. IPv6->IPv6 통신
AWS IPv6주소를 갖는 클라이언트가 IPv6와 통신하려면, IPv4처럼 Internet gateway를 사용하면 됩니다. 라우팅 테이블은 모든 IPv6(::/0)에 대해 Internget gateway를 사용하도록 설정합니다.
2. IPv6->Ipv4 통신 문제
IPv6->IPv4는 아쉽지만 IPv6->IPv6처럼 Internet gateway만 사용하여 통신이 불가능합니다. Internget gateway는 IPv6->IPv4프로토콜 변환기능이 없기 때문입니다.
3. IPv6->IPv4 통신 오류 수정방법
IPv6->IPv4 통신을 가능하게 하려면 IPv6->IPv4 프로토콜 변환 과정을 추가해야 합니다. 프로토콜 변환은 Nat Gateway가 담당합니다.
그러므로, IPv6가 IPv4로 통신을 할 때는 Nat Gateway가 처리하도록 라우팅 테이블 설정이 필요합니다. 라우팅 규칙은 목적지 IP가 64:ff9b::/96를 Nat Gateway로 설정해주세요. 64:ff9b::/96 목적지는 AWS VPC가 정한 규칙입니다. 공식문서를 참고해주세요.
4. IPv6->IPv4 통신 테스트
라우팅 테이블 설정이 끝났으니, 이제 IPv6 클라이언트에서 IPv4를 호출해보겠습니다. 테스트 환경은 아래 그림과 같습니다. 테스트 환경은 테라폼으로 구축했고 저의 github repo에 공개되어 있습니다.
- IPv6 only 테라폼 코드: https://github.com/choisungwook/aws_ipv6/tree/main/example2
- IPv4 only 테라폼 코드: https://github.com/choisungwook/aws_ipv6/tree/main/example3
IPv6->IPv4통신을 하기 위해서는 IPv4주소 변환이 필요합니다. 기존 IPv4 주소는 라우팅 테이블 64:ff9b::/96 목적지에 맞지 않기 때문에, IPv6->IPv4통신이 Nat Gateway로 전달이 되지 않습니다. 따라서 IPv4주소를 IPv6로 변환이 필요합니다. 변환 방법은 IPv4주소를 16진수로 변환하고 라우팅 규칙에 설정한 IPv6 64:ff9b::를 prefix로 추가하면 됩니다.
예를 들어 3.36.112.205를 16진수로 변환하면 0x03, 0x24, 0x70, 0xcd입니다. ChatGPT를 사용하면 쉽게 변환할 수 있습니다.
그리고 IPv4 16진수를 사용하여 IPv6주소로 변환하면 64:ff9b::324:70cd가 됩니다. 변환한 주소로 http 요청을 하면 응답이 잘 옵니다.
curl [64:ff9b::324:70cd];echo
'전공영역 공부 기록' 카테고리의 다른 글
EKS security group 톺아보기 (0) | 2024.03.09 |
---|---|
public EKS, private EKS 차이 (2) | 2024.03.09 |
AWS에서 IPv6를 private IP로 설정하는 방법 (0) | 2024.02.26 |
쿠버네티스 Admission controller (1) | 2024.02.17 |
CloudTrail에서 스팟 인스턴스 종료 이벤트 찾는 방법 (0) | 2024.02.16 |