NAT 포트 수용량 계산기 쉽게 이해하기 — 개념과 원리
포트 변환을 함께 쓰는 주소 변환(NAPT, 흔히 NAT 또는 PAT라고 부름)은 여러 사설 기기가 소수의 공인 IP 주소를 함께 쓰게 해 줍니다. 나가는 연결마다 공인 IP와 출발지 포트 한 쌍이 배정되는데, 포트 수에는 한계가 있습니다. 이 계산기는 사용자당 포트 수를 정했을 때 공인 주소로 몇 명을 수용할 수 있는지 추정하며, 사무실 방화벽, 캠퍼스망, 통신사 규모 NAT를 설계할 때 쓰입니다.
계산 방법
수용 가능 사용자 = 공인 IP 수 × IP당 사용 가능 포트 ÷ 사용자당 포트
- IP당 사용 가능 포트: 기본값 64,512는 1024~65535 범위(65,536 − 1,024)로, 잘 알려진 포트 0~1023을 뺀 값입니다.
- 사용자당 포트: 사용자 한 명에게 허용하거나 필요하다고 보는 동시 변환 수입니다.
결과에 소수가 나올 수 있지만 사용자는 정수로 세어야 하므로 내림해서 봅니다.
원리
TCP·UDP 포트 번호는 16비트 필드이므로 주소 하나, 프로토콜 하나당 65,536개의 값이 있습니다. NAT 장비는 사설 출발지 주소와 포트를 공인 주소와 빈 포트로 바꾸고, 응답을 되돌려 보낼 수 있도록 이 대응 관계를 기억합니다. 대응이 살아 있는 동안 그 공인 포트는 사용 중입니다. 전체 포트를 사용자 한 명이 차지하는 포트 수로 나누면 동시에 활동할 수 있는 사용자 수가 됩니다. TCP와 UDP는 포트 공간이 따로 있고, 목적지가 다르면 같은 공인 포트를 다시 쓰는 구현도 있어 실제 수용량은 이 단순 계산보다 클 수 있습니다. 반대로 가입자마다 고정된 포트 블록을 나누어 주는 방식은 이 식과 거의 일치합니다.
예제 풀이
- 입력값은 공인 IP 1개, 사용 가능 포트 64,512개, 사용자당 100포트입니다.
- 전체 포트는 1 × 64,512 = 64,512개입니다.
- 사용자 수는 64,512 ÷ 100 = 645.12를 내림한 645명입니다.
| 사용자당 포트 수 | 지원 가능한 사용자 수 |
|---|---|
| 25 | 2,580 |
| 50 | 1,290 |
| 75 | 860 |
| 100 | 645 |
| 125 | 516 |
| 150 | 430 |
| 200 | 322 |
결과 해석
사용자가 포트 한도에 자주 닿으면 새 연결이 실패하거나 멈춰, 웹페이지가 이유 없이 열리지 않는 것처럼 보입니다. 요즘 웹페이지, 백그라운드 연결을 많이 유지하는 앱, P2P 프로그램은 바쁜 순간에 수백 개의 포트를 쓰기도 합니다. 수용량을 늘리려면 공인 IP를 추가하거나, 끝난 연결의 유휴 시간 제한을 줄이거나, 포트 공유가 필요 없는 IPv6로 트래픽을 옮기는 방법이 있습니다.
흔한 실수
- 공인 IP 하나로 사용자 수에 상관없이 충분하다고 생각하는 경우
- 쓰지 않는 대응도 시간 제한이 끝날 때까지 포트를 차지한다는 점을 잊는 경우
- 최대치가 중요한데 평균 포트 수로 설계하는 경우
자주 묻는 질문
1024 미만 포트는 왜 빼나요?
표준 서비스에 배정된 시스템 포트(잘 알려진 포트)이기 때문에 많은 NAT 장비가 변환용 출발지 포트로 쓰지 않습니다.
사용자 한 명은 포트를 몇 개나 쓰나요?
사용 방식에 따라 크게 다릅니다. 가벼운 웹 검색은 수십 개면 되지만, 무거운 앱은 최대 시점에 수백 개 이상을 쓰기도 합니다.
IPv6에서도 포트 계산이 필요한가요?
대체로 필요 없습니다. IPv6는 기기마다 고유한 공인 주소를 주므로 주소 공유로 인한 포트 고갈이 생기지 않습니다.
출처: IETF RFC 6335, IANA 서비스 이름 및 전송 프로토콜 포트 번호 등록부 관리 절차 · IETF RFC 4787, NAT Behavioral Requirements for Unicast UDP · IETF RFC 6888, Common Requirements for Carrier-Grade NATs (CGNs)