1. NAT란?
- NAT(Network Address Translation)는 주소 변환 기술로, IPv4의 공인 IP 부족 문제를 완화하기 위해 제안되었습니다.
- 이 기술을 통해 내부망(intranet)에서는 사설 IP를 자유롭게 지정할 수 있으며, 같은 IP 대역을 여러 조직에서 중복해 사용할 수도 있습니다.
- 다만, 사설 IP는 인터넷에서 직접 통신할 수 없기 때문에, 공용 네트워크에 접근할 때는 반드시 라우터에서 사설 IP를 공인 IP로 변환해야 합니다.
- 이러한 방식은 공인 IP의 사용량을 줄여 비용 절감 효과까지 제공합니다.
2. NAT의 필요성
- IPv4 주소 절약 – 수많은 내부 호스트가 하나(혹은 몇 개)의 공인 IP로 인터넷 사용 가능
- 보안 강화 – 외부에서 내부 네트워크 구조/IP 직접 노출 차단
- 네트워크 관리 단순화 – 내부망은 사설 IP만 사용, ISP 변경 시에도 내부 주소 체계 변경 불필요
3. NAT의 동작 원리

- 내부 호스트가 인터넷으로 패킷을 보낼 때, NAT 장비가 출발지 주소(사설 IP) 를 공인 IP 로 변환.
- NAT 테이블에 변환 정보를 기록해둔 후, 외부에서 응답이 돌아오면 다시 원래 주소로 변환하여 내부 호스트에게 전달.
SNAT : sourceNAT 출발지 주소 변환
사설망 사용자들이 공인망 으로 네트워킹 하기위한 방법
대부분의 NAT
연결의 시작이 private network
DNAT : destinationNAT 목적지 주소 변환
공인망의 사용자들이 사설망의 컴퓨터에 접속
MASQUERADE , NAT overload
주로 IP 주소가 1개인경우 인터페이스 지정을 통해서
동일한 1개의 IP 주소로 주소 변환후-포트주소로 연결을 구분한다 (NAT-PAT)
Cisco
StaticNAT : SNAT + DNAT , Public->private , Private->public , 양방향 NAT , 1:1NAT
DynamicNAT : SNAT , 정해진것이 아니라 주소풀에서 그때 사용하지 않는 IP 주소로 변환
주소풀의 IP주소 갯수가 중요!!!
P.A.T : MASQUERADE , NAT overload
구성도

NAT 종류
| 큰 범위 | 세부 분류 | Key 변환 단위 | 별칭/비고 |
| NAT | Static NAT / Dynamic NAT | IP Address | Static=1:1 고정 매핑 |
| NAPT | NAT-PAT (Port Address Translation) | Port(포트 단위) | PAT, IP Masquerading |
※ NAPT=PAT 은 사실상 동의어입니다. 여러 내부 호스트가 하나의 공인 IP + 서로 다른 포트를 공유합니다.
Static NAT(정적 NAT)

