사설 IP는 어떻게 인터넷에 나가나
집에서 스마트폰, 노트북, TV, 공기청정기까지 모두 와이파이에 연결됩니다. 그런데 이 장치들은 모두 192.168.x.x처럼 비슷한 주소를 씁니다. 인터넷으로 나갈 때 이 주소가 그대로 사용된다면 전 세계에서 같은 주소를 쓰는 수억 대의 장치들이 충돌해야 합니다. 면접에서도 자주 나오는 질문입니다. 어떻게 해결했을까요. 정답이 NAT입니다.
사설 IP 대역
인터넷에서 라우팅되지 않도록 예약된 주소 범위가 있습니다. 이것을 사설 IP 대역이라 부릅니다.
10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)192.168.0.0 ~ 192.168.255.255(192.168.0.0/16)
이 주소들은 인터넷 라우터가 외부로 전달하지 않습니다. 집 안, 회사 안에서만 유효합니다. 집마다 192.168.1.1이 있어도 서로 다른 나라에서 같은 골목 이름을 써도 문제없듯이, 서로 다른 망끼리는 겹쳐도 상관없습니다.
NAT의 동작
공유기는 사설 IP를 쓰는 내부 장치들의 트래픽을 모아 ISP로부터 받은 공인 IP 하나로 대표해서 내보냅니다. 이 변환 과정이 NAT입니다.
작동 방식은 이렇습니다. 내 노트북 192.168.1.100이 구글 서버 142.250.196.110으로 패킷을 보냅니다. 공유기가 이 패킷을 받으면 출발지 주소를 공인 IP, 예를 들어 211.100.200.50으로 바꾸고 포트 번호도 임시 번호로 교체합니다. 그리고 이 변환 기록을 내부 테이블에 저장합니다.
내부: 192.168.1.100:54321 → 외부: 211.100.200.50:40001
내부: 192.168.1.101:55000 → 외부: 211.100.200.50:40002
내부: 192.168.1.102:56789 → 외부: 211.100.200.50:40003
서버가 응답을 보낼 때는 목적지가 211.100.200.50:40001입니다. 공유기는 테이블을 보고 이 패킷이 내부 192.168.1.100:54321로 가야 한다는 것을 알고 주소를 되돌려 전달합니다. 밖에서 보면 집 전체가 하나의 주소로 보이고, 집 안 장치들은 자신이 NAT를 거쳤는지도 모릅니다.
이처럼 포트 번호를 함께 활용해 여러 내부 장치를 하나의 공인 IP로 구분하는 방식을 특히 PAT 또는 IP 마스커레이딩이라고 부르기도 합니다. 오늘날 가정용 공유기가 쓰는 방식이 바로 이것입니다.
NAT의 한계
NAT는 IPv4 주소 고갈 문제를 수십 년간 버텨온 영리한 해결책입니다. 그러나 완벽하지는 않습니다. 외부에서 먼저 연결을 시작하기가 어렵습니다. 내부 장치의 진짜 주소가 가려져 있기 때문입니다. 서버처럼 외부에서 접속받아야 하는 경우에는 별도 설정이 필요한데, 그것이 다음 절에서 다룰 포트 포워딩입니다.