다음 이전 차례

2. 트랜스페어런트 프록시(Transparent Proxying)의 개요

2.1 동기 부여

"보통의" 프록시를 사용함에 있어서, 클라이언트는 웹 브라우징 소프트웨어(web browsing software)에서 프록시의 호스트명과 포트 번호를 지정한다. 그러면 브라우저는 프록시에 요청하고, 프록시는 원래의 서버한테로 요청을 전달한다. 이것은 모두 성능이 뛰어나지만, 때때로 여러 상황들 중의 하나가 생기도 한다. 가령,

이런 상황에 트랜스페어런트 프록시 사용이 편리하다. 웹 요청은 프록시에 의해 가로채여질 수 있다. 즉, 클라이언트 소프트웨어가 알고 있기로는, 원래의 서버와 교신하겠지만, 실제로는 프록시 서버인 것이다.

시스코 라우터는 트랜스페어런트 프록시를 사용하는 것을 지원한다. 그러나, (상당히 놀랍게도) 리눅스는 라우터로 동작할 수 있고, TCP 연결을 지역 포트(local ports)로 재지정함으로써 트랜스페어런트 프록시 역할을 수행하기도 한다. 그렇지만, 우리의 웹 프록시가 재지정의 영향을 알도록 할 필요가 역시 있고, 그래서 적절한 원래의 서버한테 연결할 수 있다. 이런 작동에는 두 가지 일반적인 방식이 있다:

첫 번째는 여러분의 웹 프록시가 트랜스페어런트 프록시를 알지 못하는 때이다. 여러분은 웹 프록시의 전반부에 놓이고 여러분을 대신해서 온갖 귀찮은 사소한 일을 돌보는 트랜스프록시 (transproxy)라고 불리는 재빠르고 작은 데몬을 사용할 수 있다. 트랜스프록시는 John Saunders에 의해 작성되었고, ftp://ftp.nlc.net .au/pub/linux/www/ 또는 metalab 미러 사이트로부터 구할 수 있다. 트랜스프록시는 이 문서에서 더 이상 논의하지 않을 것이다.

더욱 완전한 솔루션은 트랜스페어런트 프록시 자체를 알고 있는 웹 프록시를 갖는 것이다. 여기서 우리의 관심을 모으는 것은 squid이다. squid는 유닉스 시스템을 위한 오픈 소스 (Open Source) 캐슁 프록시 서버이다. www.squid-cache.org로부터 구할 수 있다.

2.2 이 문서의 범위

이 문서는 squid 2.3 버전과 리눅스 커널 2.2 버전, 이 글이 쓰여지는 현재(2000년 3월)에 가장 안정된 공개본에 초점을 맞출 것이다. 또한 2.0과 더 최근의 2.1 리눅스 커널들만큼 일찍부터 squid와 같이 작동한다. 여러분이 더 이전의 발표본에 대한 정보가 필요하다면 www.unxsoft.com에서 좀 이전의 문서를 찾을 수 잇다.

만일 여러분이 리눅스 2.3을 사용하기 원한다면, ipchains 대신에 netfilter라고 불리는 것을 사용하여야 한다. 그렇지만, 여러분이 개발 커널을 실행하고 있다면, 제공된 문서로부터 여러분 자신의 방식으로 netfilter를 이해할 수 있다고 가정한다. 만일 그렇지 않다면, 여러분은 실제로 개발 커널을 실행해서는 안 된다. 리눅스 2.4가 발표되면 이 문서는 netfilter를 다루기 위해 갱신될 것이다.

이 문서는 HTTP 프록시를 사용하는 것만을 중점적으로 다룬다는 것을 알린다. 트랜스페어런트 FTP 프록시를 사용하는 것에 대한 묻는 전자우편을 수많이 받는다. 투명하게 FTP를 대리(프록시)하는 것이 이론적으로 불가능하지는 않지만, 반면에 HTTP보다 훨씬 더 어렵고, 그런 것이 가능한 어떤 도구에 대해 현재 구하는 방법을 알지 못한다. 만일 여러분이 잘 알고 있으면, 여러분도 자신의 HOWTO를 작성하도록 제안한다...


다음 이전 차례