노말틱 모의해킹

[1주차 강의] 2. 웹 서버의 역할(NAT, PAT)

debugginglog 2025. 4. 8. 02:23
웹서버에게 파일을 어떻게 달라고 할까?
웹 브라우저(chrome, safari등)를 통해서 웹 서버에게 파일을 달라고 한다.
url : 자료를 요청하는 링크
[Protocol]://[Domain or IP Address]:[Port]/[File Path]
일반적인 Web Root 경로 : /var/www/html/ 
내 서버가 어디를 Web Root 경로로 하고 있는지에 따라서 파일을 전송하는 폴더 경로가 달라진다
루트 경로 상단에 있는 것은 일반적으로 ../로 접근하지만 실제 서버에서는 요청이 불가능하다
만약 Web Root 경로가 / 루트 경로라면 웹 서버 전체 파일에 모두가 접근 가능하기 때문에 보안상 위험함
Well-known Port : http(80),https(443)로 약속해놓은 포트
http 프로토콜이 무조건 80인것은 아님. http와 999포트로 연결해도 충돌이 일어나지는 않음.
만약 File Path에 명시하지 않고 접속할 경우 index.html화면이 있다면 index.html 파일을 요청함.
index.html은 디렉토리 별로 적용된다.
NaT 네트워크에 대해서 공부해보세요.

 

기본적인 내용은 전반적으로 이해하기 쉽게 잘 알려주신다.
NAT 개념만 정리하고 넘어가보자.

NAT(Network Address Translation)

 

NAT가 뭘까?

NAT는 내부 네트워크(사설 IP)외부 인터넷(공인 IP) 사이에서 IP 주소를 바꿔주는 기술이다. 이 기술을 통해서 회사나 집 안에서 사용하는 여러 장치들이 하나의 공인 IP만으로도 인터넷에 접속할 수 있게 된다. 단순 내부 네트워크와 외부 네트워크를 연결해주는 변환기 역할을 해주는 것 같은데 공인 IP랑 사설 IP가 정확히 뭘까?

 

우리가 노트북, 휴대폰, 프린터 등을 집이나 회사 네트워크에 연결하면, 각 기기들은 192.168.x.x, 10.x.x.x, 172.16.x.x 같은 IP 주소를 받게 된다. 이걸 사설 IP 주소라고 부르고, 외부 인터넷에는 직접 연결되지는 않는다. 예를 들어

장치 IP 주소
노트북 192.168.0.2
프린터 192.168.0.10
스마트 TV 192.168.0.20

 

이런 식으로 연결된다면 노트북과 프린터, 스마트 TV가 무선 네트워크(유선으로도 가능하지만 요즘은 무선 공유기를 통해서 연결된다.)에 엮이게 된다. 비유하자면 말틱물류창고의 102동 건물과 110동 건물 120동 건물이 있는거다. 물류 창고동끼리 물품을 옮길려면 말틱물류창고에서 제공하는 자동 운반 장치를 이용해서 서로 물품을 배송할 수 있지만 이 기능으로 창고 외부로 배송은 불가능하다.

 

이렇게 고립되어있는 IP 주소가 사설 IP라고 부른다. 이런 기술을 통해서 같은 네트워크를 공유하고 있는 기기끼리 통신을 할 수 있다. 우리는 네트워크를 통해서 노트북에서 프린터기로 출력 데이터를 전송하거나 스마트 TV에 화면 미러링을 할 수 있다. 이런 식으로 내부에서만 통신 가능한 네트워크를 내부 네트워크(LAN - Local Area Network) 라고 한다.

 

내부망이 잘 이해되지 않는다면, 인트라넷을 떠올리면 된다. 군대나 공공기관, 회사 등에서 사용하는 내부 전용 네트워크는 외부 인터넷과는 분리되어 있거나, 제한적으로만 연결되는 폐쇄된 네트워크다.

 


 

그럼 이제 물류창고에서 외부로 물품을 보내려면 어떻게 해야할까? 이 때 우리는 물품, 운송장 역할을 하는 데이터, 프로토콜 등 여러가지 정보들이 필요하지만 NAT는 이중에서 보내는이의 주소 역할을 제공한다. 말틱물류창고의 주소가 말틱동 43-201이라면 물류창고 102동 건물에서 보내는 것이든 110동 건물에서 보내는 것이든 모두 말틱동 43-201이라는 주소로 보내게 된다.

 

공인 IP 주소는 우리가 디바이스를 통해서 외부 인터넷에 접속할 때 외부 세계에서 인식되는 주소다. 43.201.x.x같은 IP 주소 형식이다. 내부 장치들은 이 공인 IP가 없기 때문에 공유기나 라우터 같은 NAT 장비가 중간에서 사설 IP → 공인 IP로 변환해준다. 그런데 이 공인 IP 주소는 누가 설정해주는 걸까? 말틱동 43-201이라는 주소를 국가에서 지정해준 것처럼 공인 IP 주소는 ISP(인터넷 서비스 제공업체) 중앙에서 관리하는 제공한다. 일반적으로 KT, SKT, LgU+ 이런 업체들이 있고 그 뒤에 IANA, RIR 이런 단체들과 연결이 되어있지만 그것까지는 알아보지 말고 넘어가자.

 

아무튼 우리가 인터넷을 신청하면 ISP는 공인 IP를 하나 할당하고, 이건 모뎀(Modem) 에 먼저 할당된다. 하지만 실질적으로는 공유기의 WAN(Wide Area Network) 포트가 모뎀을 통해 그 공인 IP를 받아서 인터넷과 연결되게 된다. LAN과 WAN의 차이에 대해서도 다루고 싶지만 이건 시간이 남으면 추후에 다뤄보자.

 


 

그럼 내가 외부 인터넷에 접속하는 과정의 흐름대로 정리해보자.
예를 들어, 내가 회사에서 노트북으로 `naver.com`에 접속한다고 가정하면

  1. 노트북(192.168.0.2)이 naver.com 접속 요청
  2. 공유기에서 NAT 작동 → 요청을 공인 IP(43.201.x.x)로 변환
  3. 변환된 요청이 모뎀 → ISP → 인터넷을 거쳐 네이버 서버로 도착
  4. 네이버가 응답을 공인 IP로 다시 보냄
  5. 공유기가 NAT 테이블을 보고 내 노트북(192.168.0.2)으로 되돌려줌

그런데 회사 사람들이 다 같이 인터넷 쓰면 다 같은 IP로 나가는걸까? 그렇다. 외부에서 보면 모든 직원들이 같은 IP(예: 43.201.x.x) 로 요청하는 것처럼 보인다. 그러면 A컴퓨터에서 요청한것과 B에서 요청한 것을 어떻게 서로에게 맞게 전달이 되는걸까? 이게 가능한 이유는 바로 PAT (Port Address Translation) 라는 기술이 적용되기 때문이다.

 

PAT는 또 뭔데요?

말틱물류창고 말틱동 43-201 이라는 주소가 있지만 각 동의 구역별로 어느 구역에서 어느 담당자가 보냈는지를 확인하고 싶다. 만약 반품을 하는 문제가 발생하거나 답품?을 주게 된다면 출발지의 주소를 명확히 하고 싶기 때문. 이렇게 각 구역에다가 번호를 50001, 50002 이런식으로 매겨서 구분한다. 마찬가지로 PAT는 NAT의 확장판으로, IP 주소 + 포트 번호까지 함께 변환해서 요청을 구분할 수 있게 해준다. 예를 들어

사용자 내부 IP:Port NAT 변환 후
A 192.168.0.2:12345 43.201.x.x:50001
B 192.168.0.10:23456 43.201.x.x:50002

 

이렇게 공유기는 포트 번호까지 바꿔서 관리하기 때문에 공인 IP는 하나여도, 동시에 여러 명이 충돌 없이 인터넷을 사용할 수 있다. 이렇게 설명하다보니 내부 IP주소와 포트번호를 할당하는 규칙이나 알고리즘에는 어떤 것이 있는지, 접속자수가 몰릴 때 인터넷에 렉이 걸리는 이유나 iptime이 느린 이유나 이런 것들도 공부하고 싶지만 이런건 나중으로 넘어가자.


마무리 정리

  • NAT: 내부 IP ↔ 외부 IP 변환
  • PAT: 내부 IP + 포트 ↔ 공인 IP + 포트 변환 (여러 사용자의 요청을 구분)
  • 사설 IP: 192.168.x.x / 10.x.x.x 등, 내부 네트워크용 주소
  • 공인 IP: ISP가 제공, 인터넷 상에서 식별 가능한 주소
  • 공유기: NAT와 PAT 수행 + 내부 네트워크 관리
  • 모뎀: ISP로부터 공인 IP를 받아오는 장치
  • 외부 인터넷: ISP → 백본망 → 네이버, 구글 등 수많은 서버로 연결

 

원래 알던 내용들이 대부분이긴 하지만 뭔가 이렇게 정리하면서 하나하나 짚어보니 시간이 좀 걸리긴 하지만 이해가 잘되고 복습도 잘 된다. 정리하다보니까 추가로 더 공부해보고 싶은 것도 계속 생기는 것 같아서 장점이 있는 것 같다. 사실 개념을 정리하는 것보다 적절한 비유를 찾는게 좀 더 오래 걸렸는데 그닥 정확히 맞는 비유는 아닌 것 같아서 아쉽다.
꾸준히 블로그를 써보자~!