소개
이 문서에서는 ip nat outside source static 명령과 IP 패킷을 사용하는 컨피그레이션에 대해 설명합니다.
사전 요구 사항
요구 사항
Cisco에서는 다음 항목에 대해 알고 있는 것이 좋습니다.
사용되는 구성 요소
이 문서의 정보는 Cisco IOS® Software Release를 실행하는 Cisco 라우터를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
이 문서에서는 ip nat outside source static 명령 사용과 함께 샘플 컨피그레이션을 제공하며, NAT 프로세스 동안 IP 패킷이 어떻게 되는지 간략하게 설명합니다. 이 문서의 네트워크 토폴로지를 예로 들어 보겠습니다.
구성
네트워크 다이어그램
이 문서에서는 이 네트워크 설정을 사용합니다.
네트워크 다이어그램
Router R1의 Loopback1 인터페이스에서 시작하여 Router R2의 Loopback0 인터페이스로 이동하는 ping을 실행하면 다음과 같은 상황이 발생합니다.
- NAT-Router의 외부 인터페이스(Gi0/0)에서 Ping 패킷이 SA(Source Address) 172.16.89.32, DA(Destination Address) 172.31.1.1로 나타납니다.
- NAT는 SA를 외부 로컬 주소 172.31.16.5(NAT-라우터에 구성된 ip nat 외부 소스 static 명령에 해당)로 변환합니다.
- 그런 다음 NAT 라우터는 라우팅 테이블에서 172.31.1.1에 대한 경로를 확인합니다.
- 경로가 존재하지 않으면 NAT-Router는 패킷을 삭제합니다. 그러나 이 경우 NAT-Router에는 서브넷 172.31.1.0/24에 대해 구성된 고정 경로를 통해 172.31.1.1에 대한 경로가 있습니다. 패킷을 목적지로 전달합니다.
- 라우터 R2는 수신 인터페이스(Gi0/0)에서 패킷을 수신합니다. 이제 SA는 172.31.16.5이고 DA는 172.31.1.1입니다.
- 응답하기 위해 R2는 ICMP(Internet Control Message Protocol) 에코 응답을 172.31.16.5(NATted 주소)로 전송합니다.
- R2에 경로가 없는 경우 패킷을 삭제합니다. 그러나 이 경우 NAT 라우터를 향하는 기본 경로가 있습니다.
- 따라서 응답 패킷을 NAT-Router로 전송합니다. SA는 172.31.1.1이고 DA는 172.31.16.5입니다.
- NAT-Router는 패킷을 확인하고 172.31.16.5 주소에 대한 경로를 확인합니다.
- ICMP가 없는 경우 ICMP 도달 불가 회신으로 응답합니다.
- 이 경우 R1을 가리키는 172.31.16.0/24 서브넷으로 구성된 고정 경로가 있습니다.
- 패킷을 다시 172.16.89.32 주소로 변환하고 외부 인터페이스(Gi0/0)로 전달합니다.
설정
이 문서에서는 다음 설정을 사용합니다.
라우터 R1 |
hostname R1
!
!--- Output suppressed.
!
interface Loopback1
ip address 172.16.89.32 255.255.255.0
!
interface GigabitEthernet0/0
ip address 172.16.191.254 255.255.255.252
duplex auto
speed auto
!
interface GigabitEthernet0/1
no ip address
shutdown
! !--- 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 command defines GigabitEthernet0/1 as a NAT inside interface and GigabitEthernet0/0 as a NAT outside interface.
!--- Output suppressed.
!
no ip http server
no ip http secure-server
ip nat outside source static 172.16.89.32 172.31.16.5
ip route 172.31.1.0 255.255.255.0 172.31.192.201
ip route 172.31.16.0 255.255.255.0 172.16.191.254
!
!--- Outside local address is defined as 172.31.16.5.
!--- Static routes for reaching the loopback interfaces on R2 and subnet 172.31.16.0 towards R1. |
참고: 이 특정 시나리오에서는 R1의 루프백1을 가리키는 고정 경로가 필요하지 않습니다. 이는 ICMP 응답이 NAT 라우터에 들어가면 먼저 라우팅 테이블에서 목적지를 확인한 다음 주소 변환이 수행되기 때문입니다.
라우터 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 ip nat translations 명령을 사용하여 이 출력에 표시된 것처럼 변환 엔트리를 확인합니다.
NAT-Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 172.31.16.5 172.16.89.32
icmp 172.31.1.1:21 172.31.1.1:21 172.31.16.5:21 172.16.89.32:21
NAT-Router#
문제 해결
이 예에서는 NAT 프로세스를 보여주기 위해 NAT 변환 디버깅 및 IP 패킷 디버깅을 사용합니다.
주의: debug 명령은 상당한 출력을 생성하므로 시스템의 다른 활동에 부정적인 영향을 주지 않도록 IP 네트워크의 트래픽이 낮은 경우에만 사용합니다.
참고: 이러한 디버그 출력은 Cisco IOS 소프트웨어를 실행하는 라우터에서 가져왔습니다. 이러한 디버그 출력의 모음은 사용된 플랫폼에 따라 달라질 수 있습니다.
참고: debug 명령을 사용하기 전에 Debug 명령에 대한 중요 정보를 참조하십시오.
이 출력은 R1 루프백1 인터페이스 주소(172.16.89.32)에서 R2 루프백0 인터페이스 주소(172.31.1.1)로 ping하는 동안 NAT-라우터에서 debug ip packet 및 debug ip nat 명령을 동시에 사용한 결과입니다.
이 출력은 NAT-Router의 외부 인터페이스에 도착하는 첫 번째 패킷을 보여줍니다. 소스 주소 172.16.89.32는 172.31.16.5로 변환됩니다. ICMP 패킷은 GigabitEthernet0/1 인터페이스를 통해 목적지로 전달됩니다.
*Sep 19 15:34:39.925: NAT: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [100]
*Sep 19 15:34:39.925: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.926: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.926: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.927: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.927: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward
*Sep 19 15:34:39.928: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet
이 출력은 172.31.1.1에서 소싱된 반환 패킷을 보여줍니다. 대상 주소는 172.31.16.5이며, 172.16.89.32로 변환됩니다. 결과 ICMP 패킷은 GigabitEthernet0/0 인터페이스(NAT-Router)에서 전달됩니다.
*Sep 19 15:34:39.930: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [100]
*Sep 19 15:34:39.930: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [100]
ICMP 패킷의 교환은 계속됩니다. 이 디버그 출력의 NAT 프로세스는 이전 출력과 동일합니다.
*Sep 19 15:34:39.932: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [101]
*Sep 19 15:34:39.932: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [101]
*Sep 19 15:34:39.933: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [101]
*Sep 19 15:34:39.933: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [101]
*Sep 19 15:34:39.935: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [102]
*Sep 19 15:34:39.935: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [102]
*Sep 19 15:34:39.936: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [102]
*Sep 19 15:34:39.936: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [102]
*Sep 19 15:34:39.938: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [103]
*Sep 19 15:34:39.938: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [103]
*Sep 19 15:34:39.939: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [103]
*Sep 19 15:34:39.939: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [103]
*Sep 19 15:34:39.940: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [104]
*Sep 19 15:34:39.940: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [104]
*Sep 19 15:34:39.942: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [104]
*Sep 19 15:34:39.942: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [104]
요약
패킷이 외부에서 내부로 이동하면 먼저 변환이 발생한 다음 라우팅 테이블에서 대상을 확인합니다.
패킷이 내부에서 외부로 이동하면 먼저 라우팅 테이블에서 대상을 확인한 다음 변환이 발생합니다.
자세한 내용은 NAT 작동 순서를 참조하십시오.
IP 패킷에서 각 이전 명령과 함께 사용할 때 변환되는 부분을 확인합니다. 이 표에는 다음 지침이 포함되어 있습니다.
이 지침은 패킷을 변환하는 방법이 두 가지 이상임을 나타냅니다. 특정 요구 사항에 따라 NAT 인터페이스를 정의하는 방법(내부 또는 외부) 및 변환 전후의 라우팅 테이블에 포함된 경로를 결정합니다. 변환되는 패킷의 부분은 패킷이 이동하는 방향과 NAT를 구성하는 방법에 따라 달라집니다.
관련 정보