사설IP 주소와 공인IP 주소를 서로 변환 시켜주는 것을 의미한다.사설IP 주소 => 공인IP 주소 공인IP 주소 => 사설IP 주소사설 IP주소
- 인터넷에 연결할 수 없는 주소
- 내부 네트워크 안에서 통신하기 위한 주소 (내부 네트워크)
A 클래스:10.0.0.0 ~ 10.255.255.255B 클래스:172.16.0.0 ~ 172.31.255.255C 클래스:192.168.0.0 ~ 192.168.255.255공인 IP주소
- 인터넷에 연결할 수 있는 공인된 주소
- 내부 네트워크와 외부 네트워크 모두 통신할 수 있는 고유한 주소 (외부 네트워크)
사설IP 주소를 사용하는B,C회사는IP주소가 중복되도 상관 없지만 만약 공용 네트워크(Internet)을 사용하면사설IP 주소는 중복될 수 있기 때문에 유일한공인IP 주소로 변환 해야 합니다.NAT가사설IP 주소를공인IP 주소로,공인IP 주소를사설IP 주소로 변환 시켜 줍니다.NAT기능의 예시로는 공유기가 있으며 공유기는 외부 네트워크와 연결되는 통신 사업자로부터공인IP 주소를 할당 받고 공유기 내부에 연결되는PC에는사설IP 주소를 할당하여PC가 사용하는사설IP 주소를공인IP 주소로 변환해 줍니다.
- 라우터에
NAT기능을 설정하여사설IP 주소와공인IP 주소간에 자동으로 변환 되도록 해줍니다.- 사설 네트워크에 있는
PC에서 라우터로 프레임을 보낼 때출발지 IP 주소로사설IP 주소(192.168.10.100)를 보냅니다.- 라우터는 들어온 프레임의
출발지 IP 주소를사설IP 주소(192.168.10.100)에서공인 IP 주소(211.255.10.100)로 변환하여NAT 테이블에 저장하고 프레임의출발지 IP 주소를공인IP 주소로 바꾸어 외부 네트워크의 목적지에 전달합니다.- 외부 네트워크에서는
공인IP주소만 알수 있으므로목적지 IP를출발지 IP주소 였던211.255.10.100으로 설정 합니다.NAT가 동작하는 라우터는 다시NAT 테이블을 확인하여 주소 변환 내역이 있는 경우목적지 IP 주소를공인IP 주소(211.255.10.100)에서 해당되는사설IP 주소(192.168.10.100)로 변환하여 해당 프레임을 보냅니다.NAT table:사설IP 주소와공인IP 주소를 기록하고 변환의 기준이 된다.
NAT 장점
공인 IP 주소공유로 인한IP부족의 해결- 로컬 네트워크에 새로운 장비를 추가하기가 쉽다.
- 사설 네트워크이기 때문에 관리자가 통제하기 쉽다.
- 기관에서
ISP를 변경하는 것이 용이하다. 공인 주소만 바꾸면 되기 때문이다.- 외부의 악성 공격자가 클라이언트 장비에 직접 접근하는 것이 어려워 일종의 방화벽처럼 동작한다.
NAT 단점
NAT는 네트워크를 구성하고 관리하는 데 있어 관리가 좀 더 복잡하다.- 특정 어플리케이션과의 호환성 문제가 있다.
IPSec과 같은 프로토콜은 헤더의 변조를 탐지하도록 설계됐기 때문에NAT에 의한 변경과 악성 데이터그램 해킹을 잘 구분하지 못한다.- 클라이언트 접근 지원이 어렵다.
- 데이터그램이 사설 네트워크와 인터넷을 오갈 때마다 주소 변환과 헤더 체크섬을 다시 계산해야 한다.
정적 NAT
사설IP 주소하나와공인IP 주소하나를1:1맵핑
동적 NAT
사설IP 주소범위와공인IP 주소범위를 맵핑
정적 NAT과 동적 NAT의 차이점
동적 NAT은 맵핑한사설 & 공인 IP 주소의 범위안의 모든IP주소를 변환할 수 있지만정적 NAT은 설정한 오직 하나의사설 & 공인 IP 주소만 변환 가능합니다.
NAT Overload(PAT)
사설IP 주소범위와공인IP 주소하나를 맵핑- 하나의
공인IP 주소만을 사용하기 때문에 해당하는사설 IP 주소구별이 불가능 하기 때문에4계층의Port Number(PAT)를 함께 사용합니다.
IP 주소 절약
PAT를 이용하면 여러 개의사설IP 주소를 하나의 외부 주소(공인IP 주소)로 변환 가능사설IP주소가200개가 있더라도공인IP 주소1개만 있으면 외부 네트워크와 통신할 수 있으므로IP주소를 절약할 수 있다.
보안 향상
- 주소나 내부 토폴로지를 광고하지 않기 때문에 외부 접근을 통제해 보안을 향상 시킵니다.
- 변환된
공인IP 주소로 통신하기 때문에 외부 인터넷에서는 내부 네트워크의 주소나 토폴로지를 알 수 없어 외부에서 내부 네트워크의 접근을 통제하여 보안을 향상 시킬 수 있는 방법을 사용합니다.동적 NAT를 사용하면 변환되는공인IP 주소가 매번 바뀌기 때문에 내부 네트워크에서는공인 IP주소예측이 어려워 집니다.PAT를 사용하게되면 변환된 포트 번호를 함께 사용하게 되는데 출발지 포트번호는 프로그램이 실행될 때 마다 변경 되므로 예측이 어려워 외부네트워크에서 내부네트워크로의 접근을 통제할 수 있습니다.
정젹 NAT 설정
1.사설IP 주소와 공인IP 주소 맵핑Router(config)#ip nat inside source static 사설IP 주소 공인IP 주소2.적용
Router(config)#int 사설 네트워크와 연결되는 인터페이스 번호 Router(config-if)#ip nat inside Router(config-if)#int 공용 네트워크와 연결되는 인터페이스 번호 Router(config-if)#ip nat outside3.확인
Router#show ip nat translations
정적 NAT 실습
R1>
Router(config)#int g0/1 Router(config-if)#ip add 192.168.10.1 255.255.255.0 Router(config-if)#no sh Router(config-if)#int s0/1/0 Router(config-if)#ip add 211.255.10.1 255.255.255.0 Router(config-if)#no sh // 라우팅 Router(config)#router ospf 10 Router(config-router)#network 211.255.10.0 0.0.0.255 area 0 // 사설IP 주소와 공인IP 주소 맵핑 Router(config)#ip nat inside source static 192.168.10.100 211.255.10.100 // 적용 Router(config)#int g0/1 Router(config-if)#ip nat inside Router(config-if)#int s0/1/0 Router(config-if)#ip nat outside // 확인 PC> ping 211.255.20.100 // 반드시 ping test 후에 nat table 확인 해야됨 Router#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 211.255.10.100 192.168.10.100 --- ---R2>
Router(config)#int g0/0 Router(config-if)#ip add 211.255.20.1 255.255.255.0 Router(config-if)#no sh Router(config-if)#int g0/1 Router(config-if)#ip add 211.255.30.1 255.255.255.0 Router(config-if)#no sh Router(config)#int s0/1/0 Router(config-if)#ip add 211.255.10.2 255.255.255.0 Router(config-if)#no sh // 라우팅 Router(config)#router ospf 10 Router(config-router)#network 211.255.20.0 0.0.0.255 area 0 Router(config-router)#network 211.255.30.0 0.0.0.255 area 0 Router(config-router)#network 211.255.10.0 0.0.0.255 area 0
동적 NAT 설정
1.사설IP 주소 범위 설정Router(config)#access-list 식별자 번호(1~99) permit 출발지IP 와일드마스크2.공인IP 주소 범위 지정
Router(config)#ip nat pool 풀이름 시작IP주소 끝IP주소 netmask 서브넷마스크
시작IP 주소 ~ 끝IP 주소: 네트워크 주소와 브로드 캐스트 주소는 생략한다.3.사설IP 주소와 공인IP 주소 맵핑
Router(config)#ip nat inside source 식별자번호(1~99) pool 풀이름4.적용
Router(config)#int 인터페이스 번호 Router(config-if)#ip nat inside Router(config-if)#int 인터페이스 번호 Router(config-if)#ip nat outside5.확인
Router#show ip nat translations
동적 NAT 실습
R1>
Router(config)#int g0/1 Router(config-if)#ip add 192.168.10.1 255.255.255.0 Router(config-if)#no sh Router(config-if)#int s0/1/0 Router(config-if)#ip add 211.255.10.1 255.255.255.0 Router(config-if)#no sh // 라우팅 Router(config)#router ospf 10 Router(config-router)#network 211.255.10.0 0.0.0.255 area 0 // 사설IP 주소 범위 설정 Router(config)#access-list 1 permit 192.168.10.0 0.0.0.255 // 공인IP 주소 범위 지정 Router(config)#ip nat pool TEST 211.255.10.1 211.255.10.254 netmask 255.255.255.0
- 맵핑 방법 1(주소 풀을 사용)
// 사설IP 주소와 공인IP 주소 맵핑 Router(config)#ip nat inside source list 1 pool TEST
- 맵핑 방법 2(단일 IPv4 주소 사용)
// 사설IP 주소와 공인IP 주소 맵핑 (Interface Number 이용) Router(config)#no ip nat inside source list 1 pool TEST Router(config)#no ip nat pool TEST 211.255.10.1 211.255.10.254 netmask 255.255.255.0 Router(config)#ip nat inside source list 1 int s0/0/0
- 이전에 설정헸던
pool name을 삭제 합니다.사설 IP주소와공인 IP주소를pool name대신interface number로 새로 매핑 해줍니다.- 다시 각각의
interface에inside와outside를 설정 해줍니다.- 이처럼
사설 IP주소와공인 IP주소룰 맵핑할 때pool name을 사용하지 않고Interface Number를 이용해도사설 IP주소와공인 IP주소간에 맵핑 가능 합니다.// 적용 Router(config)#int g0/1 Router(config-if)#ip nat inside Router(config-if)#int s0/1/0 Router(config-if)#ip nat outside // 확인 PC> ping 211.255.20.100 // 반드시 ping test 후에 nat table 확인 해야됨 Router#show ip nat translations icmp 211.255.10.1:21 192.168.10.100:21 211.255.20.100:21 211.255.20.100:21 icmp 211.255.10.1:22 192.168.10.100:22 211.255.20.100:22 211.255.20.100:22 icmp 211.255.10.1:23 192.168.10.100:23 211.255.20.100:23 211.255.20.100:23 icmp 211.255.10.1:24 192.168.10.100:24 211.255.20.100:24 211.255.20.100:24 icmp 211.255.10.2:5 192.168.10.200:5 211.255.20.100:5 211.255.20.100:5 icmp 211.255.10.2:6 192.168.10.200:6 211.255.20.100:6 211.255.20.100:6 icmp 211.255.10.2:7 192.168.10.200:7 211.255.20.100:7 211.255.20.100:7 icmp 211.255.10.2:8 192.168.10.200:8 211.255.20.100:8 211.255.20.100:8R2>
Router(config)#int g0/0 Router(config-if)#ip add 211.255.20.1 255.255.255.0 Router(config-if)#no sh Router(config-if)#int g0/1 Router(config-if)#ip add 211.255.30.1 255.255.255.0 Router(config-if)#no sh Router(config)#int s0/1/0 Router(config-if)#ip add 211.255.10.2 255.255.255.0 Router(config-if)#no sh // 라우팅 Router(config)#router ospf 10 Router(config-router)#network 211.255.10.0 0.0.0.255 area 0 Router(config-router)#network 211.255.20.0 0.0.0.255 area 0 Router(config-router)#network 211.255.30.0 0.0.0.255 area 0
NAT Overload(PAT) 실습
R1>
Router(config)#int g0/1 Router(config-if)#ip add 192.168.10.1 255.255.255.0 Router(config-if)#no sh Router(config-if)#int s0/1/0 Router(config-if)#ip add 211.255.10.1 255.255.255.0 Router(config-if)#no sh // 라우팅 Router(config)#router ospf 10 Router(config-router)#network 211.255.10.0 0.0.0.255 area 0 // 사설IP 주소 범위 설정 Router(config)#access-list 1 permit 192.168.10.0 0.0.0.255 // 공인IP 주소 범위 지정 Router(config)#ip nat pool TEST 211.255.10.1 211.255.10.254 netmask 255.255.255.0
- 맵핑 방법 1(주소 풀을 사용)
// 사설IP 주소와 공인IP 주소 맵핑 (pool name 이용) Router(config)#ip nat inside source list 1 pool TEST overload
- 맵핑 방법 2(단일 IPv4 주소 사용)
// 사설IP 주소와 공인IP 주소 맵핑 (Interface Number 이용) Router(config)#no ip nat inside source list 1 pool TEST overload Router(config)#no ip nat pool TEST 211.255.10.1 211.255.10.254 netmask 255.255.255.0 Router(config)#ip nat inside source list 1 int s0/0/0 overload
- 이전에 설정헸던
pool name을 삭제 합니다.사설 IP주소와공인 IP주소를pool name대신interface number로 새로 매핑 해줍니다.- 다시 각각의
interface에inside와outside를 설정 해줍니다.- 이처럼
사설 IP주소와공인 IP주소룰 맵핑할 때pool name을 사용하지 않고Interface Number를 이용해도사설 IP주소와공인 IP주소간에 맵핑 가능 합니다.PAT는동적 NAT설정 부분에서 마지막에overload키워드를 추가 해줘야 합니다.// 적용 Router(config)#int g0/1 Router(config-if)#ip nat inside Router(config-if)#int s0/1/0 Router(config-if)#ip nat outside // 확인 PC> ping 211.255.20.100 // 반드시 ping test 후에 nat table 확인 해야됨 Router#show ip nat translations Pro Inside global Inside local Outside local Outside global icmp 211.255.10.5:33 192.168.10.200:33 211.255.20.100:33 211.255.20.100:33 icmp 211.255.10.5:34 192.168.10.200:34 211.255.20.100:34 211.255.20.100:34 icmp 211.255.10.5:35 192.168.10.200:35 211.255.20.100:35 211.255.20.100:35 icmp 211.255.10.5:36 192.168.10.200:36 211.255.20.100:36 211.255.20.100:36 icmp 211.255.10.5:41 192.168.10.100:41 211.255.20.100:41 211.255.20.100:41 icmp 211.255.10.5:42 192.168.10.100:42 211.255.20.100:42 211.255.20.100:42 icmp 211.255.10.5:43 192.168.10.100:43 211.255.20.100:43 211.255.20.100:43 icmp 211.255.10.5:44 192.168.10.100:44 211.255.20.100:44 211.255.20.100:44
동적 NAT와 다르게 여러개의사설IP 주소들이 하나의공용IP로 변환되고 있다.공인IP 주소뒤에 콜론(:)다음에 오는 숫자는 포트 번호를 의미한다.NAT Overload는 하나의공인IP 주소로 변환되기 때문에공인IP가 다시사설IP 주소로 변환되는 경우 식별을 하기 위해서 포트번호를 사용한다.R2>
Router(config)#int g0/0 Router(config-if)#ip add 211.255.20.1 255.255.255.0 Router(config-if)#no sh Router(config-if)#int g0/1 Router(config-if)#ip add 211.255.30.1 255.255.255.0 Router(config-if)#no sh Router(config)#int s0/1/0 Router(config-if)#ip add 211.255.10.2 255.255.255.0 Router(config-if)#no sh // 라우팅 Router(config)#router ospf 10 Router(config-router)#network 211.255.10.0 0.0.0.255 area 0 Router(config-router)#network 211.255.20.0 0.0.0.255 area 0 Router(config-router)#network 211.255.30.0 0.0.0.255 area 0
NAT 변환 테이블 확인 명령어
Router#show ip nat translationNAT 테이블 초기화 명령어
outer#clear ip nat translation * Router#clear ip nat translation inside 172.18.3.2 Router#clear ip nat translation outside 192.168.1.10NAT 테이블 통계 정보 확인 명령어
Router#show ip nat statisticsTotal translations: 8 (0 static, 8 dynamic, 8 extended) Outside Interfaces: Serial0/0/0 Inside Interfaces: GigabitEthernet0/0 Hits: 54 Misses: 64 Expired translations: 44 Dynamic mappings:
총 활성 변환 수,NAT 구성 매개 변수,풀의 주소수 및할당된 주소 수에 대한 정보를 표시합니다.NAT 테이블 통계 정보 확인 명령어
Router#clear ip nat statistics