하나의 공인 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 기본적인 통신 방향은 내부에서 외부이다.

내부에서 나가는 경우

  1. 내부에서 출발지/목적지 IP를 포함한 패킷을 보냄(출발지: 192.168.0.10 도착지: 61.102.0.130)
  2. NAT 라우터는 해당 패킷을 받아 내부의 출발지 IP를 공인 IP*로 변환한다.(변환된 아이피: 66.19.100.19)
  3. 목적지에서 다시 응답을 변환된 IP로 보냄
  4. 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

+ Recent posts