Journey to Security/네트워크

[Cisco IOS]NAT/PAT(Port Address Translation)

보눔비스타 2026. 4. 1. 18:41

1. NAT와 NAT-PAT

🟢 NAT (Network Address Translation)

NAT(Network Address Translation)는 사설 IP를 공인 IP로 변환하는 기술이다.

주로 내부망에서 사용하는 사설 IP(Private IP) 주소를 인터넷 통신이 가능한 공인 IP(Public IP) 주소로 변환할 때 사용한다.

이를 통해 내부 IP 주소를 외부에 숨김으로써 보안을 강화하고, 부족한 IPv4 주소 자원을 아낄 수 있다.

🟢 NAT-PAT (Port Address Translation)

PAT는 'Overload'라고도 불리는 기술로, 하나의 공인 IP에 여러 개의 사설 IP를 매핑하는 방식이다.

여러 대의 PC가 하나의 공인 IP를 공유하되, 서로 다른 포트(Port) 번호를 사용하여 각각의 통신 세션을 구분한다.

이 방식을 사용하면 단 하나의 공인 IP만으로도 수백, 수천 명의 사용자가 동시에 인터넷을 사용할 수 있다.

 

2. NAT-PAT 설정 실습

🟦 네트워크 토폴로지

 

  • Outside Network (외부망): 100.100.20.0/24 대역이며, 최종 목적지인 Server들이 존재한다.
  • NAT Router (R1): 사설망과 공인망 사이의 경계 라우터다. 내부에서 외부로 나가는 트래픽의 IP 주소를 변환하는 역할을 수행한다.
  • 연결 정보: R1의 f0/0은 내부망(Inside), s0/0/0은 외부망(Outside) 방향이다.

 

🟦  NAT-PAT 설정 방법 및 명령어 설명

 

NAT-PAT 설정은 크게 두 가지 방식으로 나뉜다.

라우터 인터페이스의 IP를 그대로 빌려 쓰는 방식과, 별도의 공인 IP Pool을 지정하는 방식이다.

🟢 방법 1: 외부 인터페이스 IP를 사용하는 방식

라우터의 외부 인터페이스(Serial 0/0/0)에 이미 할당된 공인 IP 주소를 내부 사설 IP들이 공유하여 사용하는 방식이다.

별도의 IP Pool을 만들 필요가 없어 설정이 간결하며, 공인 IP를 단 하나만 할당받은 환경에서 가장 많이 사용된다.

설정은 [정적 경로 설정 -> ACL 정의 -> 인터페이스 매핑 -> 인터페이스 방향 적용]의 4단계로 진행된다.

 

==================

ip route 100.100.20.0 255.255.255.0 100.100.12.2

access-list 1 permit 10.10.10.0 0.0.0.255

ip nat inside source list 1 interface Serial0/0/0 overload

interface s0/0/0

 ip nat outside # 외부(인터넷) 방향

interface f0/0

 ip nat inside # 내부(LAN) 방향

==================

 

1️⃣ 외부 경로 확보 (Static Route)

내부 PC들이 R1에 직접 연결되지 않은 원격지의 서버 팜(100.100.20.0)으로 가기 위한 길을 R1에게 알려준다.

목적지 네트워크로 가기 위해 다음 라우터(Next-hop)인 100.100.12.2로 패킷을 보내라는 정적 경로 설정이다.

  • 명령어 형식: ip route [목적지 네트워크] [서브넷 마스크] [Next-hop IP]
    • ip route 100.100.20.0 255.255.255.0 100.100.12.2

2️⃣ 변환 대상 지정 (ACL)

10.10.10.0/24 대역에 속한 사설 IP들만 NAT 변환을 허용하겠다는 리스트를 만든다.

  • 명령어 형식: access-list [번호] permit [네트워크 주소] [와일드카드 마스크]
    • access-list 1 permit 10.10.10.0 0.0.0.255
  • ACL의 역할: 불필요한 트래픽이 NAT 연산에 참여하여 라우터 자원(CPU, RAM)을 낭비하는 것을 방지한다. 또한, ACL에서 제외된 IP는 외부 인터넷 통신이 차단되므로 기본적인 보안 제어 역할을 수행한다.

