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

Soonwoo Kwon·2022년 5월 18일
0

바퀴달린 개발자

목록 보기
3/4

프록시 서버

프록시 서버란 클라이언트와 서버 중간에 위치하여 대리로 통신을 중계해주는 서버이다. 클라이언트는 프록시 서버를 통해서 다른 네트워크나 서버에 간접적으로 접속할 수 있다. 프록시 서버를 사용하는 두 가지 방법으로 포워드 프록시와 리버스 프록시가 존재한다.

포워드 프록시(Foward Proxy)

포워드 프록시는 프록시 서버가 클라이언트 앞에 위치한다. 클라이언트는 프록시를 향해 요청을 전송하고, 프록시의 규칙에 따라 정해진 서버에 요청을 전달한다.

포워드 프록시의 특징

  • 프록시 서버가 내부망에 위치하여, 내부망에 내의 호스트들이 인터넷을 통해 외부와 통신할 때 프록시 서버를 거친다.(예외를 설정할 수 도 있다.)
  • 프록시를 통해 정해진 사이트에만 접속을 가능하게 할 수 있어 보안이 중요한 기업에서 자주 사용된다.
  • 프록시 서버의 캐싱 기능을 통해 자주 사용되는 요청을 캐싱하여 빠르게 처리할 수 있다.
  • 외부 호스트로부터 클라이언트의 IP를 숨길 수 있다.

MAC의 경우 Apple 메뉴 > 시스템 환경설정 > 네트워크 > Wi-Fi > 고급 > 프록시 의 단계로 프록시를 확인해 볼 수 있다.

위 프록시 설정을 설명해 보자면, 나의 PC에서 다른 호스트에 요청을 보낼 때 항상 프록시를 통해서 요청하게 된다. 하지만 설정해 놓은 프록시가 없기 때문에 인터넷을 통해 해당 호스트와 통신하게된다.
만약 나의 PC가 사내 내부망에 존재하고 특정 프록시를 통해서만 통신을 한다면 모든 요청은 그 프록시에게 전달되고, 서버와의 통신도 프록시가 대신하여 요청의 결과를 돌려준다.
프록시 설정에서 '프록시 설정값을 우회(bypass)할 호스트와 도메인:' 의 의미는
해당 호스트와 도메인으로 보내는 요청은 프록시가 아닌 직접 보내는 설정이다.

예상 시나리오

만약 나의 로컬 PC가 내부망에 존재하고, 내부망의 모든 호스트가 외부로 통신하기 위해서는 12.34.56.78:8888 이라는 프록시를 사용해야 한다.
이 때 https://www.naver.com 에 접속해 본다고 가정해보자.

  1. 먼저 hosts 파일을 참조하여 https://www.naver.com 의 IP가 정의되어 있는지 확인한다.
  2. hosts 파일에 존재하지 않는다면 DNS 서버를 통해 https://www.naver.com의 IP를 확인한다.
  3. DNS 서버를 통해 얻은 https://www.naver.com의 IP에게 요청을 보내는데, 프록시 서버가 이를 대신한다.
  4. 프록시 서버가 대리로 https://www.naver.com의 IP에 요청을 보내 통신하게 되고, 요청에 대한 응답도 서버 대신 클라이언트에게 전달해준다.
  5. 요청을 받은 https://www.naver.com 서버의 입장에서 요청을 보낸 호스트는 나의 로컬 PC가 아닌 프록시 서버인 12.34.56.78:8888가 된다.

리버스 프록시

리버스 프록시는 프록시 서버가 서버 앞에 위치한다. 클라이언트가 서버로 보내는 요청은 서버가 속한 내부망 앞 단에 위치한 프록시 서버를 통해서만 가능하다.

리버스 프록시의 특징

  • 리버스 프록시 뒤에 여러 WAS를 두어 로드밸런싱을 수행할 수 있다.
  • 대부분 기업 네트워크는 1차 방화벽과 2차 방화벽 사이에 DMZ 구간이 존재하는데, 이 구간에 리버스 프록시 서버를 위치하여 프록시 뒷 단의 WAS에 대한 보안을 강화할 수 있다.
  • 외부 호스트로부터 서버의 IP를 숨길 수 있다.

예상 시나리오

요청을 보내고자 하는 서버인 https://www.server.com 가 내부망에 존재하고, 내부망 앞단에는 리버스 프록시가 있어 해당 프록시로만 통신이 가능하다.
이 때 https://www.server.com에게 요청을 보낸다고 가정하자.
1. 먼저 hosts 파일을 참조하여 https://www.server.com 의 IP가 정의되어 있는지 확인한다.
2. hosts 파일에 존재하지 않는다면 DNS 서버를 통해 https://www.server.com 의 IP를 확인한다.
3. DNS 서버를 통해 얻은 https://www.server.com 의 IP에게 요청을 보내는데 이 IP는 리버스 프록시의 IP이다.
4. 리버스 프록시는 클라이언트로 부터 요청을 받고, 프록시의 설정에 따라 알맞은 서버에게 요청을 전달한다.
5. 프록시 서버는 요청에 대한 응답을 클라이언트에게 전달한다.
6. 응답을 받은 클라이언트의 입장에서 응답을 보낸 호스트는 서버의 IP가 아니라 프록시 서버의 IP가 된다.

참조

https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html

0개의 댓글