NAT

2021. 7. 13. 18:33Layer7/Layer7_Network

 

사설 IP란,

사설 네트워크에서만 사용이 가능한 IP주소로, 인터넷에서 인식되지 않는다.
보통 학교나 집, 공공 와이파이 등에 사용된다.



 

사설 IP가 필요한 이유는

사실은 2015년에 이미 사용이 가능한 IPv4 주소 공간이 모두 고갈되었다. 이를 극복하기 위한 방안으로 사설 IP주소가 등장하였다.

핸드폰, 컴퓨터와 같이 전 세계에 있는 모든 전자기기에 각각 하나의 IP 주소를 부여할 수 있는 만큼의 IP 주소가 존재하지 않으므로 사설 IP를 사용해야 한다고 할 수 있다. 따라서 사설 IP를 사용하면 IP 주소의 낭비를 줄일 수 있다.



예를 들어, 학교와 같은 한정된 공간 내에서 네트워크를 구축한다고 가정하자. 교내에 있는 모든 컴퓨터에 고유한 공인 IP 주소도 부여할 수 있지만, 그렇기에는 전 세계적으로 사용이 가능한 약 4억 개의 IP주소를 전 세계에 있는 모든 학교와 회사, 집에 있는 모든 전자기기에 부여하기에는 너무나도 부족하다. (IP주소의 낭비도 심각할 것이고)
이럴 때는 하나의 사설 네트워크를 구축한 뒤 그 사설 네트워크, 즉 교내에 있는 컴퓨터들에게 각각 하나의 사설 IP를 주면 실제로 ISP로부터 부여받는 공인 IP주소를 하나로 줄일 수 있다.
다시 말해, 하나의 큰 사설 네트워크에 하나의 공인 IP만 부여하고, 사설 네트워크 내의 호스트들은 모두 하나의 사설 IP를 가지게 된다. 이후, NAT 기술로 사설 네트워크와 연결하여 인터넷에 접속할 수 있게 된다.
사설 네트워크 내에서는 모든 호스트들이 서로 통신이 가능하지만, 사설 IP 주소의 특성상 외부 (인터넷 등)에 접속할 수 없다.

사설 IP 주소의 의의는 중복된 IP를 사용할 수 있게 만드는 것. 즉, 같은 IP주소를 여러 사용자가 사용할 수 있게 하는 것이다. 사설 IP는 외부에 접속할 수 없으므로 충돌이 일어날 수 없어 사설 IP는 해당 사설 네트워크 내에서만 고유하면 된다.

중복을 허용하되, 충돌은 일어날 수 없게 함.



사설 IP는 범위가 정해져 있어 집집마다 주소가 같을 수 있다. 대표적인 예로 192.168.0.1과 같은 주소가 있다.
아마도 대부분의 가정집에서 C클래스 사설 네트워크를 사용할 것이고, IP주소를 보면 대부분이 192.168.0.0/24 네트워크에 속해 있을 것이다.

원래 공인 IP가 서로 같으면 충돌이 발생할 수 있으나, 사설 IP는 인터넷에서 인식되지 않으므로 충돌이 발생하지 않는다. 다시 말해, 사설 네트워크 내에서만 사용이 가능한 IP주소이므로, 인터넷에 접속하려고 할 때 NAT이라는 기술로 사설 IP를 ISP로부터 부여받은 공인 IP로, 공인 IP를 사설 IP로 변환해 줄 필요가 있다.




충돌이 일어나지 않는 까닭을 비유해서 설명하자면, 집에서 신고 있는 실내화를 사설 IP라고 하고, 밖에서 신는 운동화를 공인 IP에 비유할 수 있다.
집에서 나가서 운동화를 벗을 일이 생길 수 있는데, 이때 남들과 신발이 똑같으면 어떤 게 누구의 것인지를 모르는 곤란한 상황이 발생할 수 있다.
반면, 집에서 신고 있는 실내화는 남들이 자기 자신들의 집에서 신고 있는 실내화와 같아도 상관없다. 어차피 실내화를 신고 만날 일도 없어 누구의 것인지 헷갈릴 일도 없을 것이다. 단, 집 안에서 서로 같은 실내화가 없어야 한다.