1) 정의
- 내부 사설 IP ↔ 공인 IP 를 1:1로 영구 매핑하는 방식.
- 매핑이 고정이므로 양방향 통신(외부→내부, 내부→외부) 이 모두 자연스럽습니다.
2) 대표 사례
- 내부 서버를 외부에 공개(웹/메일/게임 서버 등)
- 외부 서비스의 IP 화이트리스트에 우리 서버 IP를 등록해야 할 때
- 고정 출구 IP가 필요한 업무(파트너 사전 허용, 라이선스 검증 등)
- 서로 다른 조직/망 간 주소 중첩 해결(정책/두 번 NAT와 병행)
3) 동작 방식(개념도)
[Internal Host] 192.168.1.10
│ (Source NAT: 192.168.1.10 → 203.0.113.10)
▼
[NAT/Firewall] ───── Internet ───── ▶ 외부 서버
외부에서 203.0.113.10 으로 들어오면
(Destination NAT: 203.0.113.10 → 192.168.1.10) 으로 내부 전달
- NAT 테이블에는 고정 매핑(192.168.1.10 ⇄ 203.0.113.10)이 존재.
- 장비는 외부 인터페이스에서 공인 IP(203.0.113.10) 에 대해 ARP 응답을 해야 함.
4) Static NAT vs 포트 포워딩(Static PAT)
- Static NAT(1:1): IP 전체를 매핑 → 모든 포트/프로토콜이 동일 호스트로 전달
- Static PAT(포트 포워딩): 특정 포트만 매핑 (예: 203.0.113.10:80 → 192.168.1.20:80)
5) 장단점
장점
- 외부 접근이 쉽고 예측 가능(고정 공인 IP)
- IP 화이트리스트, 고정 회선 요건에 적합
- 애플리케이션 호환성 우수 (포트 변환 불필요)
단점
- 공인 IP 1개를 1대에 사용 → 주소/비용 부담
- NAT 자체는 보안 아님 → 방화벽 정책/ACL 따로 필요
- FTP/SIP 같은 임베디드 IP 프로토콜은 ALG/추가 설정 필요
6) 구성 예시
(a) Cisco IOS (라우터/방화벽)
! 내부/외부 인터페이스 지정
interface Gig0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside
!
interface Gig0/1
ip address 203.0.113.1 255.255.255.0
ip nat outside
! 1:1 정적 매핑
ip nat inside source static 192.168.1.10 203.0.113.10
! (옵션) 특정 포트만 포워딩하는 Static PAT 예시
ip nat inside source static tcp 192.168.1.20 80 203.0.113.10 80
추기: 외부에서 들어오는 트래픽을 허용하려면 ACL/보안정책도 함께 열어야 합니다.
(b) Linux (iptables)
# 1:1 정적 DNAT (외부→내부)
iptables -t nat -A PREROUTING -d 203.0.113.10 -j DNAT --to-destination 192.168.1.10
# 1:1 정적 SNAT (내부→외부)
iptables -t nat -A POSTROUTING -s 192.168.1.10 -j SNAT --to-source 203.0.113.10
# (옵션) 포트 포워딩 예시: 80/TCP만 내부 192.168.1.20:80으로
iptables -t nat -A PREROUTING -p tcp -d 203.0.113.10 --dport 80 -j DNAT --to-destination 192.168.1.20:80
Dynamic NAT (동적 NAT)
1) 정의
- Dynamic NAT 는 내부 사설 IP ↔ 외부 공인 IP를 고정된 매핑이 아닌, 풀(pool)에서 동적으로 할당하는 방식입니다.
- NAT 장비(라우터/방화벽)는 NAT 변환이 필요한 패킷을 받으면, 사용 가능한 공인 IP를 NAT Pool에서 찾아 매핑합니다.
👉 즉, 내부 장비 수가 n이고, 공인 IP가 m개라면, 동시에 통신 가능한 장비 수는 m개로 제한됩니다
2) 특징
- 1:1 매핑은 Static NAT과 같지만, 누가 어떤 IP를 받을지는 동적으로 결정.
- 내부에서 동시에 통신 가능한 호스트 수는 공인 IP Pool의 크기에 따라 달라짐.
- 사설망 내부 장비들이 공용 네트워크(public network)에 접근할 수 있게 해주지만,
공인 IP 풀 크기 이상은 동시에 연결 불가.
3) 동작 방식
- 내부 사설 IP(예: 192.168.0.10)가 인터넷 통신 요청 → NAT 라우터로 전달
- NAT 장비는 NAT Pool에서 사용 가능한 공인 IP를 임시로 할당
- NAT 테이블에 변환 정보 등록
- 응답 패킷 수신 시 NAT 테이블을 참조하여 내부로 전달
- 세션 종료 시 NAT 매핑 삭제
4) Cisco IOS 구성 예시
! ================================
! Dynamic NAT 구성 예시 (Cisco IOS)
! ================================
! (1) 기존에 설정된 Static NAT 규칙 삭제
no ip nat inside source static 192.168.0.101 100.100.100.3
no ip nat inside source static 192.168.0.100 100.100.100.2
! (2) NAT 방향 지정
! 내부망 인터페이스 = NAT inside
interface f0/0
ip address 192.168.0.1 255.255.255.0
ip nat inside
! 외부망 인터페이스 = NAT outside
interface f4/0
ip address 100.100.100.1 255.0.0.0
ip nat outside
! (3) 내부 네트워크 범위 지정 (ACL 사용)
! 192.168.0.0/24 네트워크를 NAT 적용 대상으로 허용
access-list 1 permit 192.168.0.0 0.0.0.255
! (4) 변환할 공인 IP Pool 정의
! 사용할 수 있는 공인 IP 범위: 100.100.100.1 ~ 100.100.100.5
ip nat pool DynamicNAT 100.100.100.1 100.100.100.5 netmask 255.0.0.0
! (5) NAT 정책 적용
! ACL 1에 해당하는 내부 사설 IP를 DynamicNAT Pool의 공인 IP로 변환
ip nat inside source list 1 pool DynamicNAT
Static NAT vs Dynamic NAT
| 구분 | Static NAT | Dynamic NAT |
| 매핑 방식 | 내부 ↔ 외부 1:1 고정 | 내부 ↔ 외부 1:1 동적 할당 |
| 공인 IP 필요 | 내부 장비 수만큼 | 동시에 연결할 장비 수만큼 |
| 외부 접근 | 항상 동일 IP로 접근 가능 | 할당 시점마다 IP 달라짐 |
| 활용 사례 | 서버 공개, 고정 출구 IP 필요 | 일반 사용자 인터넷 접속 |
NAT-Port Address Translation (PAT, NAT Overload)

