Limetime's TimeLine
article thumbnail
반응형

NAT (Network Address Translation)

#한 쪽 네트워크의 IP주소가 다른 네트워크로 넘어갈 때, 주소가 변환되어 넘어가는 것

사용 예시

  • 내부의 네트워크에는 비공인 IP주소를 사용하고 외부 인터넷으로 나가는 경우만 공인 IP주소를 사용하고자 하는 경우
  • 기존에 사용하던 ISP에서 새로운 ISP로 바꾸면서 내부 전체의 IP를 바꾸지 않고 기존의 IP 주소를 그대로 사용하고자 하는 경우
  • 2개의 인트라넷을 서로 합하려다 보니 두 네트워크의 IP가 서로 겹치는 경우
  • TCP 부하 분배(Load-Balancing)가 필요한 경우

*Inside Local : 내부 네트워크에서 사용하는 비공인 주소

*Inside Global : 외부로 나갈 때, 변환되어 나가는 주소

  1. 10.1.1.1 HostHost B의 통신에서 10.1.1.1은 라우터 A를 거쳐 NAT Table을 거치게 되면 주소가 172.16.217.1로 변환됨과 동시에 NAT Table에 저장된다.
  2. Host B는 172.16.217.1로부터 온 메시지를 받고 다시 목적지가 172.16.217.1인 곳으로 메시지를 보낸다.
  3. Host B의 메시지를 받은 라우터 A는 목적지 주소가 172.16.217.1인 것을 보고 NAT Table을 참조해서 메시지를 10.1.1.1에게 전달한다.

예제

R1(config)# int fa0/0
R1(config-if)# ip addr 10.1.1.254 255.0.0.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# int se0/0
R1(config-if)# ip addr 192.168.1.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# router rip
R1(config-router)# version 2
R1(config-router)# network 10.0.0.0
R1(config-router)# network 192.168.1.0
R1(config-router)# no auto-summary
R1(config-router)# exit
R1(config)# ip nat pool ccie 192.168.1.3 192.168.1.254 netmask 255.255.255.0
R1(config)# ip nat inside source list 1 pool ccie
R1(config)# ip nat inside source static 10.1.1.2 192.168.1.100
R1(config)# access-list 1 permit 10.0.0.0 0.255.255.255
R1(config)# int fa0/0
R1(config-if)# ip nat inside
R1(config-if)# exit
R1(config)# int se0/0
R1(config-if)# ip nat outside
  • ip nat pool ccie 192.168.1.3 192.168.1.254 netmask 255.255.255.0
    • 외부로 나갈 때 사용할 Inside global IP주소의 pool
    • 'ccie'라는 이름을 가진 192.168.1.3~192.168.1.254 범위의 pool
  • ip nat inside source list 1 pool ccie
    • 1번 access-list 적용
    • Inside로 정의한 인터페이스에서 오는 패킷의 source 주소(출발지 주소)를 보고 그 주소가 Access-List 1번에 정의한 source 주소에 해당하면 그것을 지정한 pool(ccie)에 있는 주소로 바꿔주겠다.
    • Outside로 정의한 인터페이스에서 들어오는 패킷의 목적지 주소를 보고 그것이 pool(ccie)에 속한 주소이면 그것을 다시 Private 주소로 바꿔주겠다.
  • ip nat inside source static 10.1.1.2 192.168.1.100
    • 고정 주소 지정 (10.1.1.2는 무조건 192.168.1.100로 변환)
  • access-list 1 permit 10.0.0.0 0.255.255.255
    • 10.0.0.0 0.255.255.255 네트워크만 허용하고 나머지는 모두 Deny
R2(config)# int fa0/0
R2(config-if)# ip addr 172.20.7.254 255.255.0.0
R2(config-if)# no shutdown
R2(config-if)# exit
R2(config)# int se0/0
R2(config-if)# ip addr 192.168.1.2 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# exit
R2(config)# router rip
R2(config-router)# version 2
R2(config-router)# network 172.20.0.0
R2(config-router)# network 192.168.1.0
R2(config-router)# no auto-summary
R2(config-router)# exit

관련 명령어

R1# debug ip nat
	NAT: s=10.1.1.1 → 192.168.1.3, d=172.20.7.1 [1]
	NAT*: s=172.20.7.1, d=192.168.1.3 → 10.1.1.1 [5]
	NAT: s=10.1.1.1 → 192.168.1.3, d=172.20.7.1 [2]
	NAT*: s=172.20.7.1, d=192.168.1.3 → 10.1.1.1 [6]
	NAT: s=10.1.1.1 → 192.168.1.3, d=172.20.7.1 [3]
	NAT*: s=172.20.7.1, d=192.168.1.3 → 10.1.1.1 [7]
	NAT: s=10.1.1.1 → 192.168.1.3, d=172.20.7.1 [4]
	NAT*: s=172.20.7.1, d=192.168.1.3 → 10.1.1.1 [8]
    
R1# show ip nat translations
    pro		Inside global		Inside local	outside local	outside global
    icmp	192.168.1.3:1		10.1.1.1:1		172.20.7.1:1	172.20.7.1:1
    icmp	192.168.1.3:2		10.1.1.1:2		172.20.7.1:2	172.20.7.1:2
    icmp	192.168.1.3:3		10.1.1.1:3		172.20.7.1:3	172.20.7.1:3
    icmp	192.168.1.3:4		10.1.1.1:4		172.20.7.1:4	172.20.7.1:4
    --		192.168.1.100		10.1.1.2		---				---
    잠시후...
    NAT: expiring 192.168.1.3(10.1.1.1) icmp 1(1)
    NAT: expiring 192.168.1.3(10.1.1.1) icmp 2(2)
    NAT: expiring 192.168.1.3(10.1.1.1) icmp 3(3)
    NAT: expiring 192.168.1.3(10.1.1.1) icmp 4(4)

R1# show ip nat translations
    pro		Inside global		Inside local	outside local	outside global
    --		192.168.1.100		10.1.1.2		---				---

R1# undebug all

R1# show ip nat statistics
    Total translations: 1 (1 static, 0 dynamic, 0 extended)
    Outside Interfaces: serial0/0
    Inside Interfaces: FastEthernet0/0
    Hits: 4 Misses: 4
    Expired translations: 4
    Dynamic mappings:
    -- Inside source
    access-list 1 pool ccie refcount 4
    pool ccie: netmask 255.255.255.0
        start 192.168.1.3 end 192.168.1.254
        type generic, total address 252, allocated 0(0%), misses 0
  • Debug 명령을 준 후 10.1.1.1 Host에서 172.20.7.1 Host로 ping을 보내면 위와 같은 Log가 출력된다.
  • [ ]은 ICMP 순서이다.

반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!