Cloud/AWS
AWS) Private Subnet 에서 NAT Gateway로 EC2 instance 관리 해보기 (+ Bastion Server)
Adım Kim
2022. 9. 14. 14:14
실습 환경 : AWS Console (2022/9), Visual Studio Code
실습 목적 : NAT 게이트웨이와 Bastion server 활용하여 네트워크를 구성해본다.
Private Subnet 상에서 EC2 instance를 생성할 경우?
- Private Subnet에 위치한 AWS resource (EC2, RDS 등)은 직접적인 인터넷 접속이 불가능 하다.
- Private Subnet에 위치한 AWS resource는 외부로부터 직접 접근을 허용하지 않기 위해 구성한다.
Private Subnet 상에서 EC2 instance를 관리하는 방법?
- Private subnet에 위치한 AWS resource가 인터넷에 접속하여 사용하기 위해서는 NAT 게이트웨이 서비스를 사용한다.
NAT 게이트웨이 서비스란?
- private subnet이 인터넷과 연결을 수행할수 있게 해주는 서비스다.
- 통상적으로, private subnet에 위치한 AWS 리소스가 인터넷에 연결하여 사용할 때 활용하는 서비스이다.
- 인터넷과 단방향 통신만 수행하기 때문에 일반 client가 private subnet에 있는 AWS 리소스 접근은 불가능하다.
- NAT 게이트웨이 서비스 인스턴스는 public subnet에 위치해야 private subet에 접속할 수 있다.
- NAT 게이트웨이 서비스는 EIP (Elastic IP)를 사용한다.
Bastion Server 란?
- private subnet에 위치한 EC2 instance를 제어하는 목적으로 사용하는 EC2 instance
- public subnet에 위치한 bastion server를 통해 private subnet에 위치한 EC2 instance를 제어한다.
Private EC2 Instance 생성


EC2 메뉴 -> 인스턴스에서 인스턴스 시작 클릭 -> 이름 및 태그, 키페어, 네트워크 설정
[ 네트워크 설정 ]
- VPC
- 서브넷: private subnet 선택
- 퍼블릭 IP 자동 할당: 비활성화 선택
- 방화벽: 기존 보안 그룹 선택 -> ssh (22번포트)
Bastion Server 생성


EC2 메뉴 -> 인스턴스에서 인스턴스 시작 클릭 -> 이름 및 태그, 키페어, 네트워크 설정
[ 네트워크 설정 ]
- VPC
- 서브넷: public subnet 선택
- 퍼블릭 IP 자동 할당: 활성화 선택
- 방화벽: 기존 보안 그룹 선택 -> ssh (22번포트) ,web (80, 443번 포트)
EIP 생성

EC2 메뉴 -> 탄력적 IP에서 탄력적 IP 주소 할당 클릭 -> 태그 설정 -> 할당
NAT 게이트웨이 생성

VPC 메뉴 -> NAT 게이트웨이에서 NAT 게이트웨이 생성 클릭
[ NAT게이트웨이 생성 ]
- 이름
- 서브넷: public subnet 선택
- 연결 유형: 퍼블릭
- 탄력적 IP 할당 ID: 위에서 만든 EIP 선택
- 태그: Name 태그
- NAT 게이트웨이 생성
라우팅 테이블 생성 및 편집

VPC 메뉴 -> 라우팅 테이블에서 라우팅 테이블 생성 클릭
[ 라우팅 테이블 생성 ]
- 이름
- VPC
- 태그: Name 태그
- 라우팅 테이블 생성

라우팅 테이블에서 생성한 라우팅 테이블 선택 -> 라우팅 -> 라우팅 편집
[ 라우팅 편집 ]
- 라우팅 추가를 클릭하면 새로운 라우팅 편집 입력 창이 생성된다.
- 첫번째 대상: 0.0.0.0/0
- 두번째 대상: NAT 게이트웨이 -> 새로 생성한 NAT게이트웨이 선택
- 변경 사항 저장
Bastion Server를 통해 Private Subnet에 접속

visual studio code에서 bastion server에 연결 -> bastion server 홈 디렉토리에 키 파일을 드래그 앤 드롭으로 가져오기

key 파일 권한 변경 -> ssh 명령어로 private ec2 instance에 원격 접속
[ key 파일 권한 변경 ]
- chmod 400 [키 파일 이름]
[ ssh 명령어 ]
- ssh -i [키 파일 이름] [유저]@[private IP]
추가로 Bastion Server 생성시 보안그룹 규칙에서 내 IP 한정으로 지정하여 관리할 수 있다.