[본문 스크랩] [Linux] Squid 웹프록시 서버 - II | iptable 2006.02.13 17:08
황장군(rhce) http://cafe.naver.com/firewall/2 이 게시물의 주소를 복사합니다
출처 블로그 > Hoya's Dream Factory
원문 http://blog.naver.com/curt16/10001369426
Squid 설정
다음 단계는 Squid 서버를 용도에 맞게 설정하는 일이다. Squid의 설정 파일은 /etc/squid/squid.conf에 위치하게 된다. squid.conf 파일을 어느 정도 용도에 맞게 설정하느냐에 따라 성능향상의 폭을 높일 수 있다. 처음으로 웹 가속모드를 설정하고 그 다음은 프로시 캐싱모드로 작동하도록 설정하겠다.
먼저 squid.conf는 앞서 언급한 Squid의 주 설정 파일이다. 파일의 내용을 자세히 보면 알겠지만 상당히 많은 옵션이 제공되고 있으나 실제로는 주요 몇 개의 옵션만 수정하면 된다. 또한 자세한 설명으로 별로 어렵지 않게 응용할 수도 있다. squid.conf 파일의 주요 내용은 다음과 같다.
http_port 80
icp_port 0
cache_mem 8 MB
cache_dir ufs /var/spool 100 16 256
emulate_httpd_log on
acl all src 0.0.0.0/0.0.0.0
http_access allow localhost
httpd_accel_host 201.111.132.32
httpd_accel_port 80
buffered_logs on
옵션별로 자세히 설명을 하자면,
http_port 80
'http_port' 80 옵션은 HTTP 클라이언트가 요청했을 경우 Squid가 응답할 소켓 주소이다. 디폴트 포트는 3128이고 만약 가속모드로 동작하는 Squid의 경우는 80번 포트를 사용해야 한다.
icp_port 0
'icp_port' 는 Squid가 ICP 쿼리를 인접하는 캐시로부터 주고 받을 포트를 정의한다. 디폴트는 3103이며 사용하지 않을 경우는 0으로 설정한다. Squid 웹 가속모드로 사용할 경우에는 0으로 해 사용하지 않는 상태로 설정한다. 이유는 Squid가 웹 가속모드로 작동할 경우 ICP를 사용하면 그 만큼 Squid에 불필요한 자원을 낭비하기 때문이다.
cache_mem 8 MB
'cache_mem'옵션은 In-Transit objects, hot Objects, Negative-Cached objects을 캐싱하기 위해 지원되는 메모리를 지정하는 옵션이다. 기본은 8MB이다.
cache_dir ufs /var/spool 100 16 256
'cache_dir ufs /var/spool/squid 100 16 256'은 Squid가 사용할 캐시 디렉토리 정의와 디스크용량, 디렉토리 수를 정의한다. 기본적으로 /var/spool 디렉토리를 사용하지만 디스크 용량이 여의치 않다면 특정 디렉토리로 변경 사용할 수 있다. 그 다음에 열거되는 수는 첫 번째, 앞에서 정의한 디렉토리의 용량을 설정한다. 따라서 /var/spool 디렉토리가 사용할 디스크용량은 100MB이다. 16과 256은 각각 캐시 디렉토리에서 생성할 하위 디렉토리 수 16과 첫 번째 하위 디렉토리에서 생성될 두 번째 하위 디렉토리 수 256이다.
emulate_httpd_log on
'emulate_httpd_log on'옵션은 Squid 자체가 많은 'httpd' 프로그램이 사용하는 로그포맷에 따라 로그를 남기도록 하는 설정이다. 따라서 Squid 자체도 별도의 웹로그 분석 툴로 로그 분석 보고서를 만들 수 있다.
acl all src 0.0.0.0/0.0.0.0
http_access allow
위의 두 옵션은 Squid 서버에 접근제어 설정에 사용하는 옵션이다. 현재는 웹 가속모드로 설정하기 때문에 따른 접근제한을 두지 않았다. 물론 다른 목적으로 Squid 서버를 구성할 때에는 이옵션을 적절히 제한해야만 한다.
httpd_accel_host 201.111.132.32
httpd_accel_port 80
'httpd_accel_host'는 실제 웹서버의 가속을 위하여 사용된다. 201.111.132.32로 Squid 서버가 웹가속 해주게 된다. 'httpd_accel_port 80'은 설명할 필요 없이 해당 포트를 정의한 것이다.
buffered_logs on
실제로 중요한 작동을 하는 옵션은 아니다. 로그 기록시 사용되는 시스템 자원을 절약함으로써 약간의 속도 향상을 기대할 수 있는 옵션이다.
프록시 캐싱모드로 Squid 설정
프록시 캐싱모드는 앞서 말한 웹 가속모드와는 완전히 다른 개념이다. Squid를 프록시 캐싱모드로 사용한다면 해당 네트워크의 모든 가입자가 Squid를 통해야만 인터넷 및 다른 네트워크로 접근할 수 있는 것이다. 또한 별도의 설정으로 내부 사용자들의 사이트 방문지나 연결시간 등을 제어할 수 있다.
앞서 설정한 웹 가속모드와 비슷하게 squid.conf를 수정하면 된다. 다만 접근제어 옵션부분만 자신의 네트워크 상황에 맞게 수정하면 된다. 프록시 캐싱모드에서는 접근제어목록(ACL)을 사용한다. 이 옵션으로 원본주소, 목적지주소, 원본도메인, 목적지도메인, 시간등을 제한 설정할 수 있고 자세한 내용은 squid.conf의 내용을 참조바란다.
접근제어 목록에 대해 간단히 살펴보면 다음과 같다.
acl aclname acltype string1 .....
acl aclname acltype "file' .....
예를 들자면,
acl localhost src 172.19.210.0/255.255.255.0
사설 IP 172.19.210.0 내부 사용자에 대해 Squid에 접근 가능토록 설정한 것이다. 물론 목적지 기반으로 dst를 사용 목적지 IP를 가진 네트워크에 대해서는 접근을 제어할 수 있다. 그럼 다음 접근제어목록을 보면서 이해 바란다.
acl localhost src 127.0.0.1/255.255.255.255
acl localhost src 172.19.210.0/255.255.255.0
acl Safe_ports port 80 443
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localhost
http_access allow localnet
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
acl 설정으로 로컬 및 사설 IP인 172.19.210.0을 사용하는 내부에게만 프록시 서버를 접근할 수 있도록 한 것이다. 또한 내부 포트 80, 443만 사용하도록 했고 명시되지 않은 어떠한 네트워크와 포트를 제한했다.
이와 같이 프록시 캐싱모드로 Squid를 활용한다면 적절한 설정으로 네트워크 및 포트등을 통제할 수 있다. 따라서 부적절한 사이트에 대해 근본적으로 차단할 수 있다. 이런 효과를 바탕으로 더 많은 부분에 대해서 활용될 수 있는 것도 Squid의 장점이다.
태그
태그저장 | 취소
황장군(rhce)
안녕하세요. 황장군의 블로그입니다. rhce
황장군(rhce) http://cafe.naver.com/firewall/2 이 게시물의 주소를 복사합니다
출처 블로그 > Hoya's Dream Factory
원문 http://blog.naver.com/curt16/10001369426
Squid 설정
다음 단계는 Squid 서버를 용도에 맞게 설정하는 일이다. Squid의 설정 파일은 /etc/squid/squid.conf에 위치하게 된다. squid.conf 파일을 어느 정도 용도에 맞게 설정하느냐에 따라 성능향상의 폭을 높일 수 있다. 처음으로 웹 가속모드를 설정하고 그 다음은 프로시 캐싱모드로 작동하도록 설정하겠다.
먼저 squid.conf는 앞서 언급한 Squid의 주 설정 파일이다. 파일의 내용을 자세히 보면 알겠지만 상당히 많은 옵션이 제공되고 있으나 실제로는 주요 몇 개의 옵션만 수정하면 된다. 또한 자세한 설명으로 별로 어렵지 않게 응용할 수도 있다. squid.conf 파일의 주요 내용은 다음과 같다.
http_port 80
icp_port 0
cache_mem 8 MB
cache_dir ufs /var/spool 100 16 256
emulate_httpd_log on
acl all src 0.0.0.0/0.0.0.0
http_access allow localhost
httpd_accel_host 201.111.132.32
httpd_accel_port 80
buffered_logs on
옵션별로 자세히 설명을 하자면,
http_port 80
'http_port' 80 옵션은 HTTP 클라이언트가 요청했을 경우 Squid가 응답할 소켓 주소이다. 디폴트 포트는 3128이고 만약 가속모드로 동작하는 Squid의 경우는 80번 포트를 사용해야 한다.
icp_port 0
'icp_port' 는 Squid가 ICP 쿼리를 인접하는 캐시로부터 주고 받을 포트를 정의한다. 디폴트는 3103이며 사용하지 않을 경우는 0으로 설정한다. Squid 웹 가속모드로 사용할 경우에는 0으로 해 사용하지 않는 상태로 설정한다. 이유는 Squid가 웹 가속모드로 작동할 경우 ICP를 사용하면 그 만큼 Squid에 불필요한 자원을 낭비하기 때문이다.
cache_mem 8 MB
'cache_mem'옵션은 In-Transit objects, hot Objects, Negative-Cached objects을 캐싱하기 위해 지원되는 메모리를 지정하는 옵션이다. 기본은 8MB이다.
cache_dir ufs /var/spool 100 16 256
'cache_dir ufs /var/spool/squid 100 16 256'은 Squid가 사용할 캐시 디렉토리 정의와 디스크용량, 디렉토리 수를 정의한다. 기본적으로 /var/spool 디렉토리를 사용하지만 디스크 용량이 여의치 않다면 특정 디렉토리로 변경 사용할 수 있다. 그 다음에 열거되는 수는 첫 번째, 앞에서 정의한 디렉토리의 용량을 설정한다. 따라서 /var/spool 디렉토리가 사용할 디스크용량은 100MB이다. 16과 256은 각각 캐시 디렉토리에서 생성할 하위 디렉토리 수 16과 첫 번째 하위 디렉토리에서 생성될 두 번째 하위 디렉토리 수 256이다.
emulate_httpd_log on
'emulate_httpd_log on'옵션은 Squid 자체가 많은 'httpd' 프로그램이 사용하는 로그포맷에 따라 로그를 남기도록 하는 설정이다. 따라서 Squid 자체도 별도의 웹로그 분석 툴로 로그 분석 보고서를 만들 수 있다.
acl all src 0.0.0.0/0.0.0.0
http_access allow
위의 두 옵션은 Squid 서버에 접근제어 설정에 사용하는 옵션이다. 현재는 웹 가속모드로 설정하기 때문에 따른 접근제한을 두지 않았다. 물론 다른 목적으로 Squid 서버를 구성할 때에는 이옵션을 적절히 제한해야만 한다.
httpd_accel_host 201.111.132.32
httpd_accel_port 80
'httpd_accel_host'는 실제 웹서버의 가속을 위하여 사용된다. 201.111.132.32로 Squid 서버가 웹가속 해주게 된다. 'httpd_accel_port 80'은 설명할 필요 없이 해당 포트를 정의한 것이다.
buffered_logs on
실제로 중요한 작동을 하는 옵션은 아니다. 로그 기록시 사용되는 시스템 자원을 절약함으로써 약간의 속도 향상을 기대할 수 있는 옵션이다.
프록시 캐싱모드로 Squid 설정
프록시 캐싱모드는 앞서 말한 웹 가속모드와는 완전히 다른 개념이다. Squid를 프록시 캐싱모드로 사용한다면 해당 네트워크의 모든 가입자가 Squid를 통해야만 인터넷 및 다른 네트워크로 접근할 수 있는 것이다. 또한 별도의 설정으로 내부 사용자들의 사이트 방문지나 연결시간 등을 제어할 수 있다.
앞서 설정한 웹 가속모드와 비슷하게 squid.conf를 수정하면 된다. 다만 접근제어 옵션부분만 자신의 네트워크 상황에 맞게 수정하면 된다. 프록시 캐싱모드에서는 접근제어목록(ACL)을 사용한다. 이 옵션으로 원본주소, 목적지주소, 원본도메인, 목적지도메인, 시간등을 제한 설정할 수 있고 자세한 내용은 squid.conf의 내용을 참조바란다.
접근제어 목록에 대해 간단히 살펴보면 다음과 같다.
acl aclname acltype string1 .....
acl aclname acltype "file' .....
예를 들자면,
acl localhost src 172.19.210.0/255.255.255.0
사설 IP 172.19.210.0 내부 사용자에 대해 Squid에 접근 가능토록 설정한 것이다. 물론 목적지 기반으로 dst를 사용 목적지 IP를 가진 네트워크에 대해서는 접근을 제어할 수 있다. 그럼 다음 접근제어목록을 보면서 이해 바란다.
acl localhost src 127.0.0.1/255.255.255.255
acl localhost src 172.19.210.0/255.255.255.0
acl Safe_ports port 80 443
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localhost
http_access allow localnet
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
acl 설정으로 로컬 및 사설 IP인 172.19.210.0을 사용하는 내부에게만 프록시 서버를 접근할 수 있도록 한 것이다. 또한 내부 포트 80, 443만 사용하도록 했고 명시되지 않은 어떠한 네트워크와 포트를 제한했다.
이와 같이 프록시 캐싱모드로 Squid를 활용한다면 적절한 설정으로 네트워크 및 포트등을 통제할 수 있다. 따라서 부적절한 사이트에 대해 근본적으로 차단할 수 있다. 이런 효과를 바탕으로 더 많은 부분에 대해서 활용될 수 있는 것도 Squid의 장점이다.
태그
태그저장 | 취소
황장군(rhce)
안녕하세요. 황장군의 블로그입니다. rhce