1개의 Available Zone에
Public Subent 1개, Private Subnet 1개를 구성해보자.
총 2개의 subnet 을 같은 Region, 같은 Available Zone 에 생성하자.
Public vs Private Subnet 의 결정 여부는 'Internet Gateway' 라우팅 여부다.
Public Subnet 에 Internet Gateway 를 연결한다.
Public Subnet 에 연결된 NAT Gateway를 생성한다.
NAT Gateway 는 인터넷에 연결되어야 하며, Elastic IP 가 필요하므로
Private 이 아닌 Public Subnet 에 위치해야한다.
탄력적 IP 주소를 생성하고 Public Subnet 에 생성한 EC2 Instance 에 할당한다.
탄력적 IP를 할당받은 퍼블릭 인스턴스에 핑 응답이 오는지 테스트
Private Subnet 이 정상적으로 NAT Gateway 를 타고 외부로 인터넷 접속이 가능한지 테스트하기 위해 필요하다
Private subnet 을 선택 - 플로우 로그 생성
CloudWatch Logs 로그그룹 생성
로컬 컴퓨터에서 SSH 를 통해 Public Subnet 에 존재하는 EC2 Instance 에 접속하고,
public instance 에서 private instance 로 SSH 로 접속하게한다.
이 과정에서 public instance 를 bastion host 라고 칭하기도 한다.
물론 Security Group 에서 동일 VPC 의 SSH 연결을 허용하는 정책이 설정되어있어야한다.
(Public instance -> Private instance 연결 허용)
$ ssh -i [key파일명] ec2-user@[public-instnace-IP주소]
# 현재 Public subnet 에 존재하는 인스턴스에 연결된 상태다.
[ec2-user@ip-Public-Instance주소]$ ssh -i [key파일명] ec2-user@[private-instance-IP주소]
⚠️ ssh 연결시 아래와 같은 에러 메시지가 발생한다면
키파일의 권한 설정이 잘못된 것이다.
Permissions 0777 for [키파일] are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "./AWS-ImmersionDay-Lab.pem": bad permissions
다음과 같이 권한 설정하면 오류가 해결된다.
$ chmod 400 [키파일]
ICMP Ping 을 사용하여 외부 인터넷으로부터 응답을 받는지 테스트해볼 것이다.
$ ping ietf.org
Private subnet 의 인스턴스에서 외부 ietf.org
에 Ping test 완료!