본문 바로가기

기술면접

포워드 프록시 VS 리버스 프록시

반응형

이번 포스팅에서는 프록시와 리버스 프록시에 대해 알아보겠습니다. 기술면접에서 프록시와 리버스 프록시에 차이에 대해 물어보기도 합니다. 

 

프록시의 사전적 의미는 아래와 같습니다. 

프록시 - 서버와 클라이언트 사이에 중계기로써 대리로 통신을 수행하는 것 

 

 

 

클라이언트와 서버의 통신은 클라이언트의 요청과 서버의 응답으로 이뤄집니다. 클라이언트 -> 서버 -> 클라이언트 순으로 통신이 진행되는데 프록시가 그 사이에 끼게 됩니다. 대리인 역할을 하는 프록시가 클라이언트를 대신하면 포워드 프록시가 되고 서버를 대신하면 리버스 프록시가 됩니다.


 

포워드 프록시 

 

포워드 프록시의 기능에 대해 알아보기 전에 위 그림을 보면서 포워드 프록시가 무슨 일을 할지 한번 생각해 보겠습니다. 

 

포워드 프록시란 클라이언트의 대리인입니다. 즉 클라이언트가 해야 할 일을 대신해주는 것입니다. 그럼 클라이언트가 하는 일은 무엇일까요? 첫 번째로 서버에 요청을 보내는 일을 합니다. 그리고 서버로부터 응답을 받게 됩니다. 프록시가 클라이언트를 대신해 서버로 요청을 보내고 응답을 받겠습니다.  서버 입장에서는 이 요청이 클라이언트의 것이 아니라 프록시의 요청이라 인식합니다. 

 

클라이언트 정보 노출 보호 

 

클라이언트가 서버로 보내는 요청을 프록시에서 진행하게 됩니다. 그렇기 때문에 Source IP는 클라이언트의 주소가 아니라 프록시의 주소가 됩니다. 만약 해커에 의해 통신 패킷을 갈취당하더라도 해커는 클라이언트의 IP를 알 수 없습니다. 

 

악성 도메인 및 유해사이트 차단 

 

클라이언트의 요청은 프록시를 통해 서버로 보내집니다. 하지만 프록시가 클라이언트의 특정 사이트로의 요청을 차단할 수 있습니다. 예를 들어 도서관등 관공서의 공용 PC에서 도박 또는 성인 사이트 접속이 차단되는 경우를 본 적이 있을 것입니다. 이 경우가 프록시에서 클라이언트의 유해사이트 접속 시도를 차단하는 것입니다. 마찬가지로 멀웨이 감염을 유발하는 악성 도메인으로의 접속을 차단할 수 있습니다. 

 

캐싱

 

프록시는 이전의 요청을 임시 저장해 둡니다. 이를 캐싱이라 하는데 클라이언트가 다시 동일한 요청을 할 경우 서버로 요청을 보내고 응답을 기다리지 않고 저장되어 있는 캐싱 정보를 바로 클라이언트에 제공합니다. 여러 번 반복해서 서버로 요청을 보내지 않기에 서버의 부하를 줄일 수 있으며 속도가 빨라진다는 장점이 있습니다. 

 


리버스 프록시

 

클라이언트를 대변하는 포워드 프록시와는 반대로 서버들을 대변하는 것이 리버스 프록시 입니다. 클라이언트와 서버와의 통신은 클라이언트의 요청을 서버의 응답으로 주고받습니다. 이번에는 응답을 서버 대신 프록시가 해주게 됩니다. 클라이언트의 입장에서는 서버 대신 리버스 프록시와 통신을 주고받게 되는 것입니다. 

 

로드밸런싱

 

클라이언트의 요청을 받은 리버스 프록시는 이 요청을 서버들에게 선택해서 보낼 수 있습니다. 1번 서버가 바쁘다면 2번이나 3번으로 보내어 1번의 부담을 덜 수 있겠죠. 이런 방식으로 리버스 프록시는 로드밸런싱이 가능합니다. 

 

서버 정보 노출 보호

 

클라이언트에게 보내는 응답에 서버의 IP 정보 대신 리버스 프록시의 IP를 넣어 보낼 수 있습니다. 클라이언트는 서버의 IP 정보를 알 수 없게 됩니다. 이런 방식으로 DDos 해킹 공격을 방어할 수 있습니다. 

 

캐싱

 

한국의 위치한 클라이언트가 미국에 위치한 서버와 통신하게 될 경우 물리적 거리 때문에 속도가 느려질 수 있습니다. 하물며 유튜브나 넷플릭스의 고용량의 영상일 경우 반응 속도가 굉장히 느려지게 되겠죠. 하지만 한국에 위치한 리버스 프록시에 이러한 고용량의 자료를 미리 준비해 둔다면 빠르게 클라이언트의 요청에 반응할 수 있을 것입니다. 이러한 서비스를 CDN(Content Delivery Network)라고 합니다. 이미지나 텍스트 영상 같은 정적 데이터를 세계 여러 곳에 위치한 리버스 프록시에 미리 준비해 가까운 위치에 존재하는 클라이언트에 빠르게 대응하기 위한 방법입니다. 

 

SSL Accelerator/Termination 

 

클라이언트와 서버와의 통신은 https 즉 SSL 통신을 하게 됩니다. 데이터를 암호화/복호화해야 할 필요가 있게 되는 것이죠. 클라이언트는 암호화된 데이터를 서버로 보내게 됩니다. 서버는 클라이언트의 요청을 복호화 한 뒤 클라이언트로 보낼 응답을 암호화해서 보내야 합니다. 하지만 데이터의 암호화/복호화는 서버에 상당한 부하를 야기할 수 있습니다. 이 암호화/복호화를 리버스 프록시가 대신해주게 됩니다. 이를 SSL Accelerator라고 합니다. 

 

다시 한번 복기해 보겠습니다. 클라이언트의 암호화된 요청을 서버 대신 복호화해서 서버에게 전달해 줍니다. 이것을 SSL Accelerator라고 했습니다. 그런데 DMZ에 존재하는 리버스 프록시와는 다르게 서버는 Private Zone에 존재합니다. 각종 방화벽 및 Anti-malware 서비스들로 보호받고 있는 영역에 존재하다 보니 이런 생각을 가지게 됩니다. 우리끼리 통신을 굳이 암호화/복호화할 필요가 있을까?라고 말이죠. 이러한 개념으로 각 서버들끼리 통신을 암호화하지 않은 채 하게 되며 최종적으로 클라이언트에게 보낼 응답만 암호화하게 됩니다. 이를 SSL Termination이라고 합니다. 최종적으로 클라이언트에게 보낼 응답을 리버스 프록시가 암호화 후 클라이언트에게 보내게 됩니다.

 

리버스 프록시는 요즘 Saas 형태로 제공되는 솔루션을 도입하기 위해 많이 사용되고 있습니다. Saas 형태로 제공되는 솔루션들은 인터넷망에 올려져 제공되는데 망분리 정책으로 인해 기업들의 자원을 인터넷에 위치한 Saas 솔루션과 직접 연결할 수 없기 때문에 DMZ에 리버스 프록시를 두어 Saas 솔루션과 서버 사이에서 대신 중계 통신하게 만드는 것이죠.   

 


포워드 프록시와 리버스 프록시의 차이를 이해하기 위해서는 각 프록시가 어디에 위치하는지 누구(클라이언트/서버)를 대변하는지를 잘 이해한다면 쉽게 이해할 수 있을 것이라 생각합니다. 

 

포워드 프록시 - 클라이언트 대신 서버와 통신 리버스 프록시 - 서버 대신 클라이언트와 통신
클라이언트의 IP 보호 서버의 IP 보호
악성도메인 및 유해사이트 차단 로드밸런싱
캐싱 - 빈번한 요청에 대한 응답을 저장해 빠르게 통신한다 캐싱 -CDN 기능 제공
  SSL Accelerator/Termination - 서버 대신  암호화/복호화 진행

 

 

반응형

'기술면접' 카테고리의 다른 글

VM VS 컨테이너  (0) 2022.09.17