NAT(Network Address Translation)
- 사설 IP 주소를 공인 IP 주소로 변환
- 한정 되어있는 공인 IP 주소 절약 및 외부 공격으로부터 내부 네트워크를 지키기 위해 사용
- NAT는 상태를 변환 테이블로 유지함 (Stateful), 사설 IP 주소를 공인 IP 주소로 변환해서 내보냈을 때
해당 공인ip로 다시 들어오면 알아보고 해당 사설 ip로 바꿔주거나 자신이 요청한 적 없는 패킷을 거부할 수 있음
Static NAT
(config)# ip nat inside source Static <local-ip> <global-ip>
Dynamic NAT
(config)# ip nat pool <name> <start-ip> <end-ip> {netmask <Netmask> | prefix-length <Prefix-length>}
- ip 변환에 사용할 주소 범위 설정
(config)# access-list <number> permit <source-address> [Wildcard-mask]
- 내부에서 IP변환을 허용할 주소를 Standard Access-list로 정의
(config)# ip nat inside source list Access-list-number pool name [overload]
- 동적 변환을 수립하기 위한 NAT 설정
- overload 같은 경우 하나의 ip를 공유할 때 설정
(config-if)# ip nat inside
(config-if)# ip nat outside
- 해당 인터페이스 내.외부로 nat 적용
구성도는 내부 네트워크과 외부 네트워가 routing이 되어있지 않아
공인 네트워크끼리 통신만 가능하고 사설 네트워크에서 공인 네트워크로 통신이 안되는 상황이다
이를 NAT 설정을 통해 사설 IP를 공인 IP로 변환해줌으로써 통신이 가능하도록 한다
R4
(config)# ip nat pool nat1 14.0.24.10 14.0.24.254 netmask 255.255.255.0
(config)# ip nat pool nat2 14.0.34.10 14.0.34.254 netmask 255.255.255.0
- nat1과 nat2라는 이름의 사설 IP가 변환될 공인 IP 주소 범위 생성
(config)# ip access-list standard private1
(config-std-nacl)# permit 10.0.0.0 0.0.0.127
(config-std-nacl)# exit
(config)# ip access-list standard private2
(config-std-nacl)# permit 10.0.0.128 0.0.0.127
(config-std-nacl)# exit
- private1, private2 라는 이름의 standard acl 생성 및 적용할 ip 범위 설정
(config)# ip nat inside source list private1 pool nat1
(config)# ip nat inside source list private2 pool nat2
- nat1에는 private1, nat2에는 private2를 적용
이제 PC1에서 외부로 나갈 때 R4에서 사설 IP(10.0.0.1)을 공인 IP(14.0.24.10 ~ 254) 중 하나로 변환시키고
PC2에서 외부로 나갈 때 R4에서 사설 IP(10.0.0.129)를 공인 IP(14.0.34.10 ~ 254) 중 하나로 변환 시킴으로써
내부 네트워크에서 외부로 즉 인터넷 통신이 가능하게 해준다
설정 후 ping 통신을 해보면 설정 전과 다르게 외부 통신이 잘 되는 것을 확인할 수 있으며
R4에서 NAT 변환 테이블을 확인 해보면 10.0.0.1은 14.0.24.10으로 10.0.0.129는 14.0.34.10으로
변환 시켜서 8.8.8.8로 ping 통신이 나간 것을 확인 할 수 있다