본문 바로가기
네트워크/기초 학습

NAT 실습

by CBROJIN 2025. 8. 10.

1. 이론 학습

IPv4 Private Address Space

  • 조직 내부 장비 간 통신을 위해 사설 주소를 사용한다.
  • 사설 주소만으로는 인터넷 접근이 불가하므로, 외부 접근 시 NAT를 통해 공인 주소로 변환해야 한다. 핵심 포인트
  • NAT와 사설 주소의 조합 덕분에 하나의 공인 주소로 수백, 수천 대가 인터넷을 공유할 수 있다.
  • IPv4 고갈을 늦추는 데 결정적인 역할을 했지만, 한계가 있어 궁극적 해법은 IPv6 전환이다.

RFC 1918 사설 주소 대역 표

Class RFC1918 내부 주소 범위 Prefix
A 10.0.0.0 - 10.255.255.255 10.0.0.0/8
B 172.16.0.0 - 172.31.255.255 172.16.0.0/12
C 192.168.0.0 - 192.168.255.255 192.168.0.0/16
 

NAT란 무엇인가?

  • 네트워크 내부에서는 사설 IPv4를 쓰고, 외부로 나갈 때만 공인 주소로 번역하는 기술. 효과
  • 공인 주소를 절약한다.
  • 내부 사설 주소를 외부에 직접 노출하지 않기 때문에 프라이버시와 보안 측면에서 이점이 있다. 구성 요소
  • NAT 풀: 라우터에 설정된 하나 이상의 유효한 공인 IPv4 주소 집합.
  • 경계 라우터: 내부 스텁 네트워크의 출입 경계에서 NAT를 수행하는 라우터. 동작 개요
  • 내부 호스트의 패킷이 경계 라우터로 들어오면, 라우터는 출발지 사설 주소를 공인 주소로 변환하여 외부로 전송한다.
 

NAT 용어 정리

  • 항상 번역 대상 장비(내부 장비)의 관점에서 inside, outside를 해석한다.
  • inside: NAT가 적용되는 내부 영역
  • outside: 인터넷 등 외부 영역
  • local: 내부 측에서 보이는 주소
  • global: 외부 측에서 보이는 주소
구분 의미 보통의 값
Inside local 내부에서 보이는 출발지 사설 IP
Inside global 외부에서 보이는 출발지 공인 IP (NAT 변환 결과)
Outside global 외부에서 보이는 목적지 공인 IP
Outside local 내부에서 보이는 목적지 일반적으로 Outside global과 동일

 

 

NAT의 종류와 동작 요약

정적 NAT (Static NAT)

  • 내부 사설 주소와 외부 공인 주소를 1:1로 고정 매핑한다.
  • 장점: 주소가 항상 동일하므로 웹서버, VPN 게이트웨이, 원격 관리 대상처럼 외부에서 상시 접근이 필요한 장비에 적합.
  • 단점: 외부로 동시에 통신하는 호스트 수만큼 공인 주소가 필요하다.

동적 NAT (Dynamic NAT)

  • 미리 정의한 공인 주소 풀에서 선착순으로 주소를 임시 할당한다.
  • 세션이 끝나면 주소가 반환된다.
  • 여전히 동시 사용자 수만큼의 공인 주소가 필요하다는 점은 정적 NAT와 동일.

포트 주소 변환 (PAT, NAT Overload)

  • 여러 내부 사설 주소를 하나(또는 소수)의 공인 주소로 매핑한다.
  • 구분은 L4 포트 번호(또는 ICMP Query ID)를 사용한다.
  • 가정/기업에서 가장 널리 쓰이는 방식으로, 보통 하나의 공인 IP로 다수 사용자가 인터넷을 공유한다.
  • 응답 패킷은 변환 테이블에 기록된 포트 기반 엔트리를 이용해 원래의 내부 호스트로 되돌아간다.

Next Available Port 동작

  • PAT는 원래의 출발지 포트를 보존하려고 시도한다.
  • 이미 사용 중이면 0-511, 512-1023, 1024-65535 포트 범위에서 사용 가능한 다음 포트를 순차 탐색해 할당한다.
  • 모든 포트가 소진되면, 풀에 공인 주소가 여러 개 있을 경우 다음 공인 주소로 넘어가 재시도한다.

TCP/UDP 포트 번호 범위 (IANA 기준)

범위 이름 값 범위 설명 서비스 예시
Well-Known Ports 잘 알려진 포트 0 ~ 1023 전 세계적으로 표준화된 서비스에 예약된 포트, 서버 측에서 주로 사용 20, 21: FTP / 22: SSH / 23: Telnet / 25: SMTP / 53: DNS / 80: HTTP / 443: HTTPS
Registered Ports 등록 포트 1024 ~ 49151 특정 애플리케이션/벤더가 IANA에 등록한 포트, 클라이언트나 서버 모두 사용 가능 3306: MySQL / 3389: RDP / 8080: HTTP 대체
Dynamic / Private Ports 동적·사설 포트 (Ephemeral Ports) 49152 ~ 65535 클라이언트 측에서 임시로 할당되는 포트, 세션 종료 시 해제됨 브라우저에서 HTTP 요청 시 랜덤 할당(예: 51432)

