본문 바로가기

OSI 7계층/[LAYER 3] 네트워크 계층

NAT(Network Address Translation) 통신과정 끝판왕(feat. 총정리)

안녕하세요 런잇입니다!

요즘 무더위가 계속해서 기승을 부리고 있는데

그러나!! 이 무더운 여름날씨도 우리를 방해할 수 없죠

오늘은 NAT의 전체 통신과정에 대해서 설명하는 끝판왕을 해보도록 하겠습니다.

지금부터 시작합니다!!!

 

 NAT 최신 총정리 끝판왕 최종보스!!! It's NAT Time!!!

 

1. NAT 너란녀석... 참 고맙다...

우리가 인터넷에서 사용할 수 있는 IP는 한정적입니다.

만약 NAT 기능이 없었다면 전 세계인구가 인터넷을 하려한다면 우리는 엄청난 비용을 지불하고 인터넷을 사용해야 했을 것입니다.

하지만 NAT가 있기에 우리는 그나마 IP에 제한을 받지 않고 인터넷을 사용할 수 있게 된 것이죠! NAT가 없었으면 정말... 참 고마운 녀석이죠...

지난번 우리는 NAT의 종류를 알아보았는데 오늘은 대표적으로 1:1 NAT와 N:1 PAT의 통신과정을 보면서 총 정리를 해볼까합니다.

그림을 보면서 쉽게 이해할 수 있지 않을까 싶습니다!ㅎㅎ

 

2. 1:1 NAT

먼저 1:1 NAT입니다 1:1은 사설IP 1개당 공인IP 1개로 매칭시켜서 NAT를 시켜주는 것입니다.

 

1) 여기 3대의 PC 중 192.168.0.1의 사설 IP를 가진 PC가 DNS 서버 168.126.63.1로

DNS 쿼리(www.naver.com의 IP주소를 물어보는 것)를 하려고 하고 있습니다.

 

2) 192.168.0.1은 DNS서버로 가던 도중 중간에 NAT를 시켜주는 Firewall이란 녀석을 만나게 됩니다.

Firewall : 이봐 192.168.0.1친구 자네는 그 상태로는 Internet으로 나갈 수 없어! 그렇게 나갔다간 길을 잃게 될 거야...

192.168.0.1 : 그럼 어떻게 해야하죠??

Firewall : 걱정마 내가 도와줄게 1.254.223.4 이 명찰을 가지고 가. 그럼 괜찮을 거야!

Firewall은 NAT기능을 가지고 있는데 NAT Table을 살펴보니 192.168.0.1을 1.254.223.4로 변환해 주라고 되어 있습니다.

따라서 192.168.0.1은 Firewall을 통과하게 되면 1.254.223.4로 IP가 바뀌게 되는 것이죠

 

3) DNS Server 168.126.63.1은 1.254.223.4로부터 DNS쿼리가 온 것으로 생각합니다. 그렇기 때문에 이에 대한 응답도 1.254.223.4로 보내줘야 한다고 생각합니다.

 

4) DNS Server 168.126.63.1로부터 온 응답패킷을 받은 Firewall은 1.254.223.4에게 온 패킷이란 것을 확인하고 NAT Table을 참조하여 1.254.223.4가 192.168.0.1이란 것을 알게 되죠

Firewall : 1.254.223.4 너는!! 아까 지나간 192.168.0.1 너구나! 잘 갔다 왔나보네~!
 

5) 그렇게 Firewall은 1.254.223.4로 온 패킷을 192.168.0.1에게 전달해 줍니다.

아주 쿨한 192.168.0.1은 감사의 표시도 잊지 않네요!^.^

 

그런데 여기서 잠깐!!!!

1:1 NAT의 경우에는 사설 IP와 공인 IP가 1:1로 매칭이 되어 있기 때문에 내부에서 외부로 먼저 나가는 경우와 달리

외부에서 내부로 먼저 들어오는 경우도 가능합니다.

 

 

1) 외부의 PC 23.54.133.7이란 녀석이 공인IP 1.254.223.6으로 원격접속을 시도하려 하고 있습니다.

 

2) Firewall은 1.254.223.6에게 온 패킷을 NAT Table을 참조하여 1.254.223.6이 누구인지를 찾습니다.

Firewall : 흠... 1.254.223.6? 어디서 많이 들어본 이름인데... 아!! 192.168.0.3 너구나!!!

 

3) 그렇게 192.168.0.3은 23.54.133.7과 통신을 시작할 수 있게 됩니다.

192.168.0.1이나 192.168.0.3이나 이녀석들은 다들 쿨하게 대답을 잘하네요^.^

 

