카테고리 없음

✅ SNAT란?

idea9329 2025. 4. 9. 12:30
반응형

 

SNAT = Source Network Address Translation
 "출발지 IP/Port를 바꿔서 외부와 통신하는 기술"

예를 들어:

[Pod] 10.244.3.25:5678
    → Azure NAT Gateway or LB
        → 바깥 세상: 20.1.2.3:SNAT_PORT

즉, 하나의 Node 또는 Load Balancer IP가 많은 Pod의 외부 요청을 처리할 때,
각 요청을 구분하려면 고유한 "SNAT 포트"가 필요해!


🔥 SNAT Port가 부족하면?

⚠️ SNAT port exhaustion (포트 고갈) 발생

증상설명

외부 호출이 끊김 외부 API 요청 실패, DNS 실패 등
연결 hang 요청 보냈는데 응답 없음
불규칙 장애 특정 시간대에만 터짐 (요청 많을 때만)

🎯 Azure에서 SNAT 포트 기본 동작

항목기본값

Azure 기본 Internal LB SNAT 포트 자동 할당 (임시, 수 제한 있음)
NAT Gateway 사용 시 VM당 64,000개 이상의 SNAT 포트 할당 가능
하나의 외부 IP 기준 약 1024~64000 SNAT 포트 (IP 1개당) 사용 가능

즉, 많은 Pod이 같은 Node에서 같은 IP로 외부 연결을 시도하면 SNAT 포트가 금방 부족해짐.


✅ 실전 예: Pod이 외부 API 호출할 때

[Pod A] → Node IP + SNAT 포트 30001
[Pod B] → Node IP + SNAT 포트 30002
...
→ 같은 Public IP 하나를 공유함
→ 포트가 부족하면 더 이상 외부로 나갈 수 없음

🛠 해결 방법

방법설명

✅ NAT Gateway 사용 SNAT 포트 수를 확장하고 IP도 여러 개 붙일 수 있음
✅ Pod 분산 같은 Node에 너무 많은 Pod이 몰리지 않게
✅ SNAT 연결 재사용 Connection Pooling 등을 이용해 재연결 방지
✅ 외부 연결 줄이기 Sidecar, Proxy 사용하여 트래픽 제어

💡 마무리 요약

개념설명

SNAT 포트 Node 또는 LB가 Pod 대신 외부와 통신할 때 사용하는 출발지 포트
왜 필요? 여러 요청이 같은 IP를 공유하기 때문에, 구분 위해 필요
문제 상황 SNAT 포트 고갈 시 외부 요청 불가, 간헐적 장애 발생
해결 방법 NAT Gateway 도입, 노드 분산, 포트 재사용 등
반응형