- 일반 Dynamic NAT는 사설 IP 개수만큼 공인 IP가 필요
- 이를 해결하기 위해 PAT 사용 → 하나의 공인 IP로 여러 사설 IP 통신 지원
- 구분 방법: 포트 번호를 함께 변환하여 식별
구조:
사설 IP 주소(n) → 공인 IP 주소(1)
즉, 다수의 내부 호스트가 동시에 하나의 공인 IP를 공유 가능
default route
506-Router(config)#ip route 0.0.0.0 0.0.0.0 100.100.100.200
in/out 결정
506-Router(config)#int f0/0(192.168.0.1)
506-Router(config-if)#ip nat inside
506-Router(config)#int f4/0(100.100.100.1)
506-Router(config-if)#ip nat outside
ACL 생성
506-Router(config)#access-list 1 permit 192.168.0.0 0.0.0.255
ACL -> NAT할 공인IP주소 interface (outside interface)
506-Router(config)#ip nat inside source list 1 interface f4/0 overload
웹서비스 사용후 NAT 테이블 정보
192.168.0.100] http://8.8.8.8
NAT 테이블 정보
ethernet|ip|tcp|http -> tcp 안에 port 정보가 있음
사설
src port 1025 ,dst port no 80
------------------------------
src ip addr 192.168.0.100, dst ip addr 8.8.8.8
NAT 에서 주소변환
공인
src port 1025 , dst port no 80
-----------------------------------------------------
src ip addr 100.100.100.1(192.168.0.100), dst ip addr 8.8.8.8
506-Router#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 100.100.100.1:1025 192.168.0.100:1025 8.8.8.8:80 8.8.8.8:80
웹서버에서 돌아올때
src port 80 , dst port 1025
------------------------------
src ip addr 8.8.8.8 , dst ip addr 100.100.100.1
ICMP 인 경우 NAT 테이블 정보
ethernet|ip|icmp
사설 주소 동시 통신 시작후 체크 - 공인IP주소가 1개니까 !!!! -> Port번호로 구분
(icmp 는 포트번호가 없기 때문에 별도의 값을 사용하다)
506-Router#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 100.100.100.1:1024 192.168.0.102:1 8.8.8.8:1 8.8.8.8:1024
icmp 100.100.100.1:1025 192.168.0.102:2 8.8.8.8:2 8.8.8.8:1025
icmp 100.100.100.1:1026 192.168.0.102:3 8.8.8.8:3 8.8.8.8:1026
icmp 100.100.100.1:1027 192.168.0.102:4 8.8.8.8:4 8.8.8.8:1027
icmp 100.100.100.1:10 192.168.0.100:10 8.8.8.8:10 8.8.8.8:10
icmp 100.100.100.1:11 192.168.0.100:11 8.8.8.8:11 8.8.8.8:11
icmp 100.100.100.1:12 192.168.0.100:12 8.8.8.8:12 8.8.8.8:12
icmp 100.100.100.1:1 192.168.0.101:1 8.8.8.8:1 8.8.8.8:1
icmp 100.100.100.1:2 192.168.0.101:2 8.8.8.8:2 8.8.8.8:2
icmp 100.100.100.1:3 192.168.0.101:3 8.8.8.8:3 8.8.8.8:3
icmp 100.100.100.1:4 192.168.0.101:4 8.8.8.8:4 8.8.8.8:4
icmp 100.100.100.1:9 192.168.0.100:9 8.8.8.8:9 8.8.8.8:9
'CS Fundamentals > 네트워크' 카테고리의 다른 글
| [네트워크] InterVLA (0) | 2025.09.29 |
|---|---|
| [네트워크] VLAN(Virtual LAN) (0) | 2025.09.24 |
| [네트워크]Public IP, Private IP, Bogon IP (0) | 2025.09.16 |
| [네트워크] 네트워크 접근제어 Access List (0) | 2025.09.11 |
| [네트워크] OSPF(Open Shortest Path First Protocol) (0) | 2025.09.11 |