Public/Private IP 이해하기(IGW, NAT)

2026. 5. 25. 17:23·Infra
반응형

Public/Private IP를 이해하기 전에 IP라는 것에 대해 알아야 한다.

 

IP 주소는 네트워크 상에서 장치를 찾아가기 위한 주소이다.

우리가 집을 찾을 때 도로명 주소를 사용하듯이, 데이터를 어떤 장치로 보낼 지 정할 때 IP 주소를 사용한다.

 

이 때 IP 주소는 Public/Privaate IP 두 종류로 나뉘게 된다. 

간단한 예시를 통해 이해해보자.

 

큰 회사 건물이 1개 존재한다.

 

이 건물의 도로명 주소는 "서울시 강남구 테헤란로 123"라고 하자. 이 주소는 전국에 딱 하나뿐이고 이 주소를 통해 물건을 주고받을 수 있다.

 

이 건물 안에는 301호, 302호..와 같이 다양한 사무실 번호가 존재한다. 이러한 번호는 이 건물뿐만 아니라 다른 건물들에도 존재한다.

 

이를 IP에 빗대어보자.

 

건물의 주소는 Public IP, 각 건물 내부의 사무실은 Private IP이다.

즉 예시에서 58.162.31.22는 전 세계에 단 하나만 존재하는 Pulbic IP이고 10.0.0.X는 여러 건물에 중복으로 존재할 수 있는 Private IP인 것이다.

 

만약 택배 기사가 301호라는 정보만 가지고 물건을 전달하려고 한다면 가능할까?

불가능하다. 어떤 건물인지 모르기 때문이다. 건물의 주소를 알아야 건물 주소 -> 301호 순서로 전달을 할 수 있다.

 

데이터도 마찬가지이다. Public IP 없이 Private IP만 있다고 해도 데이터를 전달할 수 없다. 건물의 주소인 Public IP를 모르기 때문이다.

두 정보를 모두 알고 있어야 Public IP -> Private IP로 데이터 전달이 가능한 것이다.

 

왜 이러한 방식을 사용할까?

첫째로는 IP주소를 절약할 수 있기 때문이다.

우리가 흔히 쓰는 IPv4 주소는 약 43억 개뿐이다. 만약 모든 장치가 Public IP를 가져야 한다면 주소의 개수는 진작에 동났을 것이다. 하지만 이처럼 Public/Private을 분리하게 된다면, 1개의 Public IP만 있어도 수천개의 Private IP를 마음껏 사용할 수 있다.

 

둘째로는 보안성이다.

인터넷을 통해 직접 접속할 수 없다는 것은, 외부 공격자 또한 직접적으로 접근할 수 없다는 의미이다.

 

Private IP만 가진 장치는 건물 내부에 숨어있는 셈이다.

따라서 외부에 노출되면 안되는 DB 서버, 내부 시스템 등에 Private IP를 부여해서 외부로부터 격리시키는 것이다.

 

 

그럼 Private IP는 아무 IP나 사용할 수 있는지 의문이 생길 수 있다.

Private 사설 IP 대역

결론부터 말하면, 그렇지 않다. 사설 IP로 쓸 수 있는 범위는 국제적으로 정해져있다.

 

굳이 사설 IP 대역을 정해둔 이유가 궁금할 것이다.

 

장치는 데이터를 보낼 때 목적지 IP 주소를 보고 이 주소가 우리 건물의 내부 주소인지, 바깥 주소인지 판단한다.

 

하나의 상황을 예시들어 생각해보자.

 

사설 범위가 정해져 있지 않아서 회사가 구글 주소 IP를 내부에서 사용하게 된다면 과연 그 주소는 회사 안으로 갈까? 구글로 갈까?

정답은 회사 내부로 가게 된다.

 

그럼 사실 사설 대역을 정해놓지 않아도 내부 망으로 접속이 되는데 무엇이 문제인가? 라고 생각하게 될 것이다.

진짜 문제는 외부에 있다. 구글 IP를 사용해도 내부로 접속이 가능하지만, 그 사용자는 절대로 구글로 접속을 할 수 없는 문제가 발생한다.

 

내부망을 먼저 보는 것은 효율적인 면에서 당연한 것이다. 그렇기 때문에 위와 같이 다른 Public IP를 내부에서 사용하게 되면 절대로 그 주소로 접속할 수 없는 문제가 생기게 되는 것이다.

 

이러한 문제 때문에 사설 IP 대역은 국제적으로 정해져있다. 각 범위는 아래와 같다.

 

Class A 대역 (10.0.0.0 ~ 10.255.255.255)

흔히 10번대라고 부르는 대역이다. 셋 중 가장 넓어서 주소가 매우 많다. 대규모 기업망이나 AWS같은 클라우드에서 주로 사용한다.

 