이처럼 1:1 NAT에서는 특정 공인 IP로 들어오는 것을 사설IP에 연결 해줄 수 있습니다.

하지만 N:1 PAT에서는 이러한 통신이 불가하죠... 왜냐!! 아래 PAT를 이제 얘기해보죠.

 

2. 1:N PAT

N:1 PAT는 여러개의 사설 IP가 1개의 공인 IP를 사용하는 것

즉 여러개의 사설 IP를 1개의 공인IP로 NAT시켜주는데 Port pool을 이용하여 NAT를 시켜주는것을 의미합니다.

무슨말이냐구요? 아래 그림들을 한번 보시죠

 

1) 이번에는 192.168.0.1이 Google DNS 서버로 질문을 하려고 합니다.

 

2) Firewall은 192.168.0.1에 대해 NAT table을 참조하여 NAT를 시켜줍니다.

Firewall : 이런이런 또 너군... 근데 요즘 워낙 공인 IP가 부족난이라 NAT정책이 바뀌었네... 미안하지만 너에게 많은 자리를 내어줄 수가 없어 60001번자리로 가

여기서 비유)

1:1 NAT에서 공인IP가 버스 1대라면 사설IP 1개당 버스 1대씩 빌려준다

N:1 NAT에서 공인IP가 버스 1대라면 사설 IP 1개당 1대의 버스에서 1개의 자리를 빌려준다

192.168.0.1 : 흠... 좁지만 어쩔수없지 알겠어!!

 

2) 그때 192.168.0.2란 녀석도 Google DNS 서버에 궁금한 것이 생겨 물어보려고 합니다.

 

3) 이번에도 마찬가지로 192.168.0.2에 대해서 NAT Table을 참조하여 공인 IP로 변경 시켜줍니다.

Firewall : 너는 60002번 자리로 가면되! 버스 곧 출발합니다!!

이렇게 192.168.0.1과 192.168.0.2는 각각 201.80.7.22:60001과 201.80.7.22:60002라는 명찰을 차고 Google DNS행 버스를 타고 갑니다.

 

4) Google DNS 서버는 각각 201.80.7.22:60001과 201.80.7.22:60002에서 온 패킷을 처리해 줍니다

 

5) Google DNS 서버로받은 응답을 확인한 Firewall은 다시 NAT Table을 확인합니다.

그리고 현재 어떤 사설 IP가 공인IP:포트를 할당받았는지도 가지고 있는 Table을 가지고 확인합니다.

Firewall : 흠... 어디보자 201.80.7.22:60001이라... 아하!! 192.168.0.1:1000 이녀석이군!

Firewall : 201.80.7.22:60002 이건 또 누구지...? 192.168.0.2:2000 이녀석이구나!

 

6) 이렇게 N:1 PAT기능을 이용하여 여러개의 사설 IP가 한개의 공인 IP로 Portpool을 이용해서 Google DNS와 통신을 하였습니다.

 

N:1 PAT 기능을 사용하면 여러개의 사설IP를 1개의 공인IP로 통신이 가능하기 때문에 우리는 많은 공인 IP를 절약 할 수 있습니다.

 

하지만 1개의 공인 IP를 여러개의 사설 IP가 사용하고 있기 때문에 먼저 내부에서 외부로 나가는 통신이 아닌 먼저 외부에서 공인IP로 통신을 시도하였을 때 중간에서 NAT를 시켜주는 Firewall와 같은 장비에서 어느 사설 IP에게 전달해주어야 할지 알 수가 없습니다. 그래서 PAT의 경우는 외부에서 내부로 먼저 통신을 시도 할 수가 없습니다.

 

3. NAT 이것만은 꼭 기억하자(feat. 이거 모르면 바보)

위에서 우리는 1:1 NAT와 N:1 PAT에 대해서 알아보았습니다.

 

1:1 NAT의 경우에는 외부에서 공인 IP를 찾아 들어 갈 수 있다!

N:1 PAT의 경우에는 외부에서 공인 IP를 찾아 들어 갈 수 없다!

 

따라서 1:1 NAT의 경우에는 외부에서 먼저 찾아들어가야 하는 경우

예를 들어 DAUM의 홈페이지 서버, Google의 DNS 서버, NAVER의 홈페이지 서버 등

사용자가 먼저 접근을 해야하는 경우에 1:1 NAT를 많이 사용합니다.

 

N:1 PAT의 경우에는 다수의 사용자들이 외부로 통신을 해야하는 경우

예를 들어 회사나 학교, 학원 등에서 인터넷을 사용하고 싶을 때 공인IP가 한정적인 경우에 N:1 PAT를 사용하는 것입니다.