하나의 공인 IP를 무수히 많은 사설 IP로 사용할 수 있게 해주는 기술
라우터의 중요 역할인 NAT에 대해 공부해 보자
목차
- NAT란 무엇인가?
- 필요성과 특징
- NAT는 왜 단방향인가?
- NAT의 주요 방식
- SNAT
- DNAT
- PAT
- 마무리 및 다음 학습 방향
NAT(Network Address Translation)
NAT는 사설 네트워크에서 사용하는 IP 주소를 다른 네트워크에서 사용할 수 있도록 IP를 변환해 주는 기술이다.
즉, 사설 IP -> 공인 IP, 내부 IP -> 외부 IP
기본 아이디어는 공인 IP가 부족한 환경에서도 다수의 사설 IP 장치가 하나의 공인 IP로 외부에 나갈 수 있게 해주는 것이다.
필요성과 특징
필요성
- IP 주소 절약
- 하나의 공인 IP로 많은 사설 IP를 사용할 수 있게 하기 위해
- 보안
- 외부에 바로 노출되지 않을 수 있음
- 트래픽 제어
- 다수의 장비가 하나의 공인 IP를 공유 가능
특징
- 상태 저장: 연결 상태를 저장하여 사용함
- 동적/정적 모두 가능: IP나 포트를 고정 혹은 요청 시 할당할 수도 있음
- NAT Table 유지: 상태 유지를 위한 저장소
출발지 IP:PORT | 변환된 IP:PORT | 목적지 IP:PORT |
192.168.0.10:5060 | 61.123.45.67:40001 | 8.8.8.8:53 |
192.168.0.11:5061 | 61.123.45.67:40002 | 8.8.8.8:53 |
이 경우는 동일한 IP에 포트까지 저장하는 PAT 방식이다.
NAT는 단방향?
NAT는 단방향 통신을 기본으로 한다.
사설 IP 영역은 모두가 사용하고 있고, 외부에서 그걸로 식별할 수 없다.
그렇기에 외부에서 내부로 사설 IP만으로는 접근할 수 없는 것이다.
외부는 이 사설 IP가 어떤 공인 IP 내부의 사설 IP인지 알 수 없다.
그렇기에 NAT 기본적인 통신 방향은 내부에서 외부이다.
내부에서 나가는 경우
- 내부에서 출발지/목적지 IP를 포함한 패킷을 보냄(출발지: 192.168.0.10 도착지: 61.102.0.130)
- NAT 라우터는 해당 패킷을 받아 내부의 출발지 IP를 공인 IP*로 변환한다.(변환된 아이피: 66.19.100.19)
- 목적지에서 다시 응답을 변환된 IP로 보냄
- NAT 라우터는 저장했던 걸 보고 다시 내부 IP로 변환해 응답을 전달
*여기서 항상 공인 IP가 될 필요는 없다. 다음 네트워크나 라우터가 처리할 수 있는 주소로 변환해주기만 하면 된다. 그래서 사설이 될 수도 있다.(결국 외부로 가려면 공인으로 변환은 되어야 한다.)
이렇게 내부에서 외부로는 자연스러운 흐름으로 나갔다 돌아올 수 있다.
이제 외부에서 내부로 오려면 어떻게 해야 하는지 알아보자
NAT의 주요 방식
NAT는 크게 3가지 방식이 있다.
이름 | 설명 | 주요 용도 |
SNAT (Source NAT) | 출발지 IP를 변환 | 내부 → 외부 요청 시 사용(설정 불필요)(IP 당 하나) |
DNAT (Destination NAT) | 목적지 IP를 변환 | 외부 → 내부 접근 시 사용 (포트포워딩 포함) |
PAT (Port Address Translation) | 출발지 IP + 포트를 모두 변환 | 다수의 내부 장비가 하나의 공인 IP 공유 가능 |
위에서 예시를 들었던 방식은 SNAT였다. 즉 별도의 설정 없이 나갈 때 상태를 유지해 돌아올 때 그 정보로 돌아오는 방식이다.
SNAT
- 내부 PC (192.168.0.10)가 인터넷 접속 요청 (예: google.com)
- NAT 라우터가 출발지 IP를 공인 IP(예: 66.19.100.19)로 바꿈
- 외부 서버는 응답을 66.19.100.19로 보냄
- NAT 라우터는 다시 192.168.0.10으로 되돌려줌
DNAT
이 방식은 외부에서 내부로 들어올 수 있게 하는 방식이다.
외부는 사설 IP로 내부를 식별하지 못한다는데 어떻게 가능하냐는 의문이 들 텐데, 이 방식 역시 외부에서는 사설 IP로는 내부를 식별하지 못한다. 여전히 공인 IP를 통해 요청한다. 하지만 여기에 포트를 더해서 요청한다.
이 방식을 사용하고 싶다면 "공인 IP + 포트"를 사설 IP와 매핑 정보를 저장해 놔야 한다.
- 외부 사용자가 61.123.45.67:8080으로 접속
- NAT 라우터가 목적지 IP를 내부 서버(192.168.0.10:80)로 변환
- 내부 서버가 응답하면 NAT가 다시 외부로 되돌림
여기서 포트포워딩이 사용된다. 61.123.45.67:8080 이렇게 포트를 포함한 주소를 통해 다른 주소로 매핑하는 것
PAT
이 방식은 SNAT에 포트를 더해 저장하는 것이다.(미리 설정)
이 방식은 별도의 NAT 방식이 아닌 기존 방식에 포트까지 같이 매핑하는 걸 의미
출발지에 포트를 추가할 수 도 SNAT
도착지에 포트를 추가할 수 도 DNAT
그렇기에 하나의 주소에 포트를 통해 수십 ~ 수천 곳과 매핑할 수 있다.
이것 역시 포트포워딩이 사용된다.
그 이후 외부로 나갔다 돌아오는 과정은 SNAT와 동일하다.
추가
PAT 개념 수정
마무리
결국 NAT는 단순히 IP를 바꿔주는 기술이 아니라, 서로 다른 네트워크 간 경계를 넘기 위한 필수적인 다리 역할을 하는 것 같다.
단방향이라는 NAT의 특성을 알고 나니, 왜 이전에 포트포워딩을 해줘야 외부에서 내부로 연결 가능한지, 내부에서 외부는 왜 별도의 설정 없이 매끄럽게 동작하는지 이해할 수 있었다.
다음은 DHCP 설정할 때 지나갔던 DNS 관련해서 더 공부해 봐야겠다.
'공부일지 > 개인학습' 카테고리의 다른 글
[Docker #1] 도커, 뭐가 다른가 (0) | 2025.04.17 |
---|---|
라우터(Router) 구성요소들 분석 (0) | 2025.04.15 |
VPC(Virtual Private Cloud) (0) | 2025.04.12 |
OSI 7계층에서의 캡슐화/디캡슐화 (0) | 2025.04.10 |
DHCP란? (0) | 2025.04.10 |