[네트워크 기초] Network Address Translation (NAT)
Study!/Network

[네트워크 기초] Network Address Translation (NAT)

NAT

NAT는 RFC 1631에 정의된 것으로 IP Header의 주소를 다른 주소로 바꾸는 기술입니다. 공인 IP 부족문제를 해결하고자 나왔습니다. NAT는 사설주소를 사용하는 호스트들이 인터넷에 서비스를 이용할 수 있도록 하기위해 사용됩니다. 

※ 보안성 이점 (외부 네트워크와 단절되어 있음)

 

Dynamic & Static NAT

  • Dynamic NAT는 호스트가 요구하는 Traffic을 받으면 IP주소내에서 사설 IP를 라우터에 설정된 주소를 있는 공인 IP로 변환한 후 외부로 전달합니다. 외부에서 응답 신호가 라우터로 돌아오면 NAT 라우터는 NAT Table에 있는 이전 정보로 목적지로 들어온 주소를 사설 IP로 변환해서 내부망으로 전달합니. (내부 -> 외부)
  • Static NAT는 외부주소로 들어온 요청을 내부 서버로 전달될 수 있도록 목적지 주소를 변환하는 기능입니다. 이 방법으로 사설망 서버를 구현하고 외부 주소로 들어오는 연결을 내부 서버로 전달할 수 있습니다, (외부->내부)

Dynamic NAT Configuration

- IP 변환에 사용할 주소들을 설정합니다.

Router(config)#ip nat name start-ip end-ip {netmask Netmask | prefix-length Prefix-lenth}

- 내부에서 IP변환을 허용할 주소를 Standard Access-list로 정의합니다.

Router(config)#access-list number permit source-address [wildcard-mask]

- 동적 변환을 수립하기 위한 NAT설정을 진행합니다. ( overload : 공인IP가 하나밖에 없어서 여러 HOST가 동시에 사용    이 불가능할때 PAT을 이용하여 동시다발적으로 사용할 수 있게 해주는 옵션 )

 

Router(config)#ip nat inside source list access-list-number pool name [overload]

- 각 Interface로 이동 후 내부와 외부를 각각 설정합니다.

Router(config-if)#ip nat inside
Router(config-if)#ip nat outside

위 항목들이 기본적으로 Dynamic NAT를 설정할 때 필요한 설정항목들 입니다. 사설 IP주소를 ACL로 지정함으로써 표현할 수 있고, 각 인터페이스별로 설정하여 물리적으로 나눌 수 있습니다.

NAT Example

위 그림을 예로 한번 설정해 보도록 하겠습니다.

NAT(config)#ip nat pool Pub_IP 210.123.94.1 210.123.94.14 netmask 255.255.255.240
NAT(config)#access-list 50 permit 192.168.100.0 0.0.0.255
NAT(config)#ip nat inside source list 50 pool Pub_IP
NAT(config)#int e0
NAT(config-if)#ip nat inside
NAT(config-if)#int s0
NAT(config-if)#ip nat outside

첫번째 줄에서 IP 변환에 사용될 공인IP주소 범위를 설정해 주었습니다. NAT Pool Name은 Pub_IP로 설정하였습니다. ACL을 통해 사설 IP범위를 지정해주고 NAT 내부 IP주소에 할당해주었습니다. 그 후 Interface마다 내부와 외부를 설정하여 마무리 되었습니다. 가장 기초적인 Dynamic NAT 설정과정이었습니다. 이번엔 Packet Tracer로 Network Topology를 작성하여 설정해 보도록 하겠습니다. 

위 Topology를 토대로 기본 설정을 마무리 지어 줍니다. ( Serial연결은 없고 전부 FastEthernet연결 되어있습니다. )

또한 DNS Service의 경우 Server Device의 Services 항목에서 설정 할 수 있습니다. 기본 설정이 끝났으면 NAT Router가되는 Router0에서 NAT설정을 마무리하겠습니다.

TAB키를 누르면서 명령어를 입력하는게 버릇이 되어버려 조금 난잡합니다 :(

위와같이 내부 사설망과 외부 인터넷 구간을 나누어 설정하고 ACL까지 설정하여 주었습니다. NAT 설정이 끝나면 debug ip nat 명령을 이용하여 출력 메시지를 아래와같이 실시간으로 확인할 수 있습니다.

Source Address는 192.168.1.100 이라는 사설 IP에서 시작하여, 100.123.65.1 이라는 Gateway(공인IP) 주소로 변환하여 전송되었습니다. 또한 ICMP Reply Message에서도 Destination Address가 100.123.65.1 로 지정되었고, 이를 받은 NAT Router는 NAT Table을 토대로 사설 IP 주소로 변환하여 Host에게 전달하는 모습을 볼 수 있습니다.