L4 세그먼트가 없는 패킷 처리

  • TCP/UDP 포트가 없는 프로토콜(예: ICMPv4)은 ICMP Query ID 등을 식별자로 사용해 세션을 구분한다.
  • 그 외 특수 프로토콜은 장비 구현에 따라 처리 방식이 다르다.
구분 내부 송신 정보 NAT 변환 후 외부 서버 응답 매핑
PC1 Src IP: 192.168.0.10, ICMP Query ID: 1001 Src IP: 203.0.113.10, Query ID: 5001 응답 도착 시 Query ID=5001 → PC1로 전달
PC2 Src IP: 192.168.0.20, ICMP Query ID: 1001 (우연히 같은 값) Src IP: 203.0.113.10, Query ID: 5002 응답 도착 시 Query ID=5002 → PC2로 전달

 

NAT vs PAT 비교 표

항목 NAT PAT
매핑 관계 Inside Local 과 Inside Global 간 1:1 하나의 Inside Global 을 여러 Inside Local 이 공유(다대일), 포트로 구분
변환 요소 IPv4 주소만 변환 IPv4 주소 + TCP/UDP 출발지 포트(또는 ICMP Query ID) 변환
공인 주소 필요 수 외부 접속 호스트마다 고유 Inside Global 필요 한 개(또는 소수)의 Inside Global 로 다수 호스트 동시 접속 가능

 

NAT 테이블 예시 (정적/동적 NAT의 1:1 매핑)

Inside Global Address Inside Local Address
209.165.200.226 192.168.15.10
209.165.200.227 192.168.15.11
209.165.200.228 192.168.15.12
209.165.200.229 192.168.15.13
  • 설명: 각 내부 호스트가 외부로 나갈 때, 해당 Inside Global 로 1:1 변환된다. 돌아오는 트래픽은 이 테이블을 참조해 원래 Inside Local 로 역변환된다.

PAT 테이블 예시 (다대일, 포트 기반 구분)

Inside Global Address:Port Inside Local Address:Port
209.165.200.226:2031 192.168.10.10:2031
209.165.200.226:1506 192.168.10.11:1506
209.165.200.226:1131 192.168.10.12:1131
209.165.200.226:1718 192.168.10.13:1718
  • 설명: 공인 주소는 하나(209.165.200.226)지만, 포트 번호가 달라 각 세션/호스트를 구분할 수 있다.

 

2. 이론 실습

Static NAT 구성과 검증

Static NAT 시나리오

  • Static NAT는 내부 주소와 외부 주소를 1:1로 고정 매핑한다.

Static NAT

작업 1. SERVER의 IP(192.168.10.2)를 203.168.10.3으로 1:1 매핑

Inside Local ↔ Inside Global 고정 매핑 생성 
R1(config)# ip nat inside source static 192.168.10.2 209.168.10.3

 

작업 2. NAT 관점에서 인터페이스 역할 지정

  • 내부측(inside)과 외부측(outside)을 정확히 지정해야 변환이 동작한다.
R1(config)# interface G0/1
R1(config-if)# ip address 192.168.10.1 255.255.255.0
R1(config-if)# ip inside
R1(config-if)# exit 
R1(config)# interface G0/0
R1(config-if)# ip address 203.168.10.1 255.255.255.248
R1(config-if)# ip nat outside

동작 요약

  • Inside 인터페이스로 들어오는 192.168.10.2 출발 트래픽은 203.168.10.3 로 변환되어 외부로 전송된다.
  • Outside 인터페이스로 들어오는 203.168.10.3 목적지 트래픽은 192.168.10.2 로 역변환되어 내부로 전달된다.

Static NAT 검증

1. 변환 테이블 확인 

R1# show ip nat translations

  • 활성 세션 중에는 외부 목적지 정보가 함께 표시된다. 

 

2. 통계 확인

  • 테스트 전 과거 통계를 초기화하면 판단이 쉬워진다.
R1# clear ip nat statistics 
R1# show ip nat statistics

  • 세션이 성립한 뒤에는 Hits 값이 증가해야 한다. 
  • Static NAT는 외부에서 내부로의 접근이 필요할 때 사용한다(서버, 고정 관리 대상 등)

Dynamic NAT 구성과 검증

Dynamic NAT 시나리오

  • Dynamic NAT는 내부 사설 주소를 공인 주소 풀 중 하나로 자동 1:1 매핑한다.
  • ip nat inside / ip nat outside 로 내부·외부 인터페이스를 지정하는 점은 Static NAT와 동일하되, 매핑은 풀에서 동적으로 할당된다.
  • 풀의 공인 주소 개수 ≥ 동시에 외부 통신을 해야 하는 내부 호스트 수가 되어야 한다. 모두 사용 중이면 새 호스트는 대기한다.

Dynamic NAT 설정 절차

1. 변환에 사용할 공인 주소 풀 정의

R1(config)# ip nat pool NAT-POOL 203.168.10.3 203.168.10.6 netmask 255.255.255.248

 

