01. AWS의 인터넷 연결
1.1 AWS의 인터넷 연결 소개
AWS VPC 내부에서 외부 인터넷으로 연결하는 방법이다.
1.1.1 인터넷 연결을 위한 4가지 조건
- 인터넷 게이트웨이
- 네트워크 라우팅 테이블 정보 (외부와 네트워크 통신을 위한)
- 공인 IP
- AWS에서 사용 가능한 공인 IP는 퍼블릭 IP와 탄력적 IP가 있다.
- 보안 그룹과 네트워크 ACL
1.1.2 NAT 동작
- 보통 가정집 내부의 단발(pc, 폰)은 프라이빗 IP를 가지고 있다.
- 내부 단말들이 외부 인터넷 사용 시 IP 공유기의 NAT를 통한다.
- 내부 단말이 외부 웹서버에 연결 시 출발지 IP는 자신의 프라이빗 IP로 지정되어 IP 공유기로 향한다.
- IP 공유기는 출발지 IP(프라이빗 IP)를 자신에게 할당된 퍼블릭 IP로 변환하여 웹서버로 연결한다.
- IP를 변환하는 것을 NAT, 포트 번호까지 변환하는 것은 PAT(Port Address Translation)이라 한다.
1.1.3 인터넷 연결을 위한 3가지 방안 비교
특징 |
인터넷 게이트웨이 |
NAT 디바이스 |
Proxy 인스턴스 |
동작 |
Layer3 |
Layer4 |
Layer7 |
주소 변환 |
프라이빗 IP를 퍼블릭 혹은 탄력적 IP로 1:1 변환 |
IP 주소와 포트 번호 변환 |
IP 주소와 포트 번호 변환(TCP 신규 연결) |
특징 |
1개 프라이빗 IP마다 1개 공인 IP 매칭 |
여러 프라이빗 IP가 1개의 공인 IP 사용 가능 |
애플리케이션 수준 제어 가능 |
1.2 인터넷 게이트웨이
1.2.1 인터넷 게이트웨이 (Internet Gateway) 소개
인터넷 게이트웨이는 VPC와 인터넷 간에 통신할 수 있게 해주는 VPC 구성 요소다.
- 확장성과 가용성이 있다.
- 퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 1:1 IPv4 주소 변환을 수행한다.
1.2.2 인터넷 게이트웨이를 통한 외부 접속
인터넷 게이트웨이는 퍼블릭 혹은 탄력적 IP에 대해 1:1 NAT를 수행한다.
- 내부 인스턴스(
10.0.0.10
)에서 외부 웹서버(60.1.1.1
)로 HTTP 접속을 시도
- 출발지 IP를
10.0.0.10
으로 하여 트래픽을 생성
- 인터넷 게이트웨이는 출발지 IP를 확인하고 자신의 NAT 정보에 의해 출발지 IP를
50.1.1.1
로 변경
- NAT 정보 예시
원본 IP |
(NAT) 변경 IP |
10.0.0.10 |
50.1.1.1 |
- 외부 웹서버에서 요청을 처리하고 응답 트래픽을 보낸다. (
50.1.1.1
로)
- 인터넷 게이트웨이는 NAT 정보를 보고
50.1.1.1
을 10.0.0.10
로 변경한 뒤 VPC 내부로 전달한다.
1.2.3 인터넷 게이트웨이 제약 사항
- 하나의 VPC에는 한 개의 게이트웨이만 사용할 수 있다.
- 리전 당 VPC의 기본 할당량은 5개이다.
- 게이트웨이 개수도 동일
- 그 이상 필요 시 AWS 케이스 오픈을 통해 요청하여 리전 당 최대 100개까지 증가할 수 있다.
1.3 NAT 디바이스 (NAT 인스턴스 & NAT 게이트웨이)
1.3.1 NAT 디바이스 소개
- NAT 인스턴스와 NAT 게이트웨이를 통칭하여 NAT 디바이스라고 말한다.
- 프라이빗 서브넷에 배치된 인스턴스가 외부 인터넷 또는 AWS 퍼블릭 서비스 등에 연결 가능하게 사용할 수 있다.
1.3.2 NAT 게이트웨이와 NAT 인스턴스의 비교
- 소규모 트래픽이 발생하고 서비스 중요도가 낮은 경우 저렴한 NAT 인스턴스 구성을 권장한다.
- 그 이외에는 높은 가용성과 대역폭을 제공하며 관리 작업은 간소화된 NAT 게이트웨이를 권장한다.
속성 |
NAT 게이트웨이 |
NAT 인스턴스 |
유지 관리 |
AWS에서 관리 |
사용자가 직접 관리 |
가용성 |
가용 영역에 각기 NAT 게이트웨이를 만들어 고가용성 제공 |
직접 스크립트를 작성하여 인스턴스 간 장애 조치 관리 |
네트워크 대역폭 |
최대 45Gbps까지 확장 가능 |
인스턴스 유형 대역폭에 따라 다름 |
비용 |
사용하는 게이트웨이 수, 사용 기간, 데이터 양에 따라 요금이 청구됨 |
인스턴스 수, 사용 기간, 인스턴스 유형에 따라 요금 청구됨 |
유형 및 크기 |
균일하게 제공됨 |
예상 워크로드에 따라 적절한 유형과 크기를 선택해야 함 |
퍼블릭 IP 주소 |
생성 시 NAT 게이트웨이와 연결한 탄력적 IP 주소를 선택한다. (변경 불가) |
탄력적 IP 또는 퍼블릭 IP를 사용하고 언제든 탄력적 IP는 변경할 수 있다. |
프라이빗 IP 주소 |
서브넷의 IP 주소 범위 내에 자동으로 선택됨 |
서브넷의 IP 주소 범위 내에 특정 프라이빗 IP 주소를 할당 |
보안 그룹 |
보안 그룹을 연결할 수 없음 |
보안 그룹을 연결할 수 있음 |
플로우 로그 |
플로우 로그로 트래픽을 캡쳐 |
플로우 로그를 사용하여 트래픽을 캡쳐 |
접속 서버 |
NAT 게이트웨이로 접속(ssh)을 지원하지 않음 |
NAT 인스턴스로 접속하여 SSH 접속 서버로 사용 가능 |
1.3.3 NAT 인스턴스를 통한 외부 접속
NAT 게이트웨이와 NAT 인스턴스 외부 접속 동작은 유사하다.
NAT 인스턴스는 IP masquerading 기능을 통해 내부 인스턴스 IP와 포트를 NAT 인스턴스의 IP와 포트로 변환한다.
- 프라이빗 서브넷에 연결된 내부 인스턴스에서 외부 인터넷에 접속을 시도
- ‘프라이빗 서브넷 라우팅 테이블’에 따라 NAT 인스턴스로 트래픽을 보내게 된다.
- NAT 인스턴스는 IP masquerading 기능을 통해 출발지 IP와 포트 번호를 NAT 인스턴스의 IP와 포트로 변환하고 정보를 기록한다.
- 이후 ‘퍼블릭 서브넷 라우팅 테이블’에 따라 인터넷 게이트웨이로 트래픽을 보내게 된다.
- 인터넷 게이트웨이는 NAT 인스턴스의 프라이빗 IP를 미리 매핑된 탄력적 IP로 1:1 NAT하여 외부 인터넷으로 전송한다.
- 외부 웹서버에서 요청을 처리하고 응답 트래픽을 보낸다.
- 결과적으로 IP 변환이 두 번 이루어지게 된다.
- 다수의 인스턴스가 외부 인터넷 접속 시 NAT 인스턴스에 연결된 1개의 탄력적 IP를 공유하여 사용한다.
- 때문에 포트 번호 정보를 기준으로 내부 인스턴스 트래픽을 구분할 수 있다. (PAT)
1.3.4 NAT 게이트웨이 제약 사항
- 5Gbps 대역폭을 지원하며 최대 454Gbps까지 자동 확장한다.
- 단일 대상(ex 외부 웹서버 1대 IP)에 대해 분당 최대 55,000개 동시 연결을 지원한다.
- 가용 영역 당 기본 할당량은 5개이며 AWS 케이스 오픈을 통해 증가 요청이 가능하다.
1.4 Proxy 인스턴스
1.4.1 Proxy 인스턴스 소개
- Proxy는 일종의 대리자로 클라이언트와 서버 간의 통신을 대신 처리해주는 역할을 한다.
- 클라이언트의 통신을 대신 처리하기에 서버 입장에선 마치 Proxy와 통신을 하는 것처럼 보인다.
1.4.2 Proxy 인스턴스를 통한 외부 접속
- 프라이빗 서브넷 인스턴스는 HTTP 통신을 위해 목적지 IP가 Proxy 인스턴스로 향하게 된다.
- Proxy 인스턴스는 대신 외부 구간과 통신을 하고 결과를 내부 인스턴스로 보낸다.
- Proxy 인스턴스가 외부 웹서버와 통신할 때 새로운 TCP 연결을 만든다.