1. NAT(Network Address Translation)의 기본
NAT은 네트워크 패킷의 IP 주소를 변환하는 기술입니다. 일반적으로 내부망에서 외부망으로 나갈 때 사설 IP → 공인 IP로 바꿔주는 과정이 NAT입니다.
- DNAT(Destination NAT) : 목적지 IP를 변환 (주로 외부 → 내부)
- SNAT(Source NAT) : 출발지 IP를 변환 (주로 내부 → 외부)
여기서 SNAT은 내부망 서버들이 외부 서비스(Firewall, Cloud API, FCM, APNs 등)로 접속할 때 출발지 IP를 단일/지정된 IP로 변환하는 기술입니다.
2. L4 장비에서의 SNAT 동작
L4 스위치(로드밸런서)는 전송 계층(Layer 4, TCP/UDP) 단에서 트래픽을 제어합니다.
L4 장비에서 SNAT을 적용하면:
- 내부망 서버 A(10.0.0.5), B(10.0.0.6), C(10.0.0.7)가 외부망으로 접속할 때
- 각 서버의 **출발지 IP를 L4의 외부 IP(예: 211.111.111.100)**로 바꿔서 외부로 나갑니다.
- 외부 서버는 "어떤 서버에서 왔는지"는 몰라도 되고, L4가 대신 응답을 받아 내부 서버로 다시 전달합니다.
즉, L4가 프록시 역할을 하면서 모든 outbound 트래픽의 "대표 IP"가 되는 방식입니다.
3. L4 SNAT을 사용하는 이유
- 공인 IP 절약
내부 수십~수백 대 서버가 외부와 통신하더라도 하나의 IP로 통합 가능. - 보안 강화
내부망 서버 IP가 외부에 노출되지 않고, 오직 L4의 SNAT IP만 노출됨. - 세션 관리 용이
NAT 테이블을 통해 세션을 추적할 수 있어, 문제 발생 시 트래픽 모니터링 및 제어가 용이함. - 정책 적용 단순화
방화벽이나 외부 서비스에서 "허용할 출발지 IP"를 SNAT IP 하나만 등록하면 됨.
4. 고려해야 할 문제점
- 세션 풀(Session Pool) 고갈
내부 수천 개 세션이 하나의 SNAT IP로 몰릴 경우, **포트 범위(약 64K개)**가 한계에 도달할 수 있음.
→ 해결책: SNAT 풀 구성(여러 개의 SNAT IP 할당) - 트래픽 로그 식별 어려움
외부에서 볼 때는 모든 요청이 동일한 IP에서 오므로, 개별 서버 추적이 어려움.
→ 해결책: L4 로그, 세션 ID, X-Forwarded-For 같은 부가 정보 활용 - 비대칭 라우팅 문제
나가는 트래픽만 SNAT을 거치고, 응답 트래픽이 다른 경로로 들어오면 세션이 깨짐.
→ 해결책: 네트워크 경로 설계 시 반드시 대칭 경로 유지
'Infra' 카테고리의 다른 글
| SQL 튜닝 case when (0) | 2025.10.19 |
|---|---|
| TCP 3-way Handshake (0) | 2025.10.19 |
| 간단한 SQL 튜닝 팁 2탄 (0) | 2025.10.09 |
| Oracle vs PostgreSQL (2) | 2025.10.05 |
| AWS EC2 vs ECS 차이 (0) | 2025.09.28 |