네트워크

[네트워크] 공인 IP, 사설IP 그리고 NAT

삼록이 2025. 8. 5. 23:45

이전 게시물

https://gotopm.tistory.com/84

 

[네트워크] 공유기의 역할과 여러 네트워크 용어

우리에게 가장 친숙한 네트워크 장비는 무엇일까?바로 집집마다 있는 공유기 일 것이다.그래서 나는 공유기로부터 시작해서 인터넷 네트워크가 어떻게 연결되는지 알아보고자한다. 아래 내용

gotopm.tistory.com

 


IP주소

네트워크 상에서 통신을 위해 할당되는 주소 즉, 인터넷에 연결되기 위해 필요한 인터넷 상의 주소

공인 IP

공인IP는 전세계에서 고유한 IP주소이다. 그런데 전 세계에서 인터넷을 사용하는 곳이 얼마나 많은가.
이 장소 하나하나마다 중복되지 않고 각기 다른 IP주소를 할당해 줄 수가 없다. 

그래서 사설 IP가 등장했다.

사설IP

사설IP는 내부 네트워크(집,사무실,학교)와 같은 즉 LAN 안에서만 사용되는 IP다.

앞서 말했듯이 공인 IP부족 문제를 해결하기 위해 생겨났다.

그래서 보면 192.168.x.x IP가 익숙한 이유가 우리가 집에서도 이 IP이고, 회사를 가서도 이 IP 일 것이기 때문이다.

(192.168.0.0 ~ 192.168.255.255는 사설 IP에 할당되는 대역이다)

다시 말해 우리는 고유한 공인IP에 연결되어있는 192.168.x.x. 대역의 IP를 사용하는 것이다.

집에서도 회사에서도 같은 IP주소라도 그것은 정말 같은 IP주소가 아니라 서로 다른 공인 IP에 연결되어 있으므로 다른 IP주소다.

 

공유기를 보면 WAN포트가 있는데 그 포트가 ISP(인터넷회사)로부터 공인 IP주소를 부여받아  공유기의 LAN포트를 통해 연결된 기기들에 사설 IP주소를 할당한다.

 

Window PowerShell창에 ipconfig라는 명령어를 입력해보면, 아래와 비슷한 명령어들이 나오고 내 IPv4라 적혀있는 내 사설 IP주소를확인할 수 있다.  (나는 와이파이에 연결되어 사용중이다)

공인 IP는 아래 사이트에 접속 하면 확인할 수 있다.
https://ip.pe.kr/ 

*대부분의 가정용 인터넷은 동적 IP이다.

통신사가 접속할 떄마다 임시로 공인 IP를 할당하여 공유기를 껐다 켜면 공인 IP가 바뀔 수 있다. 이걸 유동IP라고 부른다.

 

(+추가

집에 KT 공유기와 KT공유기에 물려있는 와이파이 공유기가 있는데, KT공유기에 랜선을 꽂고 노트북과 연결 후 ipconfig를 쓰니 공인IP주소가 나왔다. 그런다음 물려있는 와이파이 공유기에 랜선을 꽂고 노트북을 연결 후 ipconfig를 하니 사설IP주소가 나왔다.

아마 이 경우에는 지금 우리 집에 있는 KT공유기는 NAT기능이 없거나 설정이 안되어있는 상태인 듯 하다)

 


 

사설 IP는 집,회사와 같은 LAN 환경 안에서만 효용이 있지 인터넷 세상에서는 사용되지 않는다.

 

내 IP가 아래와 같고, 구글 서버에 로그인하는 상황이라고 하자.

  • 사설 IP : 192.168.0.102
  • 공인 IP : 203.0.113.5

구글 서버는 203.0.113.5 에서 로그인 요청이 왔네 하고 인지할 뿐이다.

그러면 다시 이 상황을 자세히 말하자면,

  1. 내 컴퓨터(192.168.0.102)가 구글 로그인 버튼을 눌렀다.
  2. 그러면 이 요청이 컴퓨터의 LAN선을 타고 공유기에 도달한다.
  3. 공유기에서 이 요청을 받아서 공인 IP인 203.0.113.5로 변환한다.

NAT

이 사설IP를 공인IP로 변환해주는 기술(개념)을 NAT(Network Address Tranlation)라고 한다.

지난 게시물에서 보았듯이 공유기는 스위치의 역할도 하고 라우터의 역할도 한다. 그리고 NAT까지 담당한다.

 

그리고 NAT는 어떤 방향으로 변환하느냐에 아래와 같이 구분되기도 한다.
 

-SNAT(Source NAT)

출발지의 IP를 변환하는 NAT.
내부 컴퓨터가 외부(인터넷)으로 요청을 보낼 때 사용되는 기술.
주로 공유기에서 외부로 나가는 패킷에 적용된다.
 
앞선 상황에서 우리가 구글에 로그인 요청을 보내고 응답을 받는데에 이 SNAT가 쓰인다.
우리가 구글에 로그인 요청을 보내면 공유기는 내 사설 IP주소를 공인 IP주소로 변환하는데
이때 테이블에 내 사설 IP주소 <->공인 IP주소를 매칭시켜 저장해놓는다.
그러면 구글이 다시 내 공인 IP주소로 응답을 보내면 저장된 테이블을 보고 그 공인 IP주소를 다시 내 사설 IP주소로 매칭해 내게 우리에게 응답이 도달되는 것이다.
NAT 테이블 예시(:뒤에 있는 것은 port번호)
203.0.113.5:61001 ↔ 192.168.0.102:53123
 
다시 말해서, 공인 IP만 써서 통신하되, 공유기가 내부에서 누가 요청한 건지 포트 번호로 기억하고, 응답이 오면 원래 사설IP로 되돌려주는 것이다.
 

-DNAT(Destination NAT,  포트포워딩이라고도 한다)

목적지 IP를 변환하는 NAT
외부에서 특정 내부 서버에 접근하고 싶을 때.
예를 들어, 내가 개발한 스프링 서버에 멀리 떨어진 친구(같은 LAN 환경에 있지않은 친구)가 접속하려고 한다. 이때 내 스프링 서버는 192.168.0.102에 8080포트번호니까 192.168.0.1:8080 이 내 스프링 서버 주소가 된다.
이때 친구가 내 서버에 접속하려면 http://192.168.0.1:8080이 아니라 마찬가지로 공인 IP주소를 사용해야한다.
그러면 http://203.0.113.5:8080으로 접속한다.
이때  이 203.0.113.5 공인 IP주소로 접속하면 내 사설 IP주소로 변환하여 접속할 수 있게 하는 것을 DNAT,포트포워딩이라한다.
쉽게 말해 '외부에서 이 포트로 들어온 요청은 이 내부 장치로 넘겨줘' 하고 설정하는 것이다.
 
외부 네트워크에서 내 컴퓨터에 접속할 수 있다는 것은 사실 보안상 아주 위험한 것이기 때문에 기본적으로 막혀있어서
사용자가 직접 공유기 설정을 바꿔야한다.