Private Subnet에서 외부 네트워크와 연결하기
보통 WAS 나 DB 등 보안이 중요한 서버들은 외부에서 접근할 수 없도록 합니다.
그래서 VPC 인프라를 구축할때 Public Subnet과 Private 서브넷을 만들어 그 안에 EC2 인스턴스를 두고,
Bastion Host를 통해 Public 서브넷에서 Private Subnet으로 접속한 후, NAT gateway를 통해 인터넷 소스를 받습니다.
그래서 구성하게 되는게 AWS NAT Gateway입니다. 하지만 NAT 게이트웨이는 서울 리전 기준으로 시간 당
0.059 USD 이므로... 요금이 조금 비쌉니다.
그래서 차선책으로 EC2 인스턴스를 NAT 처리용으로 설정해 사용하는 NAT Instance를 만들어 사용할 수 있습니다.
가용성과 성능을 포기하고 (실제 운영서비스는 gateway사용하세요..) 비용을 절감할 수 있다는 장점이 있다.
- 프리티어 요금제가 있으면 무료!
그 이상 NAT Gateway와 NAT Instance의 차이는 잘설명된 블로그 포스트들이 많으므로 패스!
NAT 인스턴스 구축하기
우선 VPC 안에 Public Subnet과 Private Subnet에 대한 구성이 되어있다고 믿고 해당 부분에 대한 설명은
생략하겠습니다.
1. EC2 생성 - NAT 인스턴스 만들기
EC2 시작하기에서 더 많은 AMI 찾아보기 클릭
2. 커뮤니티 AMI -> `NAT` 검색해서 nat 용 ami 선택하기
3. 네트워크 설정
서브넷은 public subnet(인터넷 게이트웨이 연결된 서브넷)으로 설정하고 퍼블릭 IP 할당을 활성화해줍니다.
4. 보안그룹 설정
Inbound에 모든 트래픽( 또는 원하는 프로토콜)과 소스로는 인터넷을 연결할 자원들의 보안그룹 또는 모든요청 (비추천) 으로
설정해줍니다. 필자는 api 서버가 사용하는 보안그룹을 설정해주었습니다.
해당 보안그룹을 설정해주므로써 api 서버들이 nat instance 를 통해서 internet 에 요청을 보낼 수 있습니다.
(반대로 인터넷에서 api서버로 들어오는 것은 안됩니다! 22번 포트 제외)
5. 인스턴스 소스/대상 확인변경 중지 체크
NAT 인스턴스의 소스/대상 확인변경에서 `중지` 로 변경합니다.
NAT 인스턴스는 소스 또는 대상이 그 자체가 아닐 때 트래픽을 송수신 할 수 있어야합니다.
6. 탄력적 IP 할당
탄력적 IP 주소를 할당해줘 고정 IP로 변경해줍니다.
5.Private Subnet 라우팅 테이블 설정
인터넷 트래픽이 NAT Instance를 통해 들어올 수 있도록 라우팅 테이블에 추가를 해야합니다.
VPC -> 라우팅 테이블 -> Private Subnet 라우팅 테이블 클릭 -> 라우팅 편집으로 들어가
0.0.0.0/0 의 대상으로 NAT Instance를 설정해줍니다.
NAT Instance 설정은 끝났습니다.
이제 NAT Instance를 통해 인터넷에 접근할 자원에서 실제로 인터넷에 접근이 되는지 테스트가 필요합니다.
필자는 API 서버가 될 Ec2를 연결하였으니 해당 인스턴스에 접속해서 ping www.google.com 으로 테스트를 하였습니다.
참고
https://songsiaix.tistory.com/95
'프로그래밍 > ETC' 카테고리의 다른 글
[Elasticache] Serverless Cluster - Redisson Connection 문제 (0) | 2024.01.31 |
---|---|
[ElasticCache] Redis Cluster command execute 에러 (0) | 2024.01.22 |
[CodeDeploy] 배포 중 나타나는 에러들 해결 (0) | 2024.01.21 |
[기술면접] TCP/UDP 의 차이 (0) | 2024.01.11 |
Mac M1 에서 Jmeter 설치하고 테스트하기 (4) | 2024.01.10 |