3️⃣ NAT/PAT 매핑 (Interface 방식)

별도의 공인 IP주소 Pool을 생성하지 않고, Serial0/0/0 인터페이스의 IP를 변환 주소로 사용한다.

이때 반드시 overload 키워드를 붙여야 여러 대의 PC가 하나의 IP를 포트 번호로 구분하여 동시에 사용할 수 있는 PAT 방식으로 동작한다.

  • 명령어 형식: ip nat inside source list [ACL번호] interface [인터페이스 이름] overload
    • ip nat inside source list 1 interface Serial0/0/0 overload
  • 특징: 인터페이스의 IP가 유동적으로 변하는 환경(DHCP 등)에서도 별도의 설정 수정 없이 NAT가 동작한다는 장점이 있다.

4️⃣ 인터페이스 방향 지정

라우터에게 어느 인터페이스가 내부(Inside)이고 어느 쪽이 외부(Outside)인지 명확히 알려주어야 NAT 연산이 시작된다.

  • 외부 방향 (Outside): 인터넷망과 연결된 s0/0/0 인터페이스에 설정한다.
  • 내부 방향 (Inside): 사설망(PC들)과 연결된 f0/0 인터페이스에 설정한다.

interface s0/0/0
 ip nat outside  # 외부(인터넷) 방향

interface f0/0
 ip nat inside   # 내부(LAN) 방향

 

🟢 방법 2: 별도의 공인 IP Pool을 사용하는 방식

 

인터페이스 IP가 아닌, 할당받은 다른 공인 IP(예: 100.100.12.11)를 사용하는 방식이다.

 

설정은 [정적 경로 설정 -> ACL 정의 -> Pool 생성 -> 매핑 -> 인터페이스 적용]의 5단계로 진행된다.

위 토폴로지에서 NAT와 관련된 모든 핵심 설정은 내부망과 외부망의 경계에 있는 R1 라우터에서 이루어진다.

==================

ip route 100.100.20.0 255.255.255.0 100.100.12.2

access-list 1 permit 10.10.10.0 0.0.0.255
ip nat pool natpool 100.100.12.11 100.100.12.11 netmask 255.255.255.0
ip nat inside source list 1 pool natpool overload

interface s0/0/0
 ip nat outside  # 외부(인터넷) 방향
interface f0/0
 ip nat inside   # 내부(LAN) 방향

==================

1️⃣ 외부 경로 확보 (Static Route)

내부 PC들이 R1에 직접 연결되지 않은 서버 팜(100.100.20.0)으로 가기 위한 길을 R1에게 알려준다.

목적지 네트워크(100.100.20.0)로 가기 위해 다음 라우터(Next-hop)인 100.100.12.2로 패킷을 보내라는 정적 경로 설정이다.

  • 명령어 형식: ip route [목적지 네트워크] [서브넷 마스크] [Next-hop IP]

ip route 100.100.20.0 255.255.255.0 100.100.12.2

 

2️⃣ 변환 대상 지정 (ACL) 

10.10.10.0/24 대역에 속한 사설 IP들만 NAT 변환을 허용하겠다는 리스트를 만든다.

뒤의 0.0.0.255는 와일드카드 마스크다.

  • 명령어 형식: access-list [번호] permit [네트워크 주소] [와일드카드 마스크]

