[실습]“Private” EC2 외부 접근 허용 : OUTBOUND를 위한 NAT INSTANCE 설정

이승주·2024년 3월 12일
0

AWS

목록 보기
6/6

📌 NAT Instance 역할을 할 EC2 (Public Subnet) 인스턴스 만들기

AMI

AMI는 AMI 커뮤니티에서 **amazon/amzn-ami-vpc-nat-2018.03.0.20230807.0-x86_64-ebs 을 검색해서 넣어준다.**

AWS 공식 NAT 인스턴스 AMI (Pre-configured Amazon Linux AMI) 는 이제 미지원하기 때문이다.

키페어

키는 이전에 Bastion과 Private_Instance를 연결할 때 사용했던 Public key를 넣어준다.

SUBNET 및 SG 설정

subnet은 Bastion에 할당되어있는 Public Subnet을 할당해준다.

보안 그룹 같은 경우nat-instance-sg 라는 이름으로 구분하기 쉽게 만들고 아래와같이 설정했다.

  • SSH, Source Type : Anywhere, Source : 0.0.0.0/0 (모든 트래픽)
  • HTTP, Source Type : Custom, Source : 172.16.0.0/16 (로컬)
  • HTTPS, Source Type : Custom, Source : 172.16.0.0/16 (로컬)
  • 참고로 Private Instance는 172.16.3.25의 Private Ip를 갖고 있다.

위와 같이 설정한 이유는 Private instance로부터 SSH, HTTP, HTTPS요청을 받을 것이기 때문이다.

Network 설정에서 Source/Destination Check 옵션에서 STOP 체크 필요 필요

NAT INSTANCE를 만들어줬다면 Source/Destination Check 옵션에서 STOP 체크 필요 필요하다.

이유는 NAT (Network Address Translation) 의 정의에 따라 Src/Dst 는 수행하면 안되기 때문이다.


📌 Private 서브넷의 Route Table0.0.0.0/0 트래픽에 대해 NAT Instance 로 가게 설정

Private 서브넷의 Route Table 생성 및 설정

Private Instance에서 외부로 요청하는 모든0.0.0.0/0 트래픽은 Nat Instance로 보내려고한다.

Private Instance가 있는 private Subnet에 다음과 같이 Route Table을 설정해준다.

  • Route Table 설정 시 NAT Instance EC2 인스턴스 명을 넣으면 자동으로 ENI 설정으로 변경

이제 Private Subnet에 설정해주면 Private Instance에서 발생하는 모든 트래픽은 다 Nat Instance로 가게된다.

주의) 만든 Route Table을 Private Instance가 있는 Private Subnet에 적용하는 것을 잊지 말자

Bastion (혹은 AWS Console 의 Session Manager) 을 통해 Private EC2 에 접속한 뒤 외부요청해보기

  • ping goole.com 명령어를 치면 외부로 요청이 정상적으로 이뤄지는지 확인할 것 → 실패
  • 실패 : 왜 그럴까? 아래 에서 NAT Instance 의 SG 의 인바운드에 ICMP 오픈 필요

📌 NAT Instance EC2SG인바운드 규칙모든 ICMP 요청에 대해 풀어주기

NAT Instance EC2SG 내 다음 인바운드 규칙을 추가해줘야한다.

  • All ICMP - IPv4, Source Type : Custom, Source : 172.16.0.0/16 (로컬)
  • 참고로 Private Instance는 172.16.3.25의 Private Ip를 갖고 있다.

추가해주는 이유는 NAT에 INBOUND는 Private_Instance에서 오는 요청이기 때문이다.

profile
반복되는 실수를 기록을 통해 줄여가보자!

0개의 댓글

관련 채용 정보