본문 바로가기
IT/네트워크

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

by 신인용 2020. 5. 23.
반응형

 

NAT (Network Address Translation)

 

 

IPv4주소 고갈과 IPv6

 사용 중인 IPv432bit로 표현할 수 있는 IP주소의 개수가 2^32인데, 이것으로 전세계의 모든 host를 커버하지 못한다. 4~5년 전에 ICANNIP주소가 고갈되었다고 발표하였다.

 그래서 IP주소체계를 바꿔서 IP주소를 64bit로 표현하는 IPv6로 사용하자고 하였다. 그런데 이것은 20년 전부터 존재했으나 잘 되지 않고 있다. 2010년 되기 전에도 한창 중국이 커지면서 IP주소 부족 문제가 심각해졌다. 중국에서 IPv6로 가자는 주장이 강했다. 인터넷을 주도하고 있는 나라가 미국인데, 미국은 IP주소를 이미 충분히 가지고 있었기 때문에 급하지 않았다. IP주소의 상당부분을 미국이 가지고 있다. 여기에 NAT이라고 하는 기술이 도입되면서 IP주소 부족문제가 어느정도 해결되어서 IPv6에 대한 절실함이 줄어들었다.

 

 우리나라에서도 NAT이라는 기술을 많이 쓴다. LTE를 사용하는데도 IP가 필요하다. 우리나라의 LTE가입자가 2천만명 될텐데 IP주소를 어떻게 감당할까? 통신사에서 보유하고 있는 IP를 이용하여 NAT를 사용한다.

 

 

 

 

 

 

NAT : Network Address Translation

 만약 138.76.29.7이라는 IP주소가 있고, IP를 필요로 하는 사람은 3명이라고 하자. local network(내부망)에서 임의의 IP주소(10.0.0.1, 10.0.0.2, 10.0.0.3)를 부여한다. 실제 네트워크의 IP주소와 겹치면 안되니 내부망에서만 사용한다. 실제 네트워크로 나갈때는 138.76.29.7로 다시 변환해서 나간다. 내부망의 host들은 transport layerport number로 구분될 수 있다.

 

 정리하자면, 바깥 네트워크에서는 내부망에서 무슨일이 일어나도 신경 안 쓴다. 단지 바깥 네트워크는 IP주소와 port number를 보고 주고받을 뿐이다. 그리고 내부망에서는 각 호스트들은 임의 IP를 부여받고, 임의IP와 port number로 host들을 구분하는 것이다. (port number와 임의 IP를 기록해놓은 table은 라우터가 가지고 있다. 이 table을 이용해 port number를 보고 임의IP에 해당하는 host를 찾아갈 수 있는 것이다.)

 

 우리나라의 LTE, 5G 모두 NAT방식을 사용하고 있다.

 

 

 

 

 

NAT router가 하는 일

1. replace(outgoing) :

 내부망에서 빠져나가는 datagramsrc IPport numberreplace해준다. src IP주소와 port numberNATIP주소와 새로운 port number로 변환해서 내보낸다.

 

2. remember :

 변환한 정보를 table로 가지고 있어야 변환한 datagram에 대한 응답이 왔을 때 다시 원래대로 변환할 수가 있다.

 

3. replace(incoming) :

 바깥 네트워크에서 datagram이 왔다면 다시 replace해야 한다. IP주소와 port number를 보고 table과 비교하여 어떤 host가 받아야 하는지 알아내서 보낸다.

 

 

 

 

 

 

NAT 예제

 바깥으로 나갈때는 138.76.29.7을 사용하고, 내부망에서는 임의 IP를 부여받은 상황.

 

1. 10.0.0.1 hostdatagram을 보낸다. 이때 des IP128.119.40.186이고, port number80이다.

2. NAT router가 이를 변환해준다. des IP는 그대로 두고, source IP는 임의IP에서 원래 IP로 바꾸고, 임의로 할당하게 되는 port number로 변환한다. 그리고 이것을 table에 업데이트한다.

3. datagram을 받은 server는 다시 source IP주소로 datagram을 보낸다.

4. NAT router에서는 des IP주소와 port numbertable과 비교해 다시 변환하여 내부망으로 보내준다.

 

 

 

 

 

 

NAT에 대한 논쟁

- 라우터에서 Layer 3 processing을 해야하니 오버헤드가 생길 수 있다.

- IPv6를 사용하면 완전히 해결 되는데, NAT은 어찌보면 꼼수를 사용한 것이다.

- IP주소가 중간에 바꿔치기 되었기 때문에 인터넷의 철학 중 end-to-end argument를 어긴 것이다.

- P2P가 동작을 하지 않는다. NAT 라우터가 어떻게 설정되었느냐에 따라 달라질 수 있지만, 일반적으로 P2P가 동작을 안한다. P2P는 동등한 관계로 동작하는데 내부망을 한번 거쳐야 하기 때문에 P2P가 동작하는데 문제가 생긴다.

 

 

 

 

 

 

[참고]

Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson

 

반응형

댓글