네트워크 - VPN, Proxy, Gateway

VPN

Virtual Private Network

사설망 (Private Network)

보통 인터넷은 공개되어있는 망으로 구성되어있고, 데이터도 공개적으로 주고받는 환경인 경우가 많다. 회사에서는 이런 부분을 사설망을 직접 설치함으로써 데이터 보안성을 높이는데, 사설망을 설치하는 것이 물리적으로 한계가 있을때 VPN을 사용해서 사설망과 비슷한 효과를 낼 수 있도록한다.

VPN 프로그램을 설치하여 접속해서 데이터를 주고받게 되면, 공개되어있는 환경에서 데이터를 주고 받는 것이 아니라 VPN을 통해서 인터넷 접속을 하게된다.

Proxy

클라이언트에서 서버롤 요청을 보낼 때, 인터넷으로 가기전, 서버에 도착전에 프록시 서버를 거칠 수가 있다.

클라이언트에 붙어있는 프록시 서버를 포워드 프록시라고 하고, 서버에 도착하기 전에 프록시 서버가 요청을 대신 받을 수 있는데 이것을 리버스 프록시라고 한다.

왜 프론트는 포워드 프록시를 거치는가?

  • 불필요한 헤더 제거(필터링)

브라우저가 헤더를 넣어서 보내는 경우에는 클라이언트에서 헤더를 제거할 수 없다. 이것을 포워드 프록시를 통해서 브라우저가 임의로 추가한 헤더들을 제어할 수 있다. 즉, 서버에 요청을 보내기 전에 요청을 확인해주는 용도로 쓰임

서버 도착 전 리버스 프록시를 거치는 이유?

  • Apache
  • Nginx

  • 필터링
  • HTTPS를 적용해주는 역할
  • 정적 파일 서빙 (HTML, CSS, IMAGE, JS..)

진짜 서버가 해도되지만, 프록시가 하는 이유?

서버보다 더 잘하기 때문에…gzip, br 등 압축하는 기능도 더 잘 수행할 수 있다. (Ngix, Apache)

  • 요청 분배 (로드밸런싱)
  • 오토스케일링

서버가 여러 대일 경우 요청 분배, 오토스케일링 등이 가능하다.

리버스 프록시의 경우는 상당히 많은 역할이 가능하다.

Gateway

프로토콜을 바꿔주는 역할

클라이언트에서 인터넷으로 HTTPS 요청을 보냈을 때, 서버 도착 전 게이트웨이를 거칠 경우, HTTP, WS, FTP 요청으로 바뀌어서 전달할 수도 있다.

프록시와 사실상 역할이 비슷하다.

서버에서는 HTTPS를 셋업할 필요없이 프록시에서만 HTTPS를 받고, 서버끼리는 HTTP로 통신할 수 있도록하면 더욱 효율적이다.

API Gateway

얘도 사실상 프록시. 클라이언트에서 API Gateway로 요청을 보내면 필터링하고, 오토스케일링, 로드밸런싱 등의 다양한 역할을 수행할 수 있도록 해준다.

HTTP Method: CONNECT

클라이언트에서 서버로 CONNECT 요청을 보낼 때, 중간에 프록시에서 CONNECT 요청으로 들어오면, 프록시 역할을 하지말고 서버로 바로 보내라는 역할을 하는 메소드이다. 거부될 확률이 높음

검열, 필터링, 검열, 조작 등을 하지 않고 서버로 보내달라는 요청

인증된 클라이언트인지 여부에 따라 프록시에서 허용하거나 거부할 수 있다.