이번 시간에는 ECS를 사용할때의 Network 모드에 대해 알아본다. 기본적으로 ECS Fargate의 경우는 awsvpc 모드를 제외하고 다른 네트워크 모드를 제공하지 않는다. EC2로 ECS를 구동하는 경우도 있으니, 모든 Network 모드에 대해 정리하고 각 Network 모드의 특징에 대해 알아본다.
01. AWS ECS Network Mode 정리 (Fargate 중심)
01-1. OS별 지원 네트워크 모드
| Network Mode | Linux Containers on EC2 | Windows Container on EC2 |
|---|---|---|
| awsvpc | O | O |
| bridge | O | X |
| host | O | X |
| none | O | X |
| default | X | O |
AWS ECS에서의 네트워크 모드는 컨테이너가 네트워크에 어떻게 붙을지를 결정하는 방식이다. 또한, EC2 인스턴스 기반으로 ECS Task를 구동하는 경우는 Linux와 Window Platform에 따라 지원되는 네트워크 모드가 다르다.
위 표에서 보이듯, Linux 플랫폼은 awsvpc, bridge, host, none을 지원하고 default는 제공하지 않는다. 이에 반해 Windows 플랫폼은 awsvpc와 default만 지원하는 형태다. 또한, 위에서 말했다시피 Fargate는 awsvpc 네트워크 모드만 지원한다
ECS 플랫폼(Linux, Window)별로 지원되는 네트워크는 알아보았으니 각 모드의 특징을 정리해보자.
01-2. awsvpc 모드

awsvpc 모드는 태스크(Task)에 고유한 ENI(Elastic Network Interface)와 Private IP가 할당되는 구조다. 즉, awsvpc 모드로 실행되는 태스크(Task)는 마치 EC2 인스턴스처럼 VPC 안에서 고유한 ENI(Elastic Network Interface)와 Private IP를 부여받아 동작하고, 같은 태스크(Task) 안의 컨테이너는 이 ENI와 IP를 공유하여, localhost로 서로 통신할 수 있다. 또한, 해당 태스크(Task) 안에 있는 컨테이너들의 포트는 중복되면 안된다.
awsvpc 모드는 ENI가 할당되기 때문에, 각 태스크 단위로 보안그룹(security group)을 지정할 수 있고, VPC Flow Log를 추가하여 트래픽을 추적할 수 있다. 또한, ALB나 NLB의 타깃을 등록할때는 반드시 Target Type을 IP로 지정해야 한다.
Application Load Balancer 대상 그룹 - Elastic Load Balancing
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
왜 Target Group에서 Target Type을 IP로 지정해야할까?
기본적으로 Target Group을 설정할 때 EC2 인스턴스 유형을 지정할 수 있다. 그렇다면 “ECS Fargate를 쓰는 경우도 인스턴스 유형으로 지정하면 되지 않나?” 라고 생각 할 수 있다. 하지만 불가능하다. 이유는 awsvpc 모드에서는 각 태스크(Task)마다 EC2의 기본 ENI가 아니라 태스크(Task) 전용으로 생성된 ENI(보조 ENI)가 붙어 고유한 IP를 가지기 때문에, 로드밸런서는 EC2 인스턴스 ID를 기반으로 한 기본 ENI로만 접근할 수 있다. 즉, 해당 ENI(보조 ENI)를 직접 타깃으로 삼아야 하므로 Target Type은 반드시 IP로 지정해야 한다.
[ ALB / NLB ]
│ (Target Type = instance로 지정)
│ ELB에서는 EC2 인스턴스 ID [bbvef0034321a] 기반으로 타깃을 조회한다
▼
[ EC2 인스턴스 ]
│ EC2가 가진 기본 Primary ENI 반환
│ (Primary ENI IP를 사용)
▼
[ Primary ENI IP ]
│ HostPort로 매핑된 컨테이너 포트로 전달
▼
[ Docker / ECS 컨테이너 ]
01-3. host 모드 (EC2 전용)

host 네트워크 모드는 컨테이너가 호스트의 네트워크 네임스페이스를 그대로 공유(ENI, IP, Port)하도록 설정하는 방식이다. 컨테이너 포트가 곧 EC2 인스턴스의 포트가 되기 때문에, 패킷을 복사하거나 NAT를 거치지 않아 네트워크 지연이 가장 낮고 처리량이 높다. 이 모드는 EC2 Linux에서만 지원하고, Fargate/Windows 컨테이너에서는 사용이 불가능하다. 또한, 구조상 한 호스트(EC2) 안에서 같은 포트(Port)를 2번 사용할 수 없기에, 포트 충돌을 조심해야 한다.
01-4. bridge 모드 (EC2 전용)


랜카드(NIC)가 없으면 네트워크 통신은 불가능하다
→ 디지털 데이터 (0과 1) ⇄ 물리 신호 (전기 신호 또는 전자기파)
네트워크 통신이란, 결국 패킷(데이터)을 물리적 매체 또는 무선 신호로 송수신하는 것이고,
이를 담당하는 유일한 장치가 NIC(=랜카드)다.
[네트워크 인터페이스] ← 상위 개념
├─ [이더넷 기반 인터페이스] ← Ethernet(802.3) 프로토콜 → 가상 일반적인 유선 LAN 통신용 인터페이스
│ ├─ 물리 인터페이스 → 예: eth0, ens33
│ └─ 가상 인터페이스 → 예: vethXXXX, tap0
│
├─ [무선 LAN 인터페이스] ← Wi-Fi (802.11) 프로토콜 → Wi-Fi 통신용
│ └─ 물리 인터페이스 → 예: wlan0, wlp2s0
│
├─ [브리지 인터페이스] ← Layer 2 스위칭 동작
│ └─ 가상 인터페이스 → 예: docker0, br0
│
├─ [터널 인터페이스] ← 가상 네트워크 터널 (VPN 등)
│ └─ 가상 인터페이스 → 예: tun0
│
└─ [루프백 인터페이스] ← 자기 자신과 통신
└─ 가상 인터페이스 → 예: lo
bridge 네트워크 모드는 컨테이너들이 호스트 내부의 가상 네트워크 인터페이스(NI)인 docker0를 통해 통신하도록 구성된다. docker0는 리눅스 커널의 브릿지 드라이버로 구현된 네트워크 인터페이스로, 여러 컨테이너를 같은 네트워크 대역으로 묶고 내부적으로는 스위치처럼 동작한다.
컨테이너가 생성될 때마다, 호스트에는 가상 네트워크 인터페이스 쌍인 veth pair(가상의 랜선)가 생성되며, 이 중 한쪽은 docker0에 연결되고, 다른 한쪽은 컨테이너의 eth0 네트워크 인터페이스에 연결된다. 이 구조를 통해 컨테이너 간 통신은 docker0를 경유하며, 물리 네트워크 설정을 변경하지 않고 동일 네트워크 대역 내에서 패킷을 주고 받을 수 있다.
01-5. none 모드 (EC2 전용)

none 네트워크 모드는, 컨테이너를 완전히 고립된 상태로 실행해 외부 네트워크와 전혀 통신하지 못하도록 하는 설정이다. 즉, 호스트나 인터넷으로 나가는 트래픽이 아예 차단되며, ELB 연결이나 포트 매핑 같은 기능은 아예 사용을 못한다.
99. 참고자료
AWS ECS - Network Mode
ECS가 지원하는 네트워크 모드 공부 기록
cloudest.oopy.io
'Public Cloud > AWS - Practice' 카테고리의 다른 글
| [AWS] Saving Plan vs Reserved Instance (0) | 2025.08.07 |
|---|---|
| [AWS] Lambda + EventBridge 기반 스케쥴링 (0) | 2025.07.28 |
| [AWS] 자주 사용하는 AWS CLI 정리 (0) | 2025.07.24 |
| [AWS] 인터넷 게이트웨이 (0) | 2025.07.10 |
| [AWS] AWS VPC, Subnet IP 대역을 설정하는 기준은? (0) | 2025.06.10 |