2. 번역 대상(허용) 내부 주소를 표기할 표준 ACL 작성

R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255

 

3. ACL과 풀을 바인딩

R1(config)# ip nat inside source list 1 pool NAT-POOL

 

4. NAT 관점의 inside, outside 인터페이스 지정

R1(config)# interface range g0/0-1
R1(config-if)# ip nat inside
R1(config)# interface g0/2 
R1(config-if)# ip nat outside

 

 

동작 개요(Inside → Outside)

  • 내부 호스트의 첫 트래픽이 R1에 도착하면, 라우터는 풀에서 가용 공인 주소를 할당해 Inside Local → Inside Global 1:1 매핑을 생성한다.
  • 응답 패킷은 변환 테이블을 참조해 Inside Global → Inside Local 로 역변환되어 원 호스트로 전달된다.

Dynamic NAT 검증

현재 변환 엔트리 확인 

R1# show ip nat translations

 

자세히 보기(verbose)

R1# show ip nat translation verbose

타이머

  • 기본 동적 엔트리 타임아웃은 24시간.
  • 조정: ip nat translation timeout <초>

동적 엔트리 삭제(clear)

  • 테스트 전에 테이블을 비우면 검증이 쉬움.
R1# clear ip nat translation *
  • show running-config | include NAT 로 풀/바인딩 설정을 빠르게 점검할 수 있다.

 

PAT 구성과 검증

PAT 시나리오

  • ISP가 조직에 공인 IPv4 주소를 하나만 할당했을 때 또는 여러 개를 할당했을 때 모두 PAT로 다수 내부 호스트의 인터넷 접속을 처리할 수 있다.
  • 핵심은 L4 포트 번호(또는 ICMP Query ID)를 함께 변환해, 하나의 공인 주소를 여러 내부 호스트가 공유하게 만드는 것이다.

단일 공인 IPv4 주소를 사용하는 PAT 구성

  • ip nat inside source 명령에 overload 키워드를 추가한다.
  • 예시: ACL 1로 192.168.0.0/16을 허용하고, 외부 인터페이스 S0/1/1의 주소(209.165.200.225)를 공인 주소로 사용한다.
R1(config)# ip nat inside source list 1 interface G0/2 overload 
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255 
R1(config)# interface range g0/0-1
R1(config-if)# ip nat inside 
R1(config)# interface g0/2 
R1(config-if)# ip nat outside

 

  • 내부 호스트는 모두 209.165.200.225로 변환되어 나가며, 각 세션은 고유한 출발지 포트로 구분된다.

주소 풀을 사용하는 PAT 구성

  • ISP가 공인 주소를 여러 개 제공할 경우, 풀을 정의하고 overload를 결합해 PAT를 운용한다.
R1(config)# ip nat pool NAT-POOL 203.168.10.3 203.168.10.4 netmask 255.255.255.248 
R1(config)# access-list 1 permit 192.168.0.0 0.0.255.255 
R1(config)# ip nat inside source list 1 pool NAT-POOL overload 
R1(config)# interface range g0/0-1
R1(config-if)# ip nat inside 
R1(config)# interface g0/2
R1(config-if)# ip nat outside

 

  • 풀의 각 공인 주소를 다수 호스트가 공유할 수 있어, 세션 수가 매우 많을 때도 포트 범위를 넓게 활용 가능하다.

핵심 요점

  • PAT는 하나의 공인 IP를 여러 내부 호스트가 공유하되, 세션을 L4 포트(또는 ICMP Query ID)로 구분한다.
  • 반환 트래픽은 목적지 주소와 포트 조합으로 정확한 내부 호스트를 식별해 원래의 사설 주소와 포트로 복원된다.
  • 실제 검증은 show ip nat translations 로 두 엔트리가 같은 inside global 주소지만 포트가 서로 다름을 확인하면 된다.

 

PAT 검증

  • 정적/동적 NAT와 동일한 검증 명령을 사용한다.

변환 테이블 확인

R2# show ip nat translations

단일 공인 IPv4 주소를 사용하는 PAT 구성

 

 

통계 확인 

R2# show ip nat statistics
  • 활성 변환 수, 풀의 주소 개수와 할당 수, 히트/미스 카운트 등을 통해 동작을 종합적으로 점검한다.

운영 팁

  • 단일 주소 PAT에서 포트 고갈 시, 주소 풀 PAT로 전환하면 여유가 생긴다.
  • 애플리케이션 특성상 고정 포트가 필요한 서버용 트래픽은 PAT 영역에서 제외하고 정적 NAT 또는 정책 기반 NAT를 병행한다.
  • 문제 발생 시 clear ip nat translation * 로 동적 엔트리를 비우고 재테스트하면 진단이 수월하다.

 

'네트워크 > 기초 학습' 카테고리의 다른 글

DHCPv4 실습  (4) 2025.08.12
ACL 실습  (3) 2025.08.11
Cisco 장비 SSH 원격 접속 실습  (2) 2025.08.10
Day 10: 네트워크 장비들  (4) 2025.08.10
Day 9: 네트워크 프로토콜들  (3) 2025.08.08