소개
이 문서에서는 명령을 구성하는 방법ip nat outside source list
및 NAT 프로세스 중 IP 패킷이 어떻게 되는지 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서의 정보는 Cisco IOS® Software Release를 실행하는 Cisco 라우터를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
이 명령을 사용하여 네트워크 외부에서 네트워크 내부로 이동하는 IP 패킷의 소스 주소를 변환할 수 있습니다. 이 작업은 네트워크 내부에서 외부로 반대 방향으로 이동하는 IP 패킷의 목적지 주소를 변환합니다. 이 명령은 내부 네트워크 주소가 네트워크 외부에 있는 주소와 중복되는 중복 네트워크와 같은 상황에서 유용합니다. 네트워크 다이어그램을 예로 들어 보겠습니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
구성
이 섹션에는 이 문서에서 설명하는 기능을 구성하기 위한 정보가 표시됩니다.
참고: 이 문서에 사용된 명령에 대한 추가 정보를 보려면 명령 조회 도구(등록된 고객만 해당)를 사용하십시오.
네트워크 다이어그램
이 문서에서는 이 네트워크 설정을 사용합니다.
네트워크 다이어그램
Router R1 Loopback0 인터페이스(172.16.88.1)에서 Router R2 Loopback0 인터페이스(172.31.1.1)로 ping이 제공되면 다음 이벤트 시퀀스가 발생합니다.
- 패킷 전달: Router R1은 기본 경로로 구성되어 있으므로 NAT 라우터로 패킷을 전달합니다. NAT 라우터의 외부 인터페이스에서 패킷의 소스 주소(SA)는 172.16.88.1이고 목적지 주소(DA)는 172.31.1.1입니다.
- NAT 변환: SA는 ip nat outside source list 명령에서 사용하는 access-list 1에서 허용되므로, NAT 풀 "NET"의 주소로 변환됩니다. 이 경우 주소는 NAT 풀에서 사용 가능한 첫 번째 주소인 172.31.16.10으로 변환됩니다.
- 대상에 라우팅: 변환 후 NAT-Router는 라우팅 테이블에서 대상을 찾고 패킷을 라우팅합니다. 라우터 R2는 SA 172.31.16.10, DA 172.31.1.1의 수신 인터페이스에서 패킷을 수신합니다. 라우터 R2는 ICMP(Internet Control Message Protocol) 에코 응답을 172.31.16.10에 전송하여 응답합니다. 라우터 R2에 172.31.16.10에 대한 경로가 없는 경우 패킷을 삭제합니다.
- 회신 처리: 이 경우 라우터 R2는 기본 경로를 가지므로 SA 172.31.1.1 및 DA 172.31.16.10을 사용하여 NAT-라우터에 응답 패킷을 보냅니다. NAT 라우터는 내부 인터페이스에서 패킷을 수신하고 172.31.16.10 주소에 대한 경로를 확인합니다. 경로에 없는 경우 ICMP 도달 불가 회신으로 응답합니다.
- Translation and Routing Back: 이 경우 NAT-Router의 경로는 172.31.16.10입니다. ip nat outside source 명령의 add-route 옵션 때문에 외부 전역 주소와 외부 로컬 주소 간의 변환을 기반으로 호스트 경로를 추가합니다. NAT-라우터는 패킷을 원래 소스 주소(172.16.88.1)로 다시 변환하고 패킷을 외부 인터페이스에서 라우터 R1로 다시 라우팅합니다.
설정
라우터 R1 |
hostname R1
!
!--- Output suppressed.
!
interface Loopback0
ip address 172.16.88.1 255.255.255.0
!
!--- Output suppressed.
!
interface GigabitEthernet0/0
ip address 172.16.191.254 255.255.255.252
duplex auto
speed auto
!
!--- Output suppressed.
ip route 0.0.0.0 0.0.0.0 172.16.191.253
!--- Default route to forward packets to NAT-Router.
!--- Output suppressed. |
라우터 NAT-라우터 |
hostname NAT-Router
!
!--- Output suppressed.
!
interface GigabitEthernet0/0
ip address 172.16.191.253 255.255.255.252
ip nat outside
ip virtual-reassembly in
duplex auto
speed auto
!
interface GigabitEthernet0/1
ip address 172.31.192.202 255.255.255.0
ip nat inside
ip virtual-reassembly in
duplex auto
speed auto
!
ip nat pool NET 172.31.16.10 172.31.16.254 netmask 255.255.255.0
!--- NAT pool defining Outside Local addresses to be used for translation.
!
ip nat outside source list 1 pool NET add-route
!
!--- Configures translation for Outside Global addresses !--- with the NAT pool.
!
ip route 172.16.88.0 255.255.255.0 172.16.191.254
ip route 172.31.1.0 255.255.255.0 172.31.192.201
!
!--- Static routes for reaching the loopback interfaces on R1 and R2.
!
access-list 1 permit 172.16.88.0 0.0.0.255
!
!--- Access-list defining Outside Global addresses to be translated.
!--- Output suppressed. |
라우터 R2 |
hostname R2
!
!--- Output suppressed.
interface Loopback0
ip address 172.31.1.1 255.255.255.0
!
!
interface GigabitEthernet0/0
ip address 172.31.192.201 255.255.255.0
duplex auto
speed auto
!
!--- Output suppressed.
ip route 0.0.0.0 0.0.0.0 172.31.192.202
!--- Default route to forward packets to NAT-Router.
!--- Output suppressed. |
다음을 확인합니다.
이 섹션에서는 컨피그레이션이 제대로 작동하는지 확인하는 데 사용할 수 있는 정보를 제공합니다.
특정 show 명령은 출력 인터프리터 툴(등록된 고객만 해당)에서 지원되며, 이를 통해 명령 출력의 분석을 볼 show
수 있습니다.
이 출력에 표시된 것처럼 show ip nat translations 명령을 사용하여 변환 엔트리를 확인할 수 있습니다.
NAT-Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 172.31.16.10 172.16.88.1
icmp 172.31.1.1:0 172.31.1.1:0 172.31.16.10:0 172.16.88.1:0
NAT-Router#
출력에서는 라우터 R1의 Loopback0 인터페이스에 있는 주소인 Outside Global 주소 172.16.88.1이 Outside Local 주소 172.31.16.10으로 변환되는 것을 보여줍니다.
다음과 같이 show ip route 명령을 사용하여 라우팅 테이블 엔트리를 확인할 수 있습니다.
NAT-Router#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
172.16.0.0/16 is variably subnetted, 3 subnets, 3 masks
S 172.16.88.0/24 [1/0] via 172.16.191.254
C 172.16.191.252/30 is directly connected, GigabitEthernet0/0
L 172.16.191.253/32 is directly connected, GigabitEthernet0/0
172.31.0.0/16 is variably subnetted, 4 subnets, 2 masks
S 172.31.1.0/24 [1/0] via 172.31.192.201
S 172.31.16.10/32 [1/0] via 172.16.88.1
C 172.31.192.0/24 is directly connected, GigabitEthernet0/1
L 172.31.192.202/32 is directly connected, GigabitEthernet0/1
NAT-Router#
출력에는 외부 로컬 주소 172.31.16.10에 대한 /32 경로가 표시되며, 이는 ip nat outside source 명령의 add-route 옵션으로 인해 생성됩니다. 이 경로는 네트워크 내부에서 외부로 이동하는 패킷을 라우팅하고 변환하는 데 사용됩니다.
문제 해결
이 섹션에서는 설정 문제 해결에 사용할 수 있는 정보를 제공합니다.
이 출력은 라우터 R1 루프백0 인터페이스 주소(172.16.88.1)에서 라우터 R2 루프백0 인터페이스 주소(172.31.1.1)로 ping하는 동안 라우터 NAT-Router에서 debug ip packet 및 debug ip nat 명령을 실행한 결과입니다.
!--- The source address in the first packet arriving on the outside interface is first translated.
*Oct 4 20:26:48.839: NAT: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [0]
!--- The ICMP echo request packet with the translated source address is routed and forwarded on the inside interface.
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT Inside(8), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet
!--- The ICMP echo reply packet arriving on the inside interface, is first routed based on the destination address.
Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Common Flow Table(5), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Stateful Inspection(8), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Virtual Fragment Reassembly(39), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Virtual Fragment Reassembly After IPSec Decryption(57), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, MCI Check(109), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
!--- The destination address in the packet is then translated.
*Oct 4 20:26:48.841: NAT: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [0]
!--- The ICMP echo reply packet with the translated destination address is forwarded on the outside interface.
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Post-routing NAT Outside(26), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), g=172.16.191.254, len 100, forward
*Oct 4 20:26:48.843: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, sending full packet
*Oct 4 20:26:48.845: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [1]
*Oct 4 20:26:48.846: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [1]
*Oct 4 20:26:48.848: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [2]
*Oct 4 20:26:48.849: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [2]
*Oct 4 20:26:48.851: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [3]
*Oct 4 20:26:48.852: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [3]
*Oct 4 20:26:48.854: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [4]
*Oct 4 20:26:48.855: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [4]
외부 인터페이스에서 수신된 모든 패킷에 대해 이전 절차가 반복됩니다.
요약
ip nat outside source static 명령(static NAT) 대신 ip nat outside source list 명령(dynamic NAT)을 사용하는 주요 차이점은 라우터(NAT용으로 구성됨)가 패킷의 변환 기준을 확인할 때까지 변환 테이블에 항목이 없다는 것입니다. 이전 예에서 SA 172.16.88.1의 패킷(NAT-Router의 외부 인터페이스로 들어옴)은 ip nat outside source list 명령에서 사용하는 기준인 access-list 1을 충족합니다. 따라서 내부 네트워크의 패킷이 라우터 R1 루프백0 인터페이스와 통신할 수 있으려면 패킷이 외부 네트워크에서 시작해야 합니다.
이 예에서는 두 가지 중요한 사항을 참고하십시오.
1. 패킷이 외부에서 내부로 이동할 때 먼저 변환이 발생하고 라우팅 테이블에서 대상을 확인합니다. 패킷이 내부에서 외부로 이동하면 먼저 라우팅 테이블에서 대상을 확인한 다음 변환이 발생합니다.
2. 이전 명령을 각각 사용할 때 IP 패킷의 어떤 부분이 변환되는지 알아두는 것이 중요합니다. 다음 표에서는 지침을 제공합니다.
명령을 사용합니다 |
작업 |
ip nat 외부 소스 목록 |
- 외부로 이동하는 IP 패킷의 소스를 변환합니다.
- 내부에서 외부로 이동하는 IP 패킷의 목적지를 변환합니다.
|
ip nat 내부 소스 목록 |
- 내부에서 외부로 이동하는 IP 패킷의 소스를 변환합니다.
- 외부로 이동하는 IP 패킷의 대상을 변환합니다.
|
이러한 지침이 나타내는 것은 패킷을 변환하는 방법이 두 가지 이상이라는 것입니다. 특정 요구에 따라 NAT 인터페이스를 정의하는 방법(내부 또는 외부) 및 변환 전후의 라우팅 테이블에 포함된 경로를 결정할 수 있습니다. 변환되는 패킷의 부분은 패킷이 이동하는 방향 및 NAT를 구성한 방법에 따라 달라집니다.
관련 정보