NAT은 어떻게 사설 주소를 인터넷에 연결하는가

napt port mapping

사설 주소가 인터넷으로 나가는 법

내부망에서 쓰는 사설 IP는 인터넷에서 라우팅되지 않습니다. 그렇다면 사설 주소만 가진 사무실의 컴퓨터들은 어떻게 외부 웹사이트에 접속할 수 있을까요. 그 비밀이 NAT(Network Address Translation), 즉 네트워크 주소 변환입니다. NAT은 내부의 사설 주소를 외부로 나갈 때 공인 주소로 바꿔주고, 돌아오는 응답은 다시 원래의 사설 주소로 되돌려주는 중개 역할을 합니다.

이 변환 덕분에 수많은 내부 장비가 단 하나, 혹은 소수의 공인 주소만으로 인터넷을 함께 쓸 수 있습니다. 공인 IP가 귀하고 비싼 자원이라는 점을 생각하면, NAT은 주소 부족 문제를 푸는 현실적인 해법인 셈입니다. 동시에 내부 구조를 외부에서 들여다볼 수 없게 가리는 부수 효과까지 따라옵니다. 사설 주소가 무엇이고 왜 외부로 라우팅되지 않는지는 서브넷팅 글에서 다룬 내용과 이어집니다.

변환은 어떻게 이뤄지나

NAT의 핵심 동작은 패킷이 경계를 지날 때 주소를 바꿔 적는 것입니다. 다만 무엇을 어떻게 바꾸느냐에 따라 방식이 갈립니다.

일대일로 바꾸는 기본 NAT

가장 단순한 형태는 사설 주소 하나를 공인 주소 하나에 일대일로 대응시키는 것입니다. 내부의 한 장비가 나갈 때 정해진 공인 주소로 바뀌고, 그 공인 주소로 들어오는 응답은 다시 그 장비로 돌아갑니다. 명확하지만, 내부 장비 수만큼 공인 주소가 필요하므로 주소 절약이라는 목적에는 잘 맞지 않습니다.

포트까지 활용하는 NAPT

실제로 가장 널리 쓰이는 방식은 주소와 함께 포트 번호까지 변환하는 NAPT입니다. 여러 내부 장비가 같은 공인 주소를 공유하되, 각 통신을 서로 다른 포트 번호로 구분합니다. 가정용 공유기가 바로 이 방식으로 동작합니다. 집 안의 여러 기기가 하나의 공인 주소로 동시에 인터넷을 쓰면서도 응답이 엉키지 않는 것은, NAT 장치가 포트 번호로 어느 기기의 통신인지 기록해두기 때문입니다.

변환 표라는 핵심 장치

나가는 통신과 들어오는 통신

NAT을 이해할 때 통신의 방향을 구분하면 동작이 훨씬 명확해집니다. 내부 장비가 외부로 먼저 접속하는 나가는 통신은 NAT이 자동으로 처리합니다. 변환 표에 항목을 만들고, 응답이 오면 그 표를 보고 되돌려 보내면 되기 때문입니다. 사용자가 웹사이트를 여는 대부분의 통신이 이 경우에 해당합니다.

반대로 외부가 내부로 먼저 접속하려는 들어오는 통신은 다릅니다. 아직 변환 표에 항목이 없으니 NAT은 그 트래픽을 어디로 보낼지 판단할 근거가 없습니다. 그래서 별도 설정이 없으면 막히게 됩니다. 이 비대칭이 NAT의 동작을 이해하는 핵심이며, 동시에 NAT이 의도치 않게 보안 효과를 내는 이유이기도 합니다.

NAT이 응답을 올바른 내부 장비로 되돌릴 수 있는 것은 변환 표 덕분입니다. 내부 장비가 외부로 통신을 시작하면, NAT 장치는 어떤 사설 주소와 포트가 어떤 공인 주소와 포트로 바뀌었는지를 표에 기록합니다. 나중에 응답이 그 공인 주소와 포트로 도착하면, 표를 뒤져 원래의 사설 주소로 되돌려 보냅니다.

이 표는 통신이 이어지는 동안만 유지되고, 일정 시간 사용이 없으면 항목이 지워집니다. 그래서 통신이 활발할 때는 표가 커지고, 한가할 때는 줄어듭니다. NAT 장치의 성능은 이 표를 얼마나 많이, 얼마나 빠르게 관리할 수 있느냐에 크게 좌우됩니다. 연결이 폭증하면 표가 가득 차 새 통신을 받지 못하는 상황이 생길 수도 있습니다.

외부에서 내부로 들어오려면

NAT은 기본적으로 내부에서 시작한 통신만 매끄럽게 처리합니다. 외부에서 먼저 내부의 특정 장비로 접속하려 하면, NAT 장치는 그 트래픽을 어디로 보내야 할지 알 수 없어 막아버립니다. 변환 표에 해당 항목이 없기 때문입니다. 이 점이 의도치 않은 방화벽 효과를 내어 내부를 보호하지만, 내부에 서버를 두고 외부에 공개해야 할 때는 걸림돌이 됩니다.

이를 풀기 위해 특정 공인 포트로 들어온 트래픽을 미리 정해둔 내부 장비로 넘기도록 규칙을 거는 포트 포워딩을 씁니다. 외부에 서비스를 공개하면서도 나머지는 가리는 절충안입니다. 다만 이렇게 열어둔 통로는 그 자체로 공격 표면이 되므로, 꼭 필요한 만큼만 열고 방화벽으로 함께 통제하는 것이 안전합니다. 외부로 나가는 통신만 허용하고 안으로 들어오는 직접 접속은 막는 구성은 VPC 설계에서 다룬 게이트웨이 구조와도 닮아 있습니다.

여러 단계를 거치는 NAT

현실의 네트워크에서는 NAT이 한 번만 일어나지 않을 수 있습니다. 가정에서 공유기가 한 번 변환하고, 통신사 망에서 또 한 번 변환하는 식으로 여러 단계의 NAT을 거치기도 합니다. 이런 다단계 변환은 주소를 더 아낄 수 있게 해주지만, 그만큼 통신 경로가 복잡해지고 문제가 생겼을 때 추적하기가 어려워집니다.

특히 외부에서 내부로 접속해야 하는 서비스는 변환이 여러 겹일수록 통로를 열기가 까다로워집니다. 어느 단계에서 어떻게 주소가 바뀌는지를 모두 파악해야 하기 때문입니다. 그래서 규모가 있는 네트워크를 설계할 때는 NAT을 몇 단계나 거치는지, 각 단계가 어떤 주소로 변환하는지를 명확히 정리해두는 것이 운영의 부담을 줄이는 길입니다.

NAT의 한계

NAT은 편리하지만 대가도 있습니다. 주소를 도중에 바꾸기 때문에, 끝과 끝이 서로의 진짜 주소로 직접 통신한다는 인터넷의 원래 전제를 깨뜨립니다. 이 때문에 일부 프로토콜이나 P2P 통신은 NAT을 사이에 두면 정상 동작하지 않아 별도의 우회 기법이 필요합니다. 또한 변환을 처리하는 만큼 약간의 지연과 부하가 더해집니다. 근본적으로는 주소 부족을 미루는 임시방편의 성격이 있어, 주소 공간 자체를 크게 넓힌 IPv6 환경에서는 NAT의 필요성이 줄어듭니다. NAT의 표준 동작과 한계는 IETF RFC 3022 문서에 상세히 정의돼 있습니다.

Scroll to Top