2023-05-02 19:47:51

회사에서 인프라 관련된 분들과 이야기를 하다보면 NAT라는 용어를 종종 듣곤 한다. 여기서 NAT란 network address translation의 약자로, 하나의 공인 IP를 여러 개의 사설 IP로 변환해주는 기술을 의미한다. 

 

NAT를 쓰는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트(기기)가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 때문이다. 

 

공인 IP와 사설 IP가 뭔지 모르는 분들도 있을 것이다. 공인(public) IP는 인터넷 서비스 제공사업자에 의해 네트워크 라우터에 할당된 주소이다. 사설(private) IP는 내부 네트워크 상에서 해당 기기에 네트워크 라우터에 의해 할당된 주소다. 

 

인터넷 상에서 누군가 내 PC에 접근하려면 두 개의 주소가 필요하다.

 

1) 공인 IP 주소

2) 사설 IP 주소. 

 

 

1) 일단 내 PC가 연결되어 있는 와이파이를 제공하는 네트워크 라우터의 주소, 즉 공인 IP 주소가 필요하다. 참고로 내가 지금 이 글을 쓰고 있는 카페의 공인 IP 주소는 121.167.202.158이다. findip.kr과 같은 사이트를 통해서 공인 IP 주소를 쉽게 확인할 수 있다. 지금 이 카페의 와이파이에 연결되어 있는 기기에서 이 사이트에 들어가보면, 공인 IP 주소가 모두 같게 나온다. 사실상 공인 IP 주소는 내가 연결하고 있는 와이파이의 공유기에 할당된 주소이다.

 

2) 공인 IP 주소를 통해 공유기까지 찾아왔다면 이제 사설 IP가 필요하다. 그래야 그 공유기에 붙어있는 여러 기기 중 하나를 특정해서 접근할 수 있다. 현재 내 노트북의 사설 IP 주소는 172.30.1.96이다. 윈도우 pc에서 cmd를 열고 ipconfig 명령어를 입력하면 사설 IP 주소를 확인할 수 있다. 

 

 

내 노트북: 172.30.1.96

A님 스마트폰: 172.30.1.97

B님 노트북: 172.30.1.98

D님 태블릿: 172.30.1.99 

 

아마 위와 같이 각 기기마다 사설 IP 주소가 붙어있을 것이다. 이 사설 IP 주소 덕분에 특정 기기에 접근이 가능한 것이다. 

 

사설 네트워크에 속해 있는 다양한 기기들이 인터넷을 이용할 때마다 사설 IP 주소를 공인 IP 주소로 변환하는 일이 이루어진다. 이 사설 IP 주소를 공인 IP 주소로 변환, 공인 IP 주소를 사설 IP 주소로 변환해주는 기술이 바로 NAT이다. 

 

예를 들어 조금 더 설명해보겠다. 

 

만약 172.30.1.96이라는 사설 IP를 부여받은 내 노트북에서 유튜브를 시청한다고 가정해보자. 그런데 사설 IP로는 인터넷을 이용할 수 없다. 공유기는 172.30.1.96에서 youtube.com에 요청한다는 사실을 기록한 후 사설 IP 주소인 172.30.1.96을 공인 IP 주소인 121.167.202.158으로 변환한 후에 유튜브 서버로 영상을 요청한다. 그러면 유튜브 서버는 그 요청을 처리한 후 공인 IP인 121.167.202.158로 보내고, 공유기는 그 요청을 보냈던 사설 IP 주소를 기록해놨던 것에서 찾는다. 172.30.1.96가 찾아질 것이고 그 기기로 그 요청에 대한 응답을 전달한다.   

 

관련 글

- [리눅스] 리눅스에서 공인 IP 주소 알아내는 법