굉장히 쓸데없지만 CloudShell VPC 모드에서 인터넷 액세스하는 방법을 알려드리려 합니다.
기본적으로 CloudShell VPC 모드에서는 NAT Gateway를 사용하여 인터넷에 액세스 할 수 있습니다.
그러다 어쩔 때 퍼블릭 서브넷에서 비용 문제 등의 이유로 Internet Gateway를 이용하여 접속하고 싶을 때가 있을 것입니다. 그럴 때는 EIP를 이용하면 됩니다.
EIP(탄력적 IP)란?
탄력적 IP 주소는 인터넷에서 연결 가능한 퍼블릭 IPv4 주소입니다. 퍼블릭 IPv4 주소가 없는 인스턴스에 연결해야 하는 경우 탄력적 IP 주소를 인스턴스에 연결하여 인터넷 통신을 활성화할 수 있습니다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
기본적으로 인스턴스나 NAT Gateway의 고정 IP를 확보하기 위해 많이 사용하는 서비스입니다.
CloudShell과 EIP
CloudShell VPC 모드에서는 VPC 내부에서 동작하기 위해 ENI 하나를 생성합니다. 그런데 EIP는 ENI에도 연결할 수 있으므로 이를 활용하여 인터넷에 액세스 할 수 있습니다!
이제 정말 인터넷에 액세스 되는지 확인해 봅시다.
EIP를 연결하지 않았을 때 ping을 보내면 다음과 같이 나타납니다. 5개의 패킷이 모두 전달되지 않았습니다.
[cloudshell-user@ip-10-0-0-149 ~]$ ping -c 5 -i 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4160ms
이제 EIP를 생성하고, ENI에 연결하겠습니다.
그럼 정상적으로 패킷이 모두 전달되는 것을 볼 수 있습니다.
[cloudshell-user@ip-10-0-0-149 ~]$ ping -c 5 -i 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=105 time=34.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=105 time=34.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=105 time=34.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=105 time=34.5 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=105 time=34.5 ms
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 34.494/34.610/34.947/0.169 ms
마무리
쓸데없지만 누군가에게 유용한 정보였으면 좋겠습니다.
오늘의 글은 여기까지입니다. 감사합니다!
'AWS' 카테고리의 다른 글
[AWS] DataSync로 S3 버킷을 다른 계정으로 마이그레이션하기 (4) | 2024.12.28 |
---|---|
[AWS] ArgoCD Image Updater로 이미지 자동 배포 (with ECR) (4) | 2024.02.28 |
[AWS] AWS Load Balancer Controller로 HTTPS가 적용된 ALB 생성하기 (0) | 2024.02.21 |
[AWS] Managed Service for Apache Flink로 스트리밍 데이터 분석 - Studio notebooks (2) (2) | 2024.02.16 |
[AWS] Terraform으로 EC2 Instance 생성하기 (0) | 2024.01.19 |