Class B 대역 (172.16.0.0 ~ 172.31.255.255)

B 대역은 주의할 점이 하나 있다. 모든 172.x가 B대역이 아니라 172.16~172.31까지만 사설 대역이다. 그 외는 공인 주소이다.

 

Class C 대역 (192.168.0.0 ~ 192.168.255.255)

우리가 볼 때 가장 익숙한 대역이다. 집에 있는 공유기에 들어가 보면 보통 PC나 폰이 192.168.x과 같은 주소를 받고 있다.

 

한줄로 정리하면, 사설 IP 대역은 내부망 전용 주소를 따로 떼어놓은 것이고, 이 덕분에 내부 주소와 인터넷 주소가 절대 겹치지 않는다는 것이다.

 

 

IGW(Internet GateWay)와 NAT(Network Address Translation) 

여기서 한가지 상황을 가정해보자.

우리가 집에서 사용하는 인터넷은 192.168로 시작하는 사설 IP이다.

근데 분명 사설 IP는 private이기 때문에 인터넷이 불가능하다고 했는데 왜 가능할까?

 

그건 IGW와 NAT때문이다.

 

IGW는 내부망을 인터넷을 연결하는 출입문이다.

IGW가 없으면 내부망은 인터넷과 연결 자체가 없는 고립된 섬과 같다. IP의 타입과 상관없이 애초에 나가는 길이 없다는 것이다.
IGW를 연결하면 내부망과 인터넷 사이의 통로가 생기게 된다.

 

하지만 사설 IP를 통해 인터넷으로 요청을 보내면, 요청을 돌려보낼 때 쓸 IP 주소는 사설 IP이기 때문에 건물을 알 수 없는 문제가 발생한다. 즉 공인 IP를 알지 못하면 IGW가 있더라도 데이터를 받아올 수 없다는 것이다.

 

이러한 문제를 해결해주는 것이 바로 NAT이다.


NAT는 나갈 때 사설 IP를 공인 IP로 바꿔주고, 돌아온 응답을 원래 장치로 되돌려주는 주소 변환기이다.

내 폰(192.168.x.x)에서 유튜브로 요청을 보내면 NAT가 출발지 주소를 공인 IP로 바꿔서 내보낸다. 동시에 이 요청을 192.168.x.x가 보낸 것이라고 기록을 해 두고, 유튜브는 공인 IP가 요청한 것으로 보고, 답장을 공인 IP로 보내게 된다.

 

요청이 돌아올 때 NAT에 공인 IP가 도착하면 이전에 기록해둔 사설 IP로 변환하여 해당 IP로 답장을 전달한다.

 

여기서 NAT의 특성이 하나 존재한다.

기존 IGW는 내부 -> 외부, 외부 -> 내부 모두 통신이 가능했다.

 

하지만 NAT는 내부에서 외부로밖에 이동이 가능하다.

왜냐하면 내부에서 요청을 보내가 NAT에 요청에 대한 사설 IP주소가 기록이 되기 때문이다.

 

외부에서 요청이 들어오면 NAT에서 매핑해줄 사설 IP가 존재하지 않기 때문에 전달한 주소를 찾을 수 없다는 것이다.

이러한 일방통행 특성때문에 NAT는 보안 효과까지 챙기게 된다.

 

 

 

반응형

'Infra' 카테고리의 다른 글

방화벽 이해하기 Security Group vs NACL  (0) 2026.06.04
VPC & Subnet 이해하기(Public/Private Subnet, IGW, NAT)  (0) 2026.06.04
Web Server / Web Application Server 이해하기  (0) 2026.05.25
CDN(Content Delivery Network)에 대해 이해하기  (0) 2026.05.25
Proxy/Reverse Proxy 이해하기  (0) 2026.05.25
'Infra' 카테고리의 다른 글
  • 방화벽 이해하기 Security Group vs NACL
  • VPC & Subnet 이해하기(Public/Private Subnet, IGW, NAT)
  • Web Server / Web Application Server 이해하기
  • CDN(Content Delivery Network)에 대해 이해하기
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (175)
      • SW 마에스트로 (1)
      • 알고리즘 (130)
      • CS (13)
      • Java (6)
      • 자기개발 (18)
      • Infra (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    Infra
    NACL
    알고리즘
    reverse proxy
    SWEA
    백준
    SW 마에스트로
    completablefuture
    IGW/NAT
    Redis
    인프런
    async
    springboot
    OS
    python
    코딩테스트
    작심삼일 챌린지
    컴퓨터 구조
    java
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
Public/Private IP 이해하기(IGW, NAT)
상단으로

티스토리툴바