NAT
Network Address Translation
[ NAT (Network Address Translation) ]
- 네트워크 주소 변환 기술
- 네트워크의 사설 IP Address를 공인IP Address로 변환하거나 그 반대로 변환하는 기술
- 한정된 공인 IP Address를 효율적으로 사용하고 내부 네트워크를 보호하기 위한 기술
- 인터넷에 연결된 장치들이 제한된 공인 IP Address를 공유할 수 있도록 해줌
- 사설 IP를 공인망에서 사용 불가
- NAT는 기본적으로 방화벽 역할을 함 (내부에서 외부로 접근은 가능 // 외부에서 내부 접근은 불가)
[ NAT 사용하는 이유 ]
1) 공인 IP Address의 부족 문제 해결
공인 IP Address는 한정된 자원, NAT는 하나의 공인 IP Address를 사용해 여러 내부 장치가 인터넷에 접속하도록 함
2) 내부 네트워크의 보안성 강화
내부 IP Address를 외부 네트워크에 노출하지 않기 때문에 보안이 강화됨, 외부에서 내부 네트워크를 직접적으로 공격(접근) 할 수 X
3) 효율적인 네트워크 관리
회사나 가정에서 여러 기기가 하나의 공인 IP를 통해 인터넷에 접속할 수 있어 네트워크 관리가 편리
NAT는 주로 Router에 설정되며, 두 가지 역할을 함
- 출발 패킷의 변환
내부 장치가 인터넷으로 데이터를 보낼 때, Router는 내부 IP Address를 자신의 공인 IP Address로 변경
- 도착 패킷의 변환
외부에서 오는 응답 패킷은 공인 IP Address로 도착 Router는 이를 내부 IP Address로 다시 변환하여 올바른 장치에 전달
< do wr 저장하고 저장한 상태로 되돌아가고 싶을 때 >
Router#erase startup-config
Router#reload
System configuration has been modified. Save? [yes/no]:no
STATIC NAT
Static Network Address Translation
[ Static NAT ]
- 내부 IP Address와 공인 IP Address를 1:1로 매핑, 고정된 IP Address를 필요로 하는 경우에 사용됨
- PC에서 외부 Router로 통신은 가능하지만, 외부 Router에서 PC로 통신은 불가
Router(config)#ip nat [inside] source static [192.168.10.2] [1.1.12.2]
사설 ~10.2 PC와 공인 ~12.2 네트워크 mapping
Router(config)#ip nat [inside] source static [192.168.10.3] [1.1.12.3]
사설 ~10.3 PC와 공인 ~12.3 네트워크 mapping
Router(config)#int fa0/0
Router(config-if)#ip nat inside
내부 네트워크 인터페이스 적용
Router(config-if)#int s0/0/0
Router(config-if)#ip nat outside
외부 네트워크 인터페이스 적용
<NAT table 확인>
Router(config)#do sh ip nat trans
<NAT table 삭제>
Router(config)#do clear ip nat trans *
DYNAMIC NAT
Dynamic Network Address Translation
[ Dynamic NAT ]
- 내부 IP Address를 변환할 때 사용할 공인 IP Address를 복수 설정해두고, 동적 mapping
- 결국 1:1로 mapping되는 건 동일
- PC에서 외부 Router로 통신은 가능하지만, 외부 Router에서 PC로 통신은 불가
Router(config)#ip nat pool [cisco] [1.1.12.3] [1.1.12.254] [netmask 255.255.255.0]
[Start Address] [End Address]
이름이 [cisco[인 공인 IP Address 범위 설정
내부 네트워크가 인터넷과 통신할 수 있도록 변환해 줄 외부용 공인 IP 주소 범위 지정
Router(config)#access-list 1 permit 192.168.10.0 0.0.0.255
사설 IP Address Pool (ACL를 만들어 NAT 변환 대상이 되는 사설 네트워크 범위 지정 리스트 허용 설정)
Router(config)#ip nat [inside] source [list 1] pool [cisco]
공인 IP Address Pool과 사설 IP Address Pool mapping
(ACL 1에서 지정한 192.168.10.x 범위의 IP를 cisco 공인 IP Pool(1.1.12.3 ~ 1.1.12.254)과 mapping)
Router(config)#int fa0/0
Router(config-if)#ip nat inside 내부 네트워크 인터페이스 적용
Router(config-if)#int s0/0/0
Router(config-if)#ip nat outside 외부 네트워크 인터페이스 적용
(1) 내부 장치의 요청
(2) NAT 변환
(3) 외부 네트워크로 전달
(4) 응답 패킷 변환
(5) 응답 전달
<결과>
내부 네트워크(192.168.10.0/24)가 공인 IP(1.1.12.3 ~ 1.1.12.254)로 변환되어 외부 인터넷에 접속 가능
외부에서는 내부 네트워크의 사설 IP를 볼 수 없기 때문에 보안 강화
PAT
Port Address Translation

[ PAT (Port Address Translation, 포트 주소 변환) ]
- Static/Dynamic NAT : 보안성은 향상되지만 IP 절약은 X (PC:IP 1:1 mapping -> PAT )
- PAT : 여러 내부 IP Address가 하나의 공인 IP Address를 공유
- 이를 위해 장치별로 포트를 다르게 설정하여 구분
- 공인 IP 하나만 있으면 여러 대의 PC mapping 가능 (→ IP 절약 가능)
Router(config)#ip nat pool cisco [1.1.12.3] [1.1.12.3] [net 255.255.255.0]
내부 네트워크가 NAT 변환 시 사용할 공인 IP를 지정
Router(config)#access-list 1 permit 192.168.10.0 0.0.0.255
ACL을 만들어 NAT 변환 대상이 될 사설 IP 범위를 지정
Router(config)#ip nat inside source list 1 pool cisco [overload]
(overload 미입력시 Dynamic NAT 설정됨으로 유의 필요)
Router(config)#int fa0/0
Router(config-if)#ip nat inside 내부 네트워크 인터페이스 적용
Router(config-if)#int s0/0/0
Router(config-if)#ip nat outside 외부 네트워크 인터페이스 적용
<결과>
단일 공인 IP Address(1.1.12.3)를 여러 사설 IP Address와 공유하여,
내부 네트워크의 모든 장치가 인터넷에 접속할 수 있도록 만드는 NAT/PAT 구성
공인 IP Address가 부족할 때, 하나의 공인 IP를 여러 장치가 공유하도록 하기 위해 사용
(예를 들어, 집에서 Wi-Fi에 연결된 모든 장치(스마트폰, 노트북 등)가 동일한 공인 IP를 사용해 인터넷에 접속하는 경우)
DHCP 동작 : 4-WAY-HANDSHAKE
[ DHCP 동작 : 4-way-handshake ]
4단계 과정을 거쳐서 Client에게 IP Address를 할당
1) DHCP Discover - Client → Server에게 'Discover' message 전송 (IP 임대 요청 시작)
2) DHCP Offer - Server → Client에게 'Offer' message 전송 (IP 임대 응답)
3) DHCP Request - Client → Server에게 'Request' message 전송 (IP 임대 최종 요청)
4) DHCP Ack - Server → Client에게 'Ack' message 전송 (IP 임대)
★ 암기
사설 IP Address
- Class A : 10.0.0.0 ~ 10.255.255.255 (10.0.0.0 /8)
- Class B : 172.16.0.0 ~ 172.31.255.255 (172.16.0.0 /12)
- Class C : 192.168.0.0 ~ 192.168.255.255 (192.168.0.0 /16)
[ 포트 포워딩(Port Forwarding) ]
- Router가 특정 포트를 기반으로 트래픽을 내부 네트워크의 특정 장치로 전달하도록 설정
- 외부 네트워크(인터넷)에서 특정 장치나 서비스를 내부 네트워크의 특정 장치로 연결하도록 해주는 기술
- 일반적으로 내부 네트워크(사설 IP)는 인터넷(공인 IP)에서 직접 접근할 수 없음
하지만 내부 장치에서 실행 중인 서비스(예: 게임 서버, 웹 서버 등)에 외부에서 접근할 필요가 있을 때 포트 포워딩을 사용
[ Routing Protocol ]
<Best Path (최적의 경로)>
네트워크 라우팅에서 여러 경로 중 가장 적합한(가장 효율적이고 최적화된) 경로를 선택하는 과정 또는 그 결과
(Best Path만 Routing table에 올라감)
<Routing Table>
어떤 목적지로 가기 위해서 어떤 경로로 가야 하는지 알 수 있는 네트워크 지도
<Routing Protocol>
목적지 네트워크로 가는 경로를 알아내기 위해, 최적의 경로를 산정하기 위해 사용하는 Protocol
Routing Protocol이 설정되지 않으면 자신과 직접 연결된 주소만 Routing Table에 보임
각 Router는 서로의 주소를 알아야 통신 가능 (한쪽의 Router만 상대방 Router의 주소를 알고 있을 경우 통신 불가능)
SWITCH와 ROUTER 비교

