Search

Proxies - 한글

단원
6단원
작성자
최종편집일시
2021/05/22 09:55
생성일
2021/05/14 00:41
웹 프록시 서버는 중개자(intermediaries)이며, 클라이언트와 서버 사이에 위치하여 그들 사이의 메시지를 정리하는 중개인처럼 동작한다.
이 장에서는 아래와 같은 내용을 다룬다.
HTTP 프록시와 웹 게이트웨이를 비교하고 HTTP 프록시가 어떻게 배치되는지 설명한다.
프록시가 활용되는 방법을 설명한다.
프록시가 실제 네트워크에 어떻게 배치되어 있는지 그리고 트래픽이 어떻게 프록시 서버로 가게되는지 설명한다.
브라우저에서 프록시를 사용하려면 어떻게 설정해야 하는지 보여준다.
HTTP 프락시 요청이 서버 요청과 어떻게 다른지, 그리고 프락시가 어떻게 브라우저의 동작을 미묘하게 바꾸는지 보여준다.
일련의 프록시 서버들을 통과하는 메시지의 경로를, Via 헤더와 TRACE 메서드를 이용해 기록하는 방법을 설명한다.
프록시에 기반한 HTTP 접근 제어를 설명한다.
어떻게 프록시가 클라이언트와 서버 사이에서 각각의 다른 기능과 버전들을 지원하면서 상호작용 할 수 있는지 설명한다.

6.1 Web Intermediaries

웹 프록시 서버는 클라이언트 입장에서 트랜잭션을 수행하는 중개인
클라이언트는 웹 서버와 통신하는 대신 프록시와 통신하며, 프록시는 클라이언트 입장에서 서버와 통신(단, 프록시를 거치는 것을 원할 경우)
클라이언트 입장에서 트랜잭션을 완료한다는 측면에서는 동일하지만, 프락시 서버가 제공하는 좋은 서비스를 활용할 수 있게됨
HTTP 프록시는 웹 서버이자 웹 클라이언트이기도 함
프록시는 HTTP 클라이언트의 요청을 받게 되므로, 반드시 웹 서버처럼 요청과 커넥션을 적절히 다루고 응답을 돌려줘야 함
그와 동시에 프락시는 요청을 서버로 보내기도 하므로, 요청을 보내고 응답을 받는 올바른 HTTP 클라이언트처럼 동작해야 함
Figure 6-1. A proxy must be both a server and a client

6.1.1 Private and Shared Proxies

공유 프록시(public proxies): 여러 클라이언트에게 공유되는 프록시
대부분의 프록시는 공용이며 공유된 프록시임
중앙 집중현 프록시를 관리하는 게 더 비용효율이 높고 쉬움
그리고 캐시 프록시 서버와 같은 몇몇 프록시 애플리케이션은 프록시를 이용하는 사용자가 많을수록 유리
여러 사용자들의 공통된 요청에서 이득을 취할 수 있기 때문
개인 프록시(private proxies): 하나의 클라이언트가 독점하여 사용하는 프록시
개인 전용 프락시는 그다지 흔하지는 않지만 꾸준히 사용되고 있음(특히 클라이언트 컴퓨터에서 직접 실행되는 형태로)
어떤 브라우저 보조 제품들은 몇몇 ISP 서비스와 마찬가지로 브라우저의 기능을 확장하거나 성능을 개선하거나 무료 ISP 서비스를 위한 광고를 운영하기 위해 작은 프록시를 사용자의 컴퓨터에서 직접 실행

6.1.2 Proxies Versus Gateways

엄밀하게 말하면, 프록시는 같은 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결하고, 게이트웨이(gateway)는 서로 다른 프로토콜을 사용하는 둘 이상을 연결
즉, 게이트웨이는 "프로토콜 변환기(protocol converter)" 처럼 동작
Figure 6-2. Proxies speak the same protocol; gateways tie together different protocols
실질적으로 프록시와 게이트웨이의 차이점은 모호하며, 프록시는 때때로 약간의 프로토콜 변환을 하기도 함
뿐만 아니라 상용 프록시 서버는 SSL 보안 프로토콜, SOCKS 방화벽, FTP 접근, 그리고 웹 기반 애플리케이션을 지원하기 위해 게이트웨이 기능을 구현하기도 함

6.2 Why Use Proxies?

프록시 서버를 통해 보안을 개선하고 성능을 높여주며, 비용을 절약할 수 있음
그리고 프록시 서버는 모든 HTTP 트래픽을 들여다보고 건드릴 수 있기 때문에, 프록시는 웹 서비스를 구현하기 위해 트래픽을 감시하고 수정할 수 있음
프록시가 사용되는 방법은 아래와 같음

Child filter

초등학교는 어린이들에게 교육 사이트를 제공하면서 동시에 성인 콘텐츠를 차단하기 위해 필터링 프록시를 사용할 수 있음
Figure 6-3. Proxy application example: child-safe Internet filter

Document access controller

프록시 서버는 많은 웹 서버들과 웹 리소스에 대한 단일 접근 제어 전략을 구현하고 감사 추적(audit trail)을 하기 위해 사용될 수 있다. 이는 대기업 환경이나 혹은 그 외의 분산된 관료 조직에서 유용함
각기 다른 조직에서 관리되는 다양한 종류의 수많은 웹 서버들에 대한 접근 제어를 수시로 갱신할 필요 없이, 중앙 프록시 서버에서 접근 제어를 설정할 수 있음
Figure 6-4. Proxy application example: contralized document access control

Security firewall

프록시 서버는 조직 안에 들어 오거나 나가는 응용 레벨 프로토콜의 흐름을 네트워크의 한 지점에서 통제
또한 트래픽을 세심히 살펴볼 수 있는 훅(hook)을 제공하며, 이는 바이러스를 제거하는 웹이나 이메일 프록시에서 사용될 수 있음
Figure 6-5. Proxy application example: security firewall

Web cache

프록시 캐시는 인기 있는 문서의 로컬 사본을 관리하고 해당 문서에 대한 요청이 오면 빠르게 제공하여, 느리고 비싼 인터넷 커뮤니케이션을 줄인다.
Figure 6-6. Proxy application example: web cache

Surrogate

어떤 프록시들은 웹 서버인 것처럼 위장한다. 그렇기 때문에 대리(surrogate) 혹은 리버스 프록시로 불리는 이들은 진짜 웹 서버 요청을 받지만 웹 서버와는 달리 요청 받은 컨텐츠의 위치를 찾아내기 위해 다른 서버와 커뮤니케이션을 시작한다.
대리 프록시는 공용 콘텐츠에 대한 느린 웹 서버의 성능을 개선하기 위해 사용될 수 있다. 이런 식으로 사용하는 대리 프록시를 흔히 서버 가속기(server accelerator)라고 부른다.
대리 프록시는 또한 컨텐츠 라우팅 기능과 결합되어 복제된 컨텐츠의 분산 네트워크를 만들기 위해 사용될 수 있다.
Figure 6-7. Proxy application example: surrogate (in a server accelerator deployment)

Content router

프록시 서버는 인터넷 트래픽 조건과 컨텐츠의 종류에 따라 요청을 특정 웹 서버로 유도하는 컨텐츠 라우터(content router)로 동작할 수 있다.
Example.
Figure 6-8. Proxy application example: content routing

Transcoder

프록시 서버는 콘텐츠를 클라이언트에게 전달하기 전에 본문 포맷을 수정할 수 있다.
이와 같이 데이터의 표현 방식을 자연스럽게 변환하는 것을 트랜스코딩이라고 부른다.
Usage Example.
Figure 6-9. Proxy application example: content transcoder

Anonymizer

익명화 프록시(anonymizer)는 HTTP 메시지에서 신원을 식별할 수 있는 특성들(예: 클라이언트 IP 주소, From 헤더, Referer 헤더, 쿠키, URI 세션 아이디)을 적극적으로 제거함으로써 개인 정보 보호와 익명성 보장에 기여한다.
Figure 6-10. Proxy application example: anonymizer
Figure 6-10 Description

6.3 Where Do Proxies Go?

6.3.1 Proxy Server Deployment

어떻게 사용할지에 따라서 프록시는 어디에든 배치할 수 있다. 그림 6-11은 프록시 서버가 배치될 수 있는 몇 가지 방법을 보여주고 있다.
Figure 6-11. Proxies can be deployed many ways, depending on their intended use.
출구 프록시_Egress proxy_Figure 6-11a
로컬 네트워크와 더 큰 인터넷 사이를 오가는 트래픽을 제어하기 위해 프락시를 로컬 네트워크 출구에 위치시킬 수 있다.
회사 밖의 악의적인 해커들을 막는 방화벽을 제공하기 위해(1), 혹은 인터넷 요금을 절약(2)하고 인터넷 트래픽의 성능을 개선(3)하기 위해 회사에서 출구 프록시를 사용할 수 있다. 초등학교에서는 학생들이 부적절한 컨텐츠를 브라우징하는 것을 막기 위해(4) 필터링 출구 프록시를 사용할 수 있다.
접근(혹은 입구) 프록시_Access (ingress) proxy_Figure 6-11b
고객으로부터의 모든 요청을 종합적으로 처리하기 위해 프록시는 ISP 접근 지점에 위치하기도 한다.
ISP는 사용자들의 다운로드 속도를 개선하고(특히 고속 접속 사용자들을 위해) 인터넷 대역폭 비용을 줄이기 위해 캐시 프록시를 사용해 많이 찾는 문서들의 사본을 저장한다.
대리 프록시_Surrogates (Figure 6-11c)
프록시는 종종 대리 프록시(리버스 프록시라고도 한다)로 사용된다. 대리 프록시는 네트워크의 가장 끝에 있는 웹 서버들의 바로 앞에 위치하여, 웹 서버로 향하는 모든 요청을 처리하고 필요할 때만 웹 서버에게 자원을 요청할 수 있다.
또한 웹 서버에 보안 기능을 추가하거나(1) 빠른 웹 서버 캐시를 느린 웹 서버의 앞에 놓음으로써 성능을 개선(2)할 수도 있다.
네트워크 교환 프록시_Network exchange proxy (Figure 6-11d)
캐시를 이용해 인터넷 교차로의 혼잡을 완화하고 트래픽 흐름을 감시하기 위해, 충분한 처리 능력을 갖춘 프록시가 네트워크 사이의 인터넷 피어링 교환 지점들에 놓일 수 있다.

6.3.2 Proxy Hierarchies

프록시는 프록시 계층(proxy hierarchies)이라 불리는 체인을 구성할 수 있음
프록시 계층에서 메시지는 최종적으로 오리진 서버에 도착할 때까지 프록시들을 거침
Figure 6-12. Three-level proxy hierarchy
프록시 계층에서 프록시 서버들은 부모(parent)와 자식(child) 관계를 가짐
다음 인바운드 프록시(서버에 가까운 쪽)를 부모라고 부르고, 다음 아웃바운드 프록시(클라이언트에 가까운 쪽)는 자식이라고 부름

Proxy hierarchy content routing

프록시 서버는 여러 가지 판단 근거에 의해 다양한 프록시 서버와 오리진 서버에 메시지를 보낼 수 있음
예를 들어, 액세스 프록시는 상황에 맞게 부모 프록시나 오리진 서버에게 라우팅함
Figure 6-13. Proxy hierarchies can be daynamic, changing for each request.
요청된 객체가 컨텐츠 분산을 위해 돈을 지불한 웹 서버에 저장되어 있는 경우, 프록시는 요청을 가까운 캐시 서버에게 보내 캐시된 객체를 반환하거나 그럴 수 없을 때는 서버에서 가져오게 할 수 있음
요청이 특정 종류의 이미지인 경우, 액세스 프록시는 그 요청을 특화된 압축 프록시에 보내어 그 프록시가 이미지를 가져와 압축하게 하여 느린 모뎀으로 접속했더라도 빠르게 클라이언트가 다운로드할 수 있게 함
Here are a few other examples of dynamic parent selection:
로드 밸런싱
자식 프록시는 부하를 분산하기 위해 현재 부모들의 작업량 수준에 근거하여 부모 프록시를 선택
지리적 인접성에 근거한 라우팅
자식 프록시는 오리진 서버의 지역을 담당하는 부모를 선택할 수 있음
프로토콜/타입 라우팅
자식 프록시는 URI에 근거하여 다른 부모나 오리진 서버로 라우팅할 수있음. 특정 종류의 URI를 갖고 있는 요청의 경우, 특별한 프록시 서버로 보내저 특정 프로토콜로 처리될 수도 있음
유료 서비스 가입자를 위한 라우팅
웹서비스 운영자가 빠른 서비스를 위해 추가금을 지불 했다면, 그들의 URI는 대형 캐시나 성능 개선을 위한 압축 엔진으로 라우팅 될 수 있음

6.3.3 How Proxies Get Traffic

클라이언트 트래픽이 프록시로 가도록 만드는 방법에는 다음 네 가지가 있음
Figure 6-14. There are many techniques to direct web reqeust to proxies

Modify the client

구글 크롬과 마이크로소프트의 브라우저를 포함한 많은 웹 클라이언트들은 수동 혹은 자동 프록시 설정을 지원함
만약 클라이언트가 프록시를 사용하도록 설정되어 있다면, 클라이언트는 HTTP 요청을 오리진 서버가 아닌 프록시로 보냄(그림 6-14a)

Modify the network

클라이언트 모르게, 네트워크 인프라를 가로채서 웹 트래픽을 프록시로 가도록 조정하는 방법들이 있음
이러한 인터셉트는 일반적으로 HTTP 트래픽을 지켜보고 가로채어 클라이언트 모르게 트래픽을 프록시로 보내는 스위칭 장치와 라우팅 장치를 필요로 함(그림 6-14b)
이러한 프록시를 인터셉트 프록시(intercepting proxy)라고 부름

Modify the DNS namespace

웹 서버 앞에 위치하는 프록시 서버인 대리 프록시는 웹 서버의 이름과 IP 주소를 자신이 직접 사용하여 모든 요청을 서버 대신 대리 프록시로 가도록 할 수 있음(그림 6-14c)
이는 DNS 이름 테이블을 수동으로 편집하거나 사용할 적절한 프록시나 서버를 계산해주는 특별한 동적 DNS 서버를 이용해서 조정될 수 있음

Modify the web server

몇몇 웹서버는 HTTP 리다이렉션 명령(응답코드 305)을 클라이언트에게 돌려줌으로써 클라이언트의 요청을 프록시로 리다이렉트 하도록 설정할 수 있음
리다이렉트를 받는 즉시 클라이언트는 프록시와 트랜잭션을 시작함(그림 6-14d)
이하 생략