[Practice] VPC, Public/Private 서브넷, NAT (2)

2020. 9. 10. 17:52AWS/Practice

1. 목적

이전 글과 다르게 NAT 게이트웨이를 이용하여 구성한다. 대표적인 Web과 DB를 기준으로 진행한다. 해당 글에서는 Web 서버의 역할을 해줄 Public 서브넷의 인스턴스와 DB 서버의 역할을 해줄 Private 서브넷의 인스턴스를 구성하여 각각의 인스턴스에서 인터넷과 통신이 되는지, 서로 통신이 되는지에 목적을 두고 작성되어있다.

목적

 

 

 

2. VPC

1) 탄력적 IP 할당

탄력적 IP 할당

2) VPC 생성

VPC 마법사를 이용하여 한번에 Public, Private 서브넷을 생성함과 동시에 할당받은 탄력적 IP 주소를 NAT 게이트웨이에 연결하여 간편하게 생성한다.

VPC 생성

※ NAT 게이트웨이는 과금의 원인이 되니, 사용하지 않을 경우 삭제해야한다.

3) 라우팅 테이블

VPC 마법사로 생성할 경우 라우팅 테이블도 각 서브넷에 맞게 생성이 된다. 이 후, 서브넷 연결 및 라우팅 설정을 확인하고 잘못되어있다면 업데이트를 해준다.

라우팅 테이블

 

 

 

3. Public / Private 서브넷 인스턴스

1) Public 서브넷 인스턴스 생성

Public 서브넷 인스턴스 생성

2) Private 서브넷 인스턴스 생성

Public 서브넷 인스턴스 생성과 달리, Private 서브넷 인스턴스 생성 시 Public IP 주소를 할당해서는 안된다.

Private 서브넷 인스턴스 생성

3) 보안 그룹 설정

생성한 두 개의 인스턴스의 양방 통신과, 인터넷과의 통신을 목적으로 보안 그룹을 설정한다. 이 후 각 인스턴스의 역할에 따라 필요한 보안 그룹을 설정해주면 된다. (Web은 HTTP/HTTPS, DB는 MySQL, ... 등)

 

 

4. 접속

SSH 에이전트를 이용하여 키를 Bastion 호스트 서버에 전달하고, 전달받은 키를 통해 Bastion 호스트에서 Private 서브넷의 인스턴스에 접근한다. 

// 권한 수정
chmod 400 [키 파일(.pem)]
// SSH 키 추가
ssh-add [키 파일(.pem)]

// SSH 키 전달
ssh -A ec2-user@[배스천 호스트 혹은 NAT 인스턴스 Public 주소]

// 배스천 호스트 혹은 NAT 인스턴스에서 Private 서브넷 인스턴스 접속
ssh ec2-user@[Private 서브넷 인스턴스 Private 주소]
// SSH 키 확인
ssh-add -l

// 모든 SSH 키 삭제
ssh-add -D

접속

 

 

 

5. 참고 사항

1) 사용 제어

기본적으로 IAM 사용자에게는 NAT 게이트웨이를 사용할 권한이 없다. 하지만 사용자에게 NAT 게이트웨이를 생성 및 삭제할 수 있는 권한을 부여하는 IAM 사용자 정책을 만들 수 있다.

2) 가용 영역

여러 가용 영역에 리소스가 있고 NAT 게이트웨이 하나를 공유하는 경우, NAT 게이트웨이의 가용 영역이 다운됨녀 다른 가용 영역의 리소스도 인터넷에 액세스할 수 없게 된다. 따라서 가용 영역과 독립적인 아키텍처를 만들기 위해서는 각 가용 영역에 NAT 게이트웨이를 만들고 리소스가 동일한 가용 영역의 NAT 게이트웨이를 사용하도록 라우팅을 구성해야한다.

3) 규칙 및 제한

NAT 게이트웨이는 5Gbps의 대역폭을 지원하며 최대 45Gbps까지 자동 확장한다. 그 이상이 필요할 경우 리소스를 여러 서브넷으로 분할하고 각 서브넷에 NAT 게이트웨이를 만들어 분산해야한다.
하나의 탄력적 IP만 연결할 수 있으며, 연결 후에는 NAT 게이트웨이에서 연결을 끊을 수 없다.
TCP, UDP, ICMP 등의 프로토콜을 지원한다.
보안 그룹을 NAT 게이트웨이와 연결 할 수 없다. Private 서브넷의 인스턴스에 댛나 보안 그룹을 사용하여 해당 인스턴스에서 주고받는 트래픽을 제어해야한다.
네트워크 ACL을 사용하여 NAT 게이트웨이가 위치하고 있는 서브넷에서 주고받는 트래픽을 제어할 수 있다. 네트워크 ACL은 NAT 게이트웨이의 트래픽에 적용된다. NAT 게이트웨이는 포트 1024 - 65535를 사용한다.
NAT 게이트웨이가 생성되면 서브넷의 IP 주소 범위에 속하는 Private IP 주소가 자동으로 할당된 네트워크 인터페이스를 받는다.
VPC와 연결된 ClassicLink 연결을 통해서는 NAT 게이트웨이에 액세스할 수 없다.
VPC Peering, Site-to-Site VPN 연결 또는 AWS Direct Connect를 통해 NAT 게이트웨이로 트래픽을 라우팅할 수 없다. 즉, 다른 쪽의 리소스는 NAT 게이트웨이를 사용할 수 없다.

[참고] docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-nat-gateway.html

[참고] medium.com/@labcloud/nat-gateway-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0-917409b49ace

[참고] galid1.tistory.com/367

728x90

'AWS > Practice' 카테고리의 다른 글

[Practice] ElastiCache  (0) 2020.10.15
[Practice] VPC, Public/Private 서브넷, NAT (1)  (0) 2020.09.10
[Practice] Practitioner Lightsail  (0) 2020.09.06
[Practice] Practitioner IAM  (0) 2020.09.05