Switch는 목적지 MAC Address가 테이블에 없을 때 Flooding을 하고
Router는 목적지 IP Address가 라우팅 테이블에 없을 때 Drop 시킨다.
* Flooding : Flooding은 네트워크에 있는 장치의 MAC Address를 학습하기 위한 과정
(=프레임을 받은 포트를 제외하고 모든 포트로 프레임을 Broadcast 하는 동작)
ROUTING PROTOCOL

[ Routing Protocol ]
Router(config)#do sh ip route
S 192.168.10.0/24 [1/0] via 1.1.12.1
[1/0] via 2.2.12.1
=> 기본 Routiung 하면 Routing 같은 대역에 두 개가 올라옴
Best Path 만들기 위해 한 포트 metric 값을 3으로 지정 (3이 되면 Routing Table에서 사라짐, Default=1)
Router(config)#ip route 192.168.10.0 255.255.255.0 2.2.12.1 [3]
Router(config)#do sh ip ro
S 192.168.10.0/24 [1/0] via 1.1.12.1
=> 하나의 Best Path만 남음
올라온 포트를 shutdown 시키면?
Router(config)#do sh ip ro
S 192.168.10.0/24 [3/0] via 2.2.12.1
=> 사라졌던 Routing Table이 올라옴
< CHECK POINT! >
✔ metric 값 = Routing Protocol에서 최적의 경로를 선택하기 위한 기준값 (값이 낮을수록 우선순위)
✔ metric 값이 동일하면 Router는 Load Balencing을 통해 트래픽 분산
✔ Routing Protocol 별 metric 특징
- RIP : hop count
- OSPF : cost, 대역폭
- EIGRP : 복합 요소 (K5값)
✔ K1 : 대역폭(BW) K2 : 부하 (Load) K3 : 지연(Delay) K4 : 신뢰성(Reliability) K5 : 확장된 신뢰성(Reliability + K4 보정값)
RIP - DYNAMIC ROUTING
Routing Information Protocol

[ Dynamic Routing - RIP ]
- 자신의 Router에 연결된 네트워크 대역만 RIP로 등록 / 서브넷마스크 미설정
- 최대 홉수 0-15까지 / 라우터 15대 이하의 네트워크 사용 가능
Router1(config)#router rip
Router1(config-router)#version 2
Router1(config-router)#network 192.168.10.0
Router1(config-router)#network 1.1.12.0
Router1(config-router)#no auto-summary
Router2(config)#router rip
Router2(config-router)#version 2
Router2(config-router)#network 192.168.20.0
Router2(config-router)#network 1.1.12.0
Router2(config-router)#no auto-summary
Router는 Next Hop 카운트로만 Best Path를 결정함
Next Hop 수가 같으면 이중 경로를 잡게 됨
DEBUG
[ Debug ]
Router#debug ip rip
실시간 동작을 모니터링하는 명령어
RIP 패킷의 송수신 상황과 Routing Table 업데이트 과정을 실시간으로 확인 가능
<Routing table 삭제 명령어>
Router#clear ip ro *
동적 할당을 한 경우 Routing Table이 다시 올라와서 삭제 안 될 수 있음, 정작 할당 시에만 사용