NAT에 대하여

NAT에 대하여

NAT은 클라우드 환경에서 인프라를 구성하다 보면 쉽게 보이는 단어들이다. 사설망을 유지하면서 외부 인터넷과 단방향으로 연결하려면 어떻게 할지?와 같은 상황에서 NAT 인스턴스를 통해 외부와 연결하는 방법이 있다. NAT이 어떻게 동작하는 건지 간단하게 정리했다.

동작 방식

일단 네트워크를 활용해야 하는 장비는 모두 IP가 필요하다. 그런데, 모든 장비에게 각각의 IP를 부여하면, 하나의 작은 오피스에도 넓은 범위의 IP 주소 범위를 할당해야 한다. 이런 문제를 해결하는 방법이 네트워크 주소 변환(NAT, Network Address Translation)이다.

NAT 역할을 하는 라우터는 실제로 외부에서 보기엔 라우터처럼 보이지 않고, 하나의 IP 주소를 갖는 장비로서 동작한다.

위 이미지를 보면, NAT 안쪽으로는 192.168.1.0/24 에 해당하는 서브넷을 사용하고 있다. 이 주소는 사설망이라고 하고, 전세계적으로 사용되는 사설망 IP 대역이 있다.

  • 10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)
  • 172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)
  • 192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)

위 주소는 수많은 네트워크들이 동일하게 부여받기 때문에, NAT을 넘어서 외부에서는 사용할 수가 없다.

NAT 안쪽을 LAN 밖을 WAN 방향이라고 표현할 수 있다.

192.168.1.2 PC에서 173.194.67.102 호스트로 요청을 보내기 위해서는 192.168.1.1을 할당받은 NAT 인터페이스로 들어가서 NAT이 ISP의 DHCP를 통해 부여받은 IP를 사용해 요청을 보내게 된다.

각 PC가 사설망의 IP 주소를 얻는 과정도 NAT의 [[DHCP]] 서버를 통해 얻게 된다.

구체적인 예시를 생각해보자. 192.168.1.2 PC는 173.194.67.102:80 으로 요청을 보내고 있다. 출발지 PC는 요청에 임의의 포트 번호를 달아 보내게 된다. 여기서는 3345를 할당했다고 가정해보자. 192.168.1.2:3345 형태로 LAN에 데이터그램을 보내면, NAT은 이 데이터그램을 받아, NAT 출발 IP 주소를 NAT의 WAN쪽에 있는 인터페이스의 IP로 바꾸고, 포트번호도 NAT에서 할당 할 수 있는 새로운 출발지 번호로 다시 변경한다. 즉, 192.168.1.2:3345를 67.210.97.1:5505로 바꾼다는 뜻이다. 이 때, 변환된 정보를 저장하기 위해 NAT 변환 테이블(NAT Translation Table)을 사용한다. 이런 TCP 요청을 보내면, 다음과 같은 엔트리가 추가된다.

Protocol LAN WAN
TCP 192.168.1.2:3345 67.210.97.1:5505

서버는 다시 67.210.971:5505에게 응답을 보내게 되고, NAT는 NAT 변환 테이블을 사용해서 다시 원래 IP와 포트번호로 바꿔 LAN 네트워크로 보낸다.

NAT의 포트 번호와 LAN의 장비를 연결해 테이블 엔트리를 작성하기 때문에, 결국 포트 숫자 만큼 동시접속을 허용한다. 2^16, 약 6만개의 동시접속을 허용하는 것이다.

위 방식은 NAT 종류 중 PAT(Port Address Translation) 방식에 해당한다.

사용 이유

  1. IP 주소 절약: 처음 언급한 것처럼, 하나의 공인 IP를 가지고 여러 사설망을 운영함으로써 IP 소비를 줄일 수 있다.
  2. 보안: NAT의 특성상, 요청을 보낸 측의 IP를 숨기는 효과가 있다. 라우터 안쪽의 최종 목적지를 외부에서는 알 수 없다. 따라서, 내부에서 외부로의 요청은 가능하지만, 외부에서 내부로 요청은 불가능하다.

단, NAT에서 포트포워딩을 통해 특정 포트에 대해서 내부로 라우팅을 처리한다면 가능하다.

Author

changhoi

Posted on

2021-10-07

Updated on

2021-10-07

Licensed under

댓글

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×