access-list 1 permit 10.10.10.0 0.0.0.255

 

  • 효율적인 공인 IP 자원 관리: PAT(Port Address Translation)는 하나의 공인 IP를 여러 사설 IP가 공유하는 기술이다. 만약 ACL이 없다면 불필요한 트래픽(브로드캐스트, 로컬 통신 등)까지 모두 NAT 변환을 시도하게 되어 라우터의 CPU와 RAM 자원을 낭비하게 된다. ACL을 통해 실제 인터넷 통신이 필요한 '특정 대역'만 지정함으로써 장비의 부하를 줄인다.
  • 보안성 확보: 내부의 특정 서버나 민감한 장비가 외부 인터넷과 통신하는 것을 원천 차단하고 싶을 때, ACL에서 해당 IP를 제외(deny)하면 NAT 변환 대상에서 빠지게 되어 외부로 나갈 수 없게 된다.

3️⃣ 변환용 공인 IP 주소 풀 생성

외부로 나갈 때 변환에 사용할 공인 IP 범위를 natpool이라는 이름으로 정의한다.

여기서는 시작과 끝 IP를 동일하게 지정하여 1개의 공인 IP(100.100.12.11)만 사용하도록 설정했다.

  • 명령어 형식: ip nat pool [풀 이름] [시작 IP] [끝 IP] netmask [서브넷 마스크]

ip nat pool natpool 100.100.12.11 100.100.12.11 netmask 255.255.255.0

 

4️⃣ NAT/PAT 매핑

ACL 1번(사설 IP들)을 natpool(공인 IP)로 변환하되, overload 키워드를 붙여 포트 번호까지 나누어 사용하는 PAT 방식으로 동작하게 한다.

  • 명령어 형식: ip nat inside source list [ACL번호] pool [풀 이름] overload

ip nat inside source list 1 pool natpool overload

 

5️⃣ 인터페이스 방향 지정

라우터에게 어느 쪽이 안(Inside)이고 밖(Outside)인지 명확히 알려주어야 NAT 연산이 시작된다.

  • 외부 방향 (Outside): 인터넷망과 연결된 s0/0/0 인터페이스에 설정한다.
  • 내부 방향 (Inside): 사설망(PC들)과 연결된 f0/0 인터페이스에 설정한다.
interface s0/0/0
 ip nat outside  # 외부(인터넷) 방향

interface f0/0
 ip nat inside   # 내부(LAN) 방향
 
 
 

3. 통신 테스트 및 변환 트리거

설정을 마친 후에는 반드시 내부 PC에서 외부 서버로 실제 데이터를 보내야 NAT 테이블이 생성된다.

  1. [PC1~PC4]에서 실행: 외부 서버인 100.100.20.1로 핑(Ping)을 전송한다.
    • 명령: PC1> ping -t 100.100.20.1
  2. 동작 원리: 패킷이 R1을 통과할 때, R1은 설정된 규칙에 따라 사설 IP를 공인 IP로 변환하고 그 내역을 메모리에 기록한다.

 

4. NAT 변환 테이블 결과 분석

통신이 성공한 상태에서 R1 라우터의 CLI 창에 아래 명령어를 입력하여 변환 결과를 분석한다.

show ip nat translations

 

데이터의 의미는 다음과 같다.

필드명 설명 비고
Inside Local 실제 내부 호스트(PC)가 사용하는 사설 IP 주소 예: 10.10.10.1:1025
Inside Global 외부로 나갈 때 라우터에 의해 변환된 공인 IP 주소 예: 100.100.12.1:1025
Outside Local 내부 호스트가 목적지로 알고 있는 외부 IP 주소 보통 Outside Global과 동일
Outside Global 실제 목적지 호스트가 사용하는 공인 IP 주소 서버의 IP 주소

📌 테이블을 보면 모든 내부 호스트들이 100.100.12.11이라는 하나의 IP로 변환되지만, 뒤에 붙은 포트 번호(예: :1024, :1025)가 모두 다르다.

이 포트 번호 덕분에 라우터는 외부에서 들어오는 응답이 어떤 PC의 것인지 정확히 구분해낼 수 있다.

이것이 바로 PAT(Overload)의 핵심이다.