AWS Private EC2 인터넷 연결방법
- links
- No value
- status
- ai response
- project
- false
- area
- false
- resource
- true
- aliases
- Private EC2 인터넷 연결과 NAT Gateway AWS Private EC2 Internet Access
- tags
- aws ec2 vpc networking tailscale
- description
- Private EC2에서 SSM은 되는데 인터넷이 안 되는 이유와 NAT Gateway의 역할 정리
- created
- 2026-07-09T13:25:42
- title
- AWS Private EC2 인터넷 연결방법
- updated
- 2026-07-09T13:54:15
Private EC2에서 SSM은 되는데 인터넷은 안 되는 이유
TL;DR
AWS에서 EC2가 인터넷을 사용하기 위해서는 인터넷으로 나가는(Egress) 경로가 반드시 필요하다.
SSM(Session Manager)은 AWS 서비스이므로 VPC Endpoint만 있으면 동작하지만, Tailscale·GitHub·YUM Repository 같은 일반 인터넷 서비스는 NAT Gateway 또는 Public IP가 필요하다.
인터넷 연결 방식
EC2가 인터넷과 통신하는 방법은 크게 두 가지이다.
flowchart LR subgraph Public A[EC2
Public IP] end subgraph Private B[EC2
Private IP] NAT[NAT Gateway] end IGW[Internet Gateway] Internet[(Internet)] A --> IGW B --> NAT NAT --> IGW IGW --> Internet
경우 1. Public IP가 있는 EC2
가장 단순한 구조이다.
Internet
│
Internet Gateway
│
Public Subnet
│
EC2 (Public IP)
조건
- Public IP 존재
- Route Table
0.0.0.0/0 -> Internet Gateway
장점
- 별도 NAT 필요 없음
- 설정이 단순
단점
- 인터넷에 직접 노출
- 운영 환경에서는 일반적으로 권장되지 않음
경우 2. Private EC2 + NAT Gateway
운영 환경에서 가장 많이 사용하는 구조이다.
Internet
│
Internet Gateway
│
Public Subnet
│
NAT Gateway
│
Private Subnet
│
EC2 (Private IP)
조건
- Public IP 없음
- NAT Gateway 존재
- Route Table
0.0.0.0/0 -> NAT Gateway
장점
- EC2는 외부에서 접근 불가
- 인터넷으로만 나갈 수 있음
- AWS 권장 구조
단점
- NAT Gateway 비용 발생
경우 3. Private EC2 + NAT 없음
이번 PoC에서 처음 마주친 상황이다.
Internet
│
Internet Gateway
│
Public Subnet
Private Subnet
│
EC2 (Private IP)
결과
- 인터넷 연결 불가
예를 들어
curl https://tailscale.com
curl: (28) Failed to connect to tailscale.com port 443
와 같이 Timeout이 발생한다.
그런데 왜 Session Manager는 접속되는가?
이번 PoC에서 가장 헷갈렸던 부분.
SSM은 일반 인터넷을 사용하는 것이 아니라 AWS 내부 서비스를 사용한다.
구성은 다음과 같다.
flowchart LR EC2 --> VPCE1[ssm Endpoint] EC2 --> VPCE2[ssmmessages Endpoint] EC2 --> VPCE3[ec2messages Endpoint] VPCE1 --> AWS VPCE2 --> AWS VPCE3 --> AWS
필요한 Interface Endpoint
- com.amazonaws.ap-northeast-2.ssm
- com.amazonaws.ap-northeast-2.ssmmessages
- com.amazonaws.ap-northeast-2.ec2messages
따라서
Private EC2
│
VPC Endpoint
│
AWS Systems Manager
구조가 가능하다.
즉
인터넷 없이도 Session Manager는 동작한다.
왜 Tailscale은 안 되는가?
Tailscale은 AWS 서비스가 아니다.
설치 시
curl https://tailscale.com/install.sh
를 실행하면
EC2
│
HTTPS 443
▼
tailscale.com
으로 접속해야 한다.
또한 설치 이후에도
등과 지속적으로 HTTPS 통신한다.
즉
인터넷(Egress)이 반드시 필요하다.
이번 PoC에서 실제 원인
초기 구성
Private EC2
Public IP ❌
NAT Gateway ❌
VPC Endpoint(SSM) ⭕
가능
- Session Manager
불가능
- curl
- yum
- dnf
- GitHub
- Tailscale
해결 방법
방법 1. NAT Gateway 추가
Private EC2
│
NAT Gateway
│
Internet
장점
- 운영 권장 구조
- Public IP 불필요
방법 2. Public IP 부여
Private Subnet
│
EC2 + Public IP
Internet Gateway가 연결된 Subnet이라면 인터넷 사용 가능.
PoC에서는 가장 간단한 해결책이다.
같은 Subnet인데 왜 어떤 EC2는 인터넷이 되었는가?
이번 환경에서는
| Instance | Public IP |
|---|---|
| racketime-api-dev2-ecs | ✅ |
| curinginnos-iris-poc-subnet-router | ❌ |
둘 다 같은 Subnet이었다.
하지만
racketime-api-dev2-ecs
는
Public IPv4
가 존재했기 때문에 Internet Gateway를 통해 인터넷이 가능했다.
반면
curinginnos-iris-poc-subnet-router
는 Public IP가 없어서
0.0.0.0/0 -> Internet Gateway
Route가 있어도 인터넷을 사용할 수 없었다.
즉
Internet Gateway는 Public IP가 있는 ENI만 인터넷 통신을 허용한다.
Session Manager 구축 시 체크리스트
IAM
- AmazonSSMManagedInstanceCore
Instance Metadata
- Enabled
- IMDSv2 Required
- Hop Limit ≥ 2
Interface Endpoint
생성
- ssm
- ssmmessages
- ec2messages
확인
- Private DNS Enabled
- Private Subnet 연결
- Security Group
- Inbound TCP 443
EC2 재부팅
IAM Role 또는 Endpoint를 생성 이후 붙였다면
Reboot Instance
를 한 번 수행하는 것이 좋다.
이번 PoC에서도 재부팅 후 SSM Agent가 정상 등록되었다.
운영 권장 구조
flowchart TB Internet((Internet)) subgraph PublicSubnet IGW[Internet Gateway] NAT[NAT Gateway] end subgraph PrivateSubnet Router[Subnet Router EC2] API[racketime-api] end Router --> NAT API --> NAT NAT --> IGW IGW --> Internet
특징
- EC2는 모두 Private IP만 사용
- SSH는 Session Manager
- 외부 인터넷은 NAT Gateway를 통해서만 접근
- Tailscale Control Plane과 지속적으로 통신 가능
PoC 권장 구조
개발 환경에서는 다음 구성이 더 단순하다.
Subnet Router
+ Public IP
+ Session Manager
Security Group에서
- SSH(22) 차단
만 해두면 외부 SSH 없이도 Session Manager를 사용할 수 있으며, Tailscale 설치 및 Control Plane 통신도 가능하다.
운영 전환 시에는
- Public IP 제거
- NAT Gateway 또는 NAT Instance 도입
으로 변경하는 것을 권장한다.
핵심 정리
| 구성 | 인터넷 | Session Manager | Tailscale |
|---|---|---|---|
| Public IP | ✅ | ✅ | ✅ |
| NAT Gateway | ✅ | ✅ | ✅ |
| NAT 없음 + VPC Endpoint | ❌ | ✅ | ❌ |
| NAT 없음 + Public IP 없음 | ❌ | ❌ (Endpoint 없으면) | ❌ |