따라서 공인 IP는 외부에서 사용이 가능하며, 외부에서 사용하기 때문에 구별이 가능해야 한다.
반면, 사설 IP는 내부에서만 사용하기 때문에 집마다 다 같아도 상관 없다. 같은 사설 네트워크 내에서만 충돌이 발생하지 않으면 된다. 단, 인터넷에 이 상태로 바로 접속할 수 없으며, 인터넷에 접속하려면 내부에서만 사용이 가능한 IP를 외부에서 사용이 가능한 공인 IP로 바꿔주어야 한다.



 

사설 IP 주소의 범위는


A 클래스 : 10.0.0.0 – 10.255.255.255 (호스트 수 : 16,777,216)
B 클래스 : 172.16.0.0 – 172.31.255.255 (호스트 수 : 1,048,576)
C 클래스 : 192.168.0.0 – 192.168.255.255 (호스트 수 : 65536)

위와 같다.




 

NAT이란,


Network Address Translation을 뜻하며, 사설 IP 주소, 포트 번호, 출발지 IP 또는 목적지 IP를 공인 IP 주소, 포트 번호, 출발지 IP 또는 목적지 IP로 변환한다.
NAT이 필요한 까닭은 사설 IP가 인터넷에서 사용될 수 없기 때문이다. 이때 하나의 공인 IP로 변환할 필요가 있으며, 이를 통해 인터넷에 접속할 수 있다. 앞서 말했듯이, 사설 IP는 고유성이 없지만, 공인 IP를 사용하려면 공인 IP들 중에서 그 주소가 유일해야 한다.

NAT은 공개 네트워크와 사설 네트워크 사이에 위치해 있다. 사설 네트워크에서 인터넷으로 나가는 각종 요청과 응답에 적혀 있는 출발지 사설 IP와 포트를 라우터가 가진 고유한 공인 IP로 변환한다. 반대로 인터넷으로부터 정보가 들어오면 면 인터넷에서 접근이 가능한 집에 있는 라우터의 공인 IP를 원래 요청을 보낸 컴퓨터의 사설 IP와 포트로 수정하여 포워딩하는 역할을 한다.

공인 IP (라우터의 IP): 11.11.11.1
사설 IP (컴퓨터의 IP): 192.168.0.1

요청이 공개 네트워크에서 사설 네트워크로 들어올 때 NAT: 11.11.11.11 -> 192.168.0.1
요청이 사설 네트워크에서 공개 네트워크로 나갈 따 NAT: 192.168.0.1 -> 11.11.11.11




 

NAT의 종류

 

Static NAT

NAT 테이블에서 하나의 사설 IP가 하나의 공인 IP에 1:1 매핑되는 것이다.
즉, 사설 IP가 192.168.0.1인 컴퓨터의 공인 IP는 항상 11.11.11.1로 고정되어 있으며, 192.168.0.2인 스마트폰도 11.11.11.2로 고정되어 있다.

일반적으로 내부 호스트를 숨기고자 할 때 사용한다.


Dynamic NAT

적당한 양의 공인 IP 주소를 NAT Pool (공인 IP 주소의 범위)로 만든다. 이때 내부에서 외부로 통신할 때 동적으로 사설 IP를 NAT Pool에서 정의된 공인 IP 주소로 변환한다.

하나의 공인 IP를 여러 호스트가 사용할 수도 있어서 이 방식은 사설 네트워크에서 호스트가 많아 1:1 매핑시킬 수 없을 때 이용한다.


PAT Port Address Translation

사설 네트워크의 모든 호스트들이 하나의 공인 IP를 사용하여 통신한다. 이때, 각 호스트를 구별하기 위해 TCP/UDP 출발지 포트를 기록하여 통신한다.

192.168.0.1 -> 11.11.11.11:1000
192.168.0.2 -> 11.11.11.11:1001
192.168.0.3 -> 11.11.11.11:1002

포트 번호를 기록함으로써 하나의 공인 IP 주소를 사용하더라도 다수의 사용자가 이를 공유할 수 있다.
포트 번호의 수는 총 2^16, 즉 65536이므로 하나의 공인 IP만을 사용하지만 약 6만 개의 호스트를 수용할 수 있어 효율적이다.



 




'Layer7 > Layer7_Network' 카테고리의 다른 글

Digital Forensic - Network  (0) 2021.08.04
TCP/IP 소켓 프로그래밍 (with C언어)  (0) 2021.06.11