IP 주소라는 용어를 들어본 적이 있을 것입니다. 아직 개념이 낯설다면 먼저 IP 주소에 대한 기초 글을 읽어보는 것도 좋습니다. 이번 글에서 다룰 NAT(Network Address Translation, 네트워크 주소 변환)를 이해하려면 두 가지 사실을 알아야 합니다. 첫째, IP 주소는 유한한 자원이라는 점. 둘째, 하나의 네트워크 안에서 두 기기가 같은 IP 주소를 가질 수 없다는 점입니다.
문제는 서로 다른 네트워크, 예를 들어 집 안의 네트워크와 전 세계 인터넷에 연결된 컴퓨터들 사이에서 동일한 IP 주소가 중복되거나 네트워크 주소 체계가 호환되지 않는 경우가 필연적으로 발생한다는 것입니다. NAT는 이처럼 IP 주소 부족 문제와, 서로 통신이 필요한 네트워크 간의 비호환 문제를 모두 해결해 준 기술입니다.
대부분의 경우 NAT를 신경 쓸 필요가 없지만, 때로는 인터넷 연결 문제의 원인이 NAT 오류에 있기도 합니다. 따라서 NAT가 무엇이고 어떻게 작동하는지 기본적으로 이해하고 있으면 문제 해결에 큰 도움이 됩니다.
NAT는 어디서 일어날까?
일반 사용자의 경우 NAT는 공유기(라우터)가 담당합니다. 공유기는 인터넷 서비스 제공업체(ISP)로부터 공인 IP 주소를 하나 할당받는데, 이 주소가 인터넷상의 다른 모든 사용자에게 보이는 주소입니다. 반면 집 안 네트워크의 모든 기기에는 사설 IP 주소가 할당되며, 기기들은 이 주소를 사용해 서로 통신합니다.
네트워크 안의 기기가 외부와 통신하려고 하면 공유기가 대리인 역할을 합니다. 공유기는 모두가 볼 수 있는 공인 IP 주소를 가지고 있고, 어떤 사설 IP 주소가 어떤 트래픽을 요청했는지 기록했다가, 응답 패킷이 올바른 기기로 전달되도록 관리합니다.
사설 IP 주소 vs 공인 IP 주소
NAT 유형을 살펴보기 전에 사설 IP 주소와 공인 IP 주소의 차이를 간단히 짚고 넘어가겠습니다.
규약상 특정 범위의 IP 주소는 특정 용도로 예약되어 있습니다. 공인 IP 주소는 공유기나 웹 서버처럼 인터넷에 직접 연결되는 장치를 위한 주소입니다. ISP가 공유기에 공인 IP 주소를 할당하면, 인터넷의 외부에서는 이 주소만 보게 됩니다. 사설 IP 주소는 보통 192.168.0.X 또는 10.1.1.X 같은 형태를 띠지만, 공유기마다 다를 수 있습니다. 사설 주소는 하나의 사설 네트워크 안에서만 고유하면 되기 때문에, 서로 다른 사설 네트워크 사이에서는 거의 항상 같은 주소가 사용됩니다.
공인 IP 주소는 앞서 말했듯 인터넷상의 모든 이에게 보이는 주소입니다. 웹사이트에 접속할 때 브라우저는 해당 사이트의 공인 IP 주소에 연결됩니다. 일반적으로 가정용 공유기는 자신이 시작하지 않은 외부의 접속 요청을 공인 IP 주소를 통해 받아들이지 않습니다. 즉, 친구 공유기의 공인 주소를 입력한다고 해서 그 네트워크 안의 기기에 접근할 수는 없습니다.
하지만 일부 웹 서비스나 기기, 예를 들어 게임 콘솔은 좀 더 관대한 방식이 필요합니다. 바로 이 지점에서 다양한 NAT 유형이 등장합니다. 흔히 발생하는 문제는 사용하려는 서비스에 맞지 않는 NAT 유형이 설정되어 있을 때 생깁니다. 다음에서 NAT 유형을 더 자세히 알아보겠습니다.
NAT의 유형
NAT의 기본 개념은 크게 어렵지 않지만, 실제 작동 방식에는 미묘한 차이가 많습니다. 용도에 따라 적합한 여러 NAT 유형이 존재합니다.
정적 NAT(Static NAT)
정적 NAT는 특정 사설 IP 주소 하나를 특정 공인 IP 주소 하나에 1:1로 매핑하는 방식입니다. 정적 NAT를 사용하면 공인 주소에 매핑된 기기에 외부에서 직접 접근할 수 있습니다.
이 방식은 사설 네트워크에 속해 있으면서 외부에 서비스를 제공하는 웹 서버에 주로 사용됩니다. 정적 매핑을 통해 서버에는 접근할 수 있지만, 서버가 속한 사설 네트워크의 다른 기기에는 접근할 수 없습니다. 반대로 서버 자신은 내부 네트워크의 기기들과 아무 문제 없이 통신할 수 있습니다.
동적 NAT(Dynamic NAT)
동적 NAT는 여러 개의 공인 IP 주소 풀(pool)을 보유하고 있고, 이를 사설 네트워크의 기기들에 동적으로 할당하고 싶을 때 사용합니다.
이 방식은 외부에서 내부 웹 서버에 접근하는 용도가 아니라, 사설 네트워크의 기기가 인터넷이나 외부 자원에 접근할 때 풀 안의 공인 IP 주소를 하나씩 임시로 할당받는 방식입니다.
NAT 오버로드(NAT Overload, PAT)
정적 NAT와 동적 NAT의 요소를 모두 갖춘 NAT 오버로드 방식은 가장 널리 쓰이는 형태로, 대부분의 가정용 공유기가 사용하는 방식입니다. 포트 주소 변환(PAT, Port Address Translation)이라고도 불립니다.
대부분의 경우 공유기에는 공인 IP 주소가 하나만 할당되어 있지만, 네트워크의 모든 기기는 인터넷에 접속하고 싶어 합니다. NAT 오버로드 방식에서 공유기는 자신의 공인 IP 주소와 서버의 주소 사이에 연결을 설정한 뒤, 패킷을 서버로 전송하면서 응답이 돌아올 포트 번호를 함께 지정합니다.
이를 통해 공유기는 어떤 패킷이 사설 네트워크의 어떤 IP 주소로 가야 하는지 구분할 수 있습니다. 이 포트 변환 부분이 바로 PAT에 해당합니다.
업체별 NAT 유형 표기
상황을 더 복잡하게 만드는 것은, 일부 기업들이 자체적인 NAT 분류 기준을 만들어 사용한다는 점입니다. 이는 주로 게임 콘솔에서 볼 수 있는데, 네트워크 테스트를 실행하면 'NAT Type 2'나 'NAT Type D' 같은 표기를 볼 수 있습니다.
이러한 분류는 콘솔이나 기기 제조사마다 다르므로, 각 분류가 정확히 무엇을 의미하는지는 해당 제조사의 공식 문서를 확인해야 합니다.
NAT 문제의 일반적인 해결 방법
대부분의 경우 NAT는 완벽하고 투명하게 작동합니다. 하지만 가끔 오작동을 하거나 방해가 되기도 합니다.
역시 게임 콘솔에서 문제가 발생하기 쉽습니다. 일부 콘솔 서비스는 외부에서 공인 IP 주소로 들어오는 접속 요청을 네트워크가 수락해야 하는데, 표준 NAT 설정은 보통 이를 허용하지 않기 때문입니다. 다행히 NAT의 제한을 완화하고 외부 접속을 허용하기 위해 시도해 볼 수 있는 몇 가지 일반적인 해결책이 있습니다.
먼저 공유기 관리자 페이지에 접속해(사용 설명서 참조) UPnP(Universal Plug and Play)가 켜져 있는지 확인합니다. 이 기능을 사용하면 로컬 네트워크의 애플리케이션이 네트워크 설정을 직접 만질 필요 없이 자동으로 포트를 포워딩할 수 있습니다. 다만 네트워크에 악성코드가 있다면 이 악성코드도 UPnP를 악용할 수 있다는 점에 유의해야 합니다. 이 기능을 사용한다면 기기들을 반드시 검사하고 정리해 두세요.
또한 수동으로 포트 포워딩을 설정하여, 덜 엄격한 연결이 필요한 기기에만 개별적으로 허용하는 방법도 있습니다.
NAT, 이제 어렵게 생각하지 말자
여기까지가 NAT를 이해하기 위해 알아야 할 기본 내용입니다. NAT의 실제 작동 원리는 깊이 들어가면 금방 복잡해지지만, NAT가 큰 그림에서 어떤 역할을 하는지, 그리고 왜 가끔 문제가 생기는지 이해하고 있으면 네트워크 문제가 발생했을 때 어떤 해결책이 통하고 어떤 것이 통하지 않는지도 판단할 수 있습니다.