DMZ(Demilitarized Zone, 비무장지대)는 외부(인터넷)와 내부(사내 네트워크) 간에 완충 역할을 하는 네트워크 영역이에요.
주로 웹 서버, API 서버, 프록시 서버 등 인터넷과 연결되는 서비스를 배치하는데,
이때 NLB가 아니라 ALB를 주로 사용하는 이유는 HTTP 레벨에서 세부적인 제어가 필요하기 때문!

🔥 DMZ에서 ALB를 주로 사용하는 이유

1. HTTP(S) 트래픽을 처리해야 하기 때문 (L7 지원)

DMZ에 배치된 서비스들은 대부분 웹 서버(HTTP/S) 또는 API 서버(REST, gRPC) 형태예요.

  • 예) 웹 애플리케이션, API 게이트웨이, WAF(Web Application Firewall) 적용 서비스
  • ALB는 L7(Application Layer)에서 동작하기 때문에, HTTP 요청을 해석하고 라우팅 가능
  • 반면, NLB는 L4(Network Layer)라서 단순 TCP/UDP 패킷 전달만 가능 → HTTP 기반 서비스에 부적합

➡️ DMZ의 서비스들은 HTTP 트래픽을 다뤄야 하므로, ALB가 적합함!

2. WAF(Web Application Firewall) 연동 가능

DMZ의 주요 역할 중 하나는 외부 공격으로부터 내부 네트워크를 보호하는 것

  • AWS WAF는 ALB와 통합되어 L7 보안 규칙 적용 가능 (SQL Injection, XSS 등 탐지 및 차단)
  • NLB는 단순한 TCP/UDP 패킷 전달이므로 WAF 같은 L7 보안 기능 적용 불가

➡️ DMZ에서 보안 강화를 위해 ALB + WAF 조합을 주로 사용!

3. URL/호스트 기반 라우팅 지원 (여러 서비스 운영 가능)

  • ALB는 도메인(host) 및 URL 패턴을 기반으로 트래픽을 다르게 라우팅 가능
    • api.example.com → API 서버
    • app.example.com → 웹 애플리케이션 서버
    • cdn.example.com → S3 또는 다른 백엔드

➡️ 하나의 ALB로 여러 서비스에 대한 트래픽을 효율적으로 분산할 수 있음

  • 반면, NLB는 단순 TCP/UDP 포트 기반 라우팅만 가능하므로 이런 기능을 제공하지 않음

4. SSL Termination 지원 (HTTPS 트래픽 처리)

  • ALB는 SSL Termination(SSL 해제) 기능을 지원하여 HTTPS 트래픽을 효과적으로 처리 가능
  • 즉, DMZ에서 ALB가 HTTPS 요청을 해석하고 내부 서버에는 HTTP로 전달하여 성능 최적화
  • NLB는 L4이므로 SSL Termination을 지원하지 않음 → 백엔드 서버에서 직접 SSL 해제해야 해서 부담 증가

➡️ DMZ에서 HTTPS 트래픽을 효과적으로 처리하려면 ALB가 필요함!

5. 내부 네트워크 보호 & DDoS 방어

  • ALB는 AWS Shield Standard 기본 제공 (DDoS 보호)
  • L7 계층에서 정상적인 HTTP 요청과 악성 요청을 구분 가능
  • NLB는 L4 계층에서 패킷을 그대로 전달하므로, DDoS 공격을 막는 기능이 부족

➡️ DMZ에서 ALB를 사용하면 DDoS 같은 대량 요청 트래픽을 효과적으로 차단할 수 있음

NLB를 DMZ에서 잘 사용하지 않는 이유


➡️ NLB는 고정 IP가 필요한 TCP/UDP 서비스(DB, VPN, 게임 서버 등)에 적합하지만, DMZ에서는 필요하지 않음

✅ 결론: DMZ에서 ALB를 주로 사용하는 이유

✔ DMZ 서비스들은 HTTP/S 트래픽을 처리해야 하므로 L7(Application Layer)인 ALB가 필요함
✔ ALB는 WAF 연동이 가능하여 보안성을 높일 수 있음
URL/호스트 기반 라우팅이 가능하여 하나의 ALB로 여러 서비스를 운영할 수 있음
SSL Termination을 지원하여 HTTPS 성능 최적화 가능
DDoS 방어 기능이 기본 제공됨

💡 즉, DMZ에서는 HTTP/S 트래픽 처리와 보안이 중요하기 때문에, L4(NLB)보다 L7(ALB)이 더 적합한 선택! 🚀

profile
나는 능히 할 수 있는 버섯이다! 🍄‍🟫

0개의 댓글

Powered by GraphCDN, the GraphQL CDN