AWS 복습2
ALB → 프라이빗 EC2 간 패킷 포워딩 경로 (“Local” 라우팅)
퍼블릭 서브넷의 ALB가 프라이빗 서브넷 EC2로 요청을 전달할 때, NAT Gateway나 IGW를 거치지 않고 VPC 내부의 로컬 라우팅(10.0.0.0/16 → local
)을 사용합니다.
- 클라이언트 요청이 ALB 노드(퍼블릭 IP)로 도착
- ALB가 리버스 프록시처럼 퍼블릭 요청을 종료(terminate)
- ALB가 새로운 커넥션을 프라이빗 EC2의 사설 IP로 생성
- 해당 패킷은 라우트 테이블의
10.0.0.0/16 → local
규칙에 따라 바로 전달
이 덕분에 프라이빗 인스턴스는 외부 노출 없이도 ALB를 통해 인바운드를 처리할 수 있으며, 퍼블릭 경로와 분리된 안전한 통신이 보장됩니다.
Bastion Host 접속과 ProxyJump/ProxyCommand 설정
프라이빗 서브넷 EC2에 SSH로 접속할 때는 Bastion Host(점프 서버)를 경유하도록 설정하는데, SSH 설정 파일(~/.ssh/config
)에 다음과 같이 작성하면 편리합니다.
ProxyJump 예시 (SSH 7.3 이상 권장)
Host bastion
HostName <퍼블릭-IP 또는 DNS>
User ec2-user
IdentityFile ~/.ssh/bastion-key.pem
Host private-web
HostName 10.0.x.y
User ec2-user
IdentityFile ~/.ssh/private-key.pem
ProxyJump bastion
ssh private-web
한 번으로 Bastion → 프라이빗 EC2 자동 연결
ProxyCommand 예시 (SSH 버전 관계없이)
Host private-web
HostName 10.0.x.y
User ec2-user
IdentityFile ~/.ssh/private-key.pem
ProxyCommand ssh -W %h:%p bastion
-W %h:%p
옵션이 Bastion에서 최종 호스트(%h)와 포트(%p)로 터널링bastion
블록을 참고해 키·유저 정보를 자동 로드
서브넷별 라우트 테이블 구성 이유 (퍼블릭 vs 프라이빗)
퍼블릭 서브넷
- 라우팅:
0.0.0.0/0 → IGW
- 목적: 인터넷-Facing ALB, Bastion, NAT Gateway와 같은 퍼블릭 리소스에 외부 트래픽 허용
프라이빗 서브넷
- 라우팅:
0.0.0.0/0 → NAT Gateway
- 로컬:
10.0.0.0/16 → local
(ALB 포워딩, VPC 내부 통신) -
목적:
- 프라이빗 EC2가 퍼블릭 IP 없이 아웃바운드 인터넷 통신
- 인바운드는 오직 ALB(VPC 로컬 경로)나 Bastion을 통해서만 허용
서브넷을 명확히 구분해 라우트 테이블을 분리함으로써, 각 계층의 역할과 보안 경계를 확실히 유지할 수 있습니다.
AZ별 NAT Gateway 분리의 고가용성·비용 최적화 목적
-
AZ 장애 격리
- 각 AZ에 별도 NAT Gateway를 배치
- 특정 AZ NAT GW 장애 시에도 다른 AZ의 프라이빗 서브넷은 정상 아웃바운드 유지
-
크로스 AZ 데이터 전송 비용 절감
- 프라이빗 EC2는 동일 AZ NAT GW를 경유
- 타 AZ NAT GW 사용 시 발생하는 데이터 전송 요금 방지
-
단일 실패 지점 제거
- 하나의 NAT GW에 전체 VPC가 의존하지 않아, 가용성 및 복원력 강화
댓글남기기