[Network] Proxy 서버란 뭘까요?

캡틴 노드랭크·2022년 5월 27일
2

Network

목록 보기
1/3

Proxy 서버란?

프록시 서버는 사용가 직접 다루는 현장인 클라이언트(Client)와, 데이터를 관리하는 웹 어플리케이션 서버(WAS) 사이에 위치한 중개 서버입니다.

1. 클라이언트에서 데이터 요청.
    	 [프록시 서버] 
2. 서버에서 클라이언트로 응답.

없어도 되지만, 보안, 효율 상 있으면 좋습니다.

> 프록시서버는 대충 이렇게 동작합니다.

  1. 김김김 이라는 게이머가 스팀 설치를 위해 스팀 웹페이지 접속(요청).

  2. 프록시 서버로 요청이 전달.

  3. 프록시 서버는 자신이 가지고 있는 스팀 페이지가 존재하는지 확인.

  4. 존재하지 않는다면, WAN을 통해 스팀 페이지가 있는 서버에 요청

  5. 스팀 페이지를 가지고 있는 서버에서 프록시 서버로 응답.

  6. 프록시서버는 다시 캐싱 후 클라이언트로 전달.

  7. 스팀 페이지를 가지고 있다면 최신 페이지인지 확인.

  8. 아니라면, 갱신된 부분을 가져오기 위해 4번부터 시작.

대략, 이런식의 동작을 통해 김김김씨는 스팀을 다운로드 받을 수 있게 되었습니다. 프록시 서버는 몇가지 종류로 구분되는데 한번 알아보겠습니다.

> Proxy 서버 종류

우선 기준부터 잡겠습니다.

A: 클라이언트들(Users)
B: 프록시서버(Proxy)
C: 웹 어플리케이션 서버(Was)

정방향, Forward Proxy

일반적으로 사용되는 프록시라고합니다. 위에서 설명한 내용이 이 방식입니다. 이 프록시 서버는 모든 클라이언트 앞단에 위치합니다.

  1. A 유저들이 데이터 요청.

  2. B 요청을 받고 내부적으로 처리

  3. B 에서 C로 요청.

  4. C 에서 B로 응답.

  5. B에서 C로 응답.

정방향 프록시 서버는 어디에 쓰일까요?

> 사용처

  • IP 우회: 일방적으로 사이트에 요청을 보내게되면, 사용자들의 IP를 WAS에 기록하게됩니다. 프록시 서버를 통해 IP를 바꿔 접속하여 클라이언트를 숨길 수 있습니다.

  • 특정 콘텐츠 제한: 예를들어 도박, 음란물과 같은 사이트를 요청했을 때, 해당 사이트들을 규칙에 추가하여 필터링 해버릴 수 있습니다.

  • 캐싱 : 정방향 서버는 캐싱기능도 지원하여 동일안 데이터를 요청했을 때, 프록시 서버내에 저장된 데이터를 클라이언트로 전달하여 성능을 향상시킬 수 있습니다.

> 역방향, Reverse Proxy

정방향 서버와는 반대로 WAS서버 앞에 위치합니다. 역할은 비슷하나 중요한 차이점이 하나 있습니다.

우선 DMZ 라는 개념부터 알아봅시다.

> DMZ, 비무장지대

Demilitarized Zone, DMZ, 컴퓨터 보안에서는 외부 네트워크와 내부 네트워크에 위치한 서브넷으로, 메일서버, 웹 서버, DNS 서버등을 배치하고, 1, 2차 방화벽으로 보호합니다.

WAS서버의 보안이 털리면 DMBS서버도 약탈당하게 되어, 심각한 문제를 야기할 수 있기때문에 내부 서버 보호를 위해 필요합니다.

X: 외부망(WAN)
Y: 내무방(LAN)
F1: 1차방화벽
F2: 2차방화벽
D: DMZ

  1. X로부터 요청이 들어옵니다.

  2. F1에서 패킷을 검증합니다.

  3. D에 존재하는SMTP,FTP프로토콜에 요청하거나, 프록시 서버에 요청을 전달합니다.

  4. F2에서 패킷을 검증합니다.

  5. 보안상 문제가 없을 경우, Y 로 전달합니다.

  6. DMBS시스템에 기록합니다.

아무튼 역박향 프록시서버는 DMZ에 위치하는 웹서버로, 내부 서버를 위한 프록시 서버입니다. 그러면 역방향 프록시는 주로 어디에 사용할까요?

> 사용목적

  • 로드 밸런싱(Load Balancing): 하루 수백만명이 방문하는 웹사이트에서는 하나의 서버로는 트래픽을 감당하기 힘듭니다. 128코어 256스레드를 가진 시피유를 코어 하나만 쓰는것과 같습니다. 그렇기 떄문에 여러개의 서버로 나누어 트래픽을 분산하기 위한 방법입니다.

  • 외부 공격 방어: 정방향과 마찬가지로 서버의 IP를 숨김으로써 DDOS같은 공격을 방어할 수 있습니다. 대신 프록시 서버가 공격의 대상이 될 수 있습니다.

  • 캐싱: 정방향과 마찬가지로 데이터를 캐싱하여 빠른 성능을 낼 수 있습니다.

  • SSL암호화: 클라이언트와 서버간의 요청 응답과정에서 서버는 HTTP HandShake(SYN, SYN ACK, ACK)와 더불어 요청을 암호화 복호화를 부담져야했습니다. 이러한 부담을 역방향 프록시에서 담당하니 서버는 부담이 줄어들었습니다.

역방향과 정방향

결국 클라이언트(유저)들을 위한 중계서버가 정방향
내부 서버들을 위한 중계서버가 역방향입니다.

ref: 로드밸런싱, AMD Epyc, Proxy, proxy란?

profile
다시 처음부터 천천히... 급할필요가 없다.

0개의 댓글