Home HTTP - 06. 프록시
Post
Cancel

HTTP - 06. 프록시

책 “HTTP 완벽 가이드”를 읽고 정리한 글입니다.

이전 글에서는 프록시의 개념과 종류에 대해 다루었다. 이번 글에서는 해당 개념에 대해 조금 더 세부적으로 다룰 것이다.

프록시(Proxy)

프록시 서버는 클라이언트를 대신하여 트랜잭션을 수행한다.

프록시는 아래 그림과 같이 클라이언트와 서버 사이에서 HTTP 요청, 응답 메시지를 적절히 다룬다. Untitled

공용 프록시 vs 개인 프록시

  • 공용 프록시
    • 개념
      • 여러 클라이언트가 공유하는 프록시
    • 특징
      • 대부분의 프록시의 운영 방식
      • 중앙 집중화 되어 있어 비용 효율이 높다.
  • 개인 프록시
    • 개념
      • 한 클라이언트가 독점적으로 사용하는 프록시

프록시 vs 게이트웨이

  • 공통점
    • 둘 이상의 애플리케이션을 연결한다.
    • 네트워크 통신에서 중개자 역할을 한다.
    • 내부 네트워크에서 인터넷으로 트래픽을 전송한다.
  • 차이점
    • 프록시
      • 연결되는 애플리케이션들이 동일한 프로토콜을 사용한다.
      • 내부 네트워크가 외부에 노출되지 않도록 하는 벽과 같은 역할을 한다.
        • 어떤 연결이 허용될 지 필터링을 한다.
    • 게이트웨이
      • 연결되는 애플리케이션들이 서로 다른 프로토콜을 사용한다.
      • 인터넷으로 가는 문의 역할을 한다.
        • 별도의 필터링 과정을 거치지 않는다.

프록시의 사용

프록시 서버는 모든 HTTP 트래픽을 받는다. 따라서 보안, 성능을 향상시키거나 및 기타 유용한 작업에 사용된다.

다음은 프록시가 사용되는 사례이다.

  • 유해 사이트 차단
    • 부적절한 사이트의 접근을 거부하는 필터링 프록시를 사용한다.
  • 문서 접근 제어자 (Document access controller)

    Untitled

    • 회사와 같은 조직에서는 중앙 프록시 서버를 통해 웹 서버들에 대한 접근 제어를 설정한다. 이 때, 클라이언트 별로 특정 서버에 접근할 수 있는 권한을 다르게 설정할 수 있다.
  • 보안 방화벽
    • 네트워크의 한 지점에서 안팎을 오가는 애플리케이션 프로토콜의 흐름을 통제하는 것
  • 웹 캐시
    • 자주 요청되는 문서의 사본을 저장해두었다가 요청이 들어올 때 빠르게 제공하는 것
  • 대리 프록시 (Surrogate)
    • 프록시는 웹 서버로 위장한 채로 요청을 받을 수 있다. 이런 프록시를 리버스 프록시라고도 부른다.
  • 콘텐츠 라우터 (Content router)
    • 프록시는 인터넷 트래픽 조건과 콘텐츠 종류에 따라 요청을 특정 웹 서버로 유도한다.
  • 트랜스코더 (Transcoder)
    • 프록시는 응답 메시지를 클라이언트에게 전달하기 전에 콘텐츠의 데이터 표현 방식을 자연스럽게 변환할 수 있다. 이 과정에서 메시지의 데이터 인코딩을 다른 인코딩으로 변환하게 된다.
  • 익명 프록시 (Anonymizer)
    • 프록시는 HTTP 메시지를 제거/변경하여 개인 정보를 보호하는 기능을 한다. 이 때 HTTP 메시지에서 제거 대상이 되는 정보로는 클라이언트의 IP 주소, From 헤더, Referer 헤더, 쿠키, URI 세션 아이디 등이 있다.

프록시의 위치

프록시 서버 배치

프록시는 다양한 위치에 배치할 수 있다.

  • 출구 프록시(egress proxy)

    Untitled

    • 위치
      • 로컬 네트워크의 출구에 위치한다.
    • 목적
      • 로컬 네트워크와 인터넷 사이의 트래픽을 제어하는 방화벽을 제공한다.
  • 접근 프록시(access proxy)

    Untitled

    • 입구 프록시(ingress proxy)라고도 불린다.
    • 위치
      • ISP(internet service provider)의 접근 지점에 위치한다.
    • 목적
      • ISP 고객들의 요청을 종합적으로 처리하여 다운로드 속도를 개선한다.
        • 캐시 프록시에 자주 찾는 문서를 저장해둔다.
  • 대리 프록시(surrogate)

    Untitled

    • 리버스 프록시(reverse proxy)라고도 불린다.
    • 위치
      • 웹 서버 바로 앞에 위치한다.
    • 목적
      • 웹 서버로 들어오는 모든 요청을 처리한다.
      • 보안을 향상시키고 성능을 개선시킨다.
  • 네트워크 교환 프록시(network exchange proxy)

    Untitled

    • 위치
      • 네트워크 사이의 인터넷 피어링 교환 지점에 위치한다.
        • 인터넷 교환 지점(IXP, Internet Exchange Point) : 여러 네트워크가 연결되어 트래픽을 교환하는 지점
        • 피어링(peering) : 두 개의 인터넷 네트워크가 서로 연결된 채로 트래픽을 교환하는 것
    • 목적
      • 캐시를 통해 혼잡을 완화하고 트래픽 흐름을 감시한다.

프록시 계층

프록시 서버 간에는 부모-자식 관계가 존재한다.

  • 부모 : 다음번 인바운드 프록시(서버와 가까운 쪽)
  • 자식 : 다음번 아웃바운드 프록시(클라이언트와 가까운 쪽)

Untitled

위 그림에서 프록시1프록시2의 자식이다. 또한 프록시2프록시3의 자식인 동시에 프록시1의 부모이다. 프록시1보다 서버에 가까이 있기 때문이다. 같은 이유로 프록시3프록시2의 부모가 된다.

트래픽이 프록시로 향하는 방법

클라이언트 트래픽은 다음의 방법 중 하나를 사용하여 프록시를 찾는다.

  • 클라이언트에서 프록시를 사용하도록 설정

    Untitled

    • 해당 설정에 의해 클라이언트가 HTTP 요청을 프록시로 보낸다.
  • 인터셉트 프록시 (또는 투명 프록시)

    Untitled

    • 중간에 스위치나 라우터가 트래픽을 가로채어 프록시로 보낸다.
    • 클라이언트는 이 사실을 모른다.
  • 대리 프록시를 사용

    Untitled

    • 웹 서버의 앞에 위치하여 웹 서버의 이름과 IP 주소를 사용하며 클라이언트의 요청을 대신 받는 것
    • DNS 이름 테이블을 수정하여 활성화한다.
  • 리다이렉션 사용

    • 서버가 클라이언트의 요청을 받으면 프록시로 리다이렉트 하도록 설정한다.

프록시 설정 방법

브라우저(클라이언트)가 프록시를 사용하도록 설정하는 방법에는 다음과 같이 몇 가지가 있다.

  • 브라우저 기본 설정
  • 수동 설정
  • 프록시 자동 설정(proxy auto-configuration, PAC)을 사용
  • WPAD 사용

브라우저 기본 설정

  • 브라우저의 판매/배포자가 사전에 프록시 사용 설정을 해둔 경우이다.

수동 설정

  • 브라우저에서 사용자가 직접 설정하는 방법
  • Chrome의 경우 [Settings]-[System]-[Open your computer’s proxy settings]를 클릭하여 설정을 변경할 수 있다.

프록시 자동 설정(PAC)을 사용

  • PAC(proxy auto-configuration) 파일을 사용해 그때그때 자동으로 프록시 설정을 하는 방법

WPAD 사용

  • WPAD(웹 프록시 자동발견 프로토콜)는 브라우저에 맞는 PAC 파일을 찾아주는 알고리즘이다.
  • 과정
    1. WPAD를 사용하여 PAC URI를 찾아낸다.
    2. 찾은 URI에서 PAC 파일을 가져온다.

메시지 추적

프록시를 거쳐가는 메시지의 흐름을 추적하기 위해 다음의 방법들을 사용한다.

  • Via 헤더
  • Trace 메서드

Via 헤더

  • 개념
    • 프록시가 추가하는 헤더로, 요청 메시지와 응답 메시지 모두에 표시될 수 있다.
    • 메시지가 노드(프록시 or 게이터웨이)를 지날 때마다 해당 정보가 추가된다.
  • 사용 목적
    • 메시지를 추적한다.
    • 요청 루프를 방지한다.
    • 요청/응답의 과정에서 발신자의 프로토콜 기능을 식별하는 데 사용된다.
  • 예시
    • via: 1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com
    • 이 헤더를 통해 메시지가 두 개의 프록시를 거쳐갔음을 알 수 있다.
      • 첫번째 프록시
        • 사용된 프로토콜 : HTTP/1.1
        • 프록시 이름 : proxy-62.irenes-isp.net
      • 두번째 프록시
        • 사용된 프로토콜 : HTTP/1.0
        • 프록시 이름 : cache.joes-hardware.com

TRACE 메서드

  • 개념
    • HTTP 요청을 TRACE 메서드로 보내는 방식
  • 동작 방식
    • 요청 메시지를 TRACE 메서드로 보낸다.
    • 메시지가 서버로 가는동안 거쳐간 프록시를 요청 메시지 헤더의 Via 필드에 기록한다.
    • 서버가 메시지를 받으면 요청 메시지를 그대로 응답 메시지에 추가하여 보낸다.

Ref.

This post is licensed under CC BY 4.0 by the author.

HTTP - 05. 웹 서버

HTTP - 03.1 요청 메소드