Squidでプロクシ

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

2.x3.xに分割しました。

分割したので、1から書き直しますよ。

書き直すまでの置き場として↓にコピペしておきます。


 代表的なProxyサーバであるsquidをインストールして遊びます。

3.2がもうそろそろStableがリリースされそうですな。HTTP1.1に完全対応したとか謳ってます。設定も結構変わってるようなので、そのうちまとめて起きますか

HP: http://www.squid-cache.org/

インストール前の設定

useradd -d /nodir -s /bin/false squid

インストール

cd /usr/local/src
wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.9.tar.bz2
tar jxvf squid-3.1.9.tar.bz2
cd squid-3.1.9

/configure \
--prefix=/usr/local/squid \
--enable-gnuregex \
--enable-icmp \
--enable-delay-pools \
--enable-useragent-log \
--enable-referer-log \
--enable-arp-acl \
--enable-ssl \
--enable-default-err-language=Japanese \
--enable-auth="basic digest negotiate ntlm" \
--enable-basic-auth-helpers="NCSA PAM SASL SMB YP squid_radius_auth" \
--enable-ntlm-auth-helpers="fakeauth" \
--enable-negotiate-auth-helpers="squid_kerb_auth" \
--enable-digest-auth-helpers="ldap password" \
--enable-ntlm-fail-open \
--enable-x-accelerator-vary \
--with-pthreads \
--with-aio \
--with-dl \
--with-openssl=/usr/local/ssl \
--with-large-files \
--with-build-environment=POSIX_V6_LP64_OFF64 \
--disable-wccp \
--disable-wccpv2

make
make install
chown -R squid. /usr/local/squid

認証用のファイルを用意しておきます。

/usr/local/apache2/bin/htpasswd -c /usr/local/squid/etc/.htpasswd test
New password: ******
Re-type new password: ******
Adding password for user test

とりあえず動くように設定
基本的に記述したもの以外はデフォルトです。

/usr/local/squid/etc/squid.conf

auth_param digest program /usr/local/squid/libexec/digest_pw_auth -c /home/.htdigest
auth_param digest children 5
auth_param digest realm Secret Zone
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50
acl all src all
acl xxxxxx src 192.168.xx.0/24
acl xxx src 192.168.xx.xx
acl xxx src xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
acl authen proxy_auth REQUIRED
acl xxxxxxx src xxx.xxx.xxx.xxx
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl POST method POST
acl GET method GET
acl HEAD method HEAD
acl localdom dstdom_regex 192.168.xx.*
acl gwnet dst 192.168.xx.xxx
acl snmppublic snmp_community xxxxxxxxxx
http_access allow manager localhost xxxxxxx
http_access deny manager
http_access deny to_localhost
acl denyport port 1080
http_access deny denyport
http_access deny localdom xxxxxx
http_access deny gwnet xxxxxx
http_access deny !Safe_ports xxxxxx
http_access allow xxxxxx authen HEAD GET CONNECT !Safe_ports
http_access allow localhost
http_access allow xxx authen
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 28080
hierarchy_stoplist ^http://
hierarchy_stoplist ^https://
hierarchy_stoplist ^ftp://
hierarchy_stoplist *.jpg$
cache_mem 256 MB
cache_dir ufs /home/hdd/squid/cache 500 16 256
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs % logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %h] [% logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs % logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs % access_log /usr/local/squid/var/logs/access.log squid
access_log /usr/local/squid/var/logs/access.log_combined combined
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
pid_filename /usr/local/squid/var/logs/squid.pid
strip_query_terms off
ftp_user anonymous@xxxxxxxxx
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
via off
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
request_header_access Referer deny internal
cache_mgr xxxxxxxx
cache_effective_user squid
cache_effective_group squid
httpd_suppress_version_string off
snmp_port 3401
snmp_access allow snmppublic localhost
snmp_access deny all
icp_port 3130
forwarded_for off
cachemgr_passwd xxxxxx all

キャッシュディレクトリの構築

/usr/local/squid/sbin/squid -z

ここでエラーが出る場合はキャッシュ用ディレクトリが無いので
squidがオーナーなキャッシュディレクトリを作成してください。

エラーが出なければ起動スクリプトを用意して起動

cp contrib/squid.rc /etc/init.d/squid

権限を与えて自動起動するようにする

chmod 755 /etc/init.d/squid
chkconfig --add squid
/etc/init.d/squid start

これで起動が出来たらおしまいです。
IEとかの設定にサーバのIP+8080でアクセスをすると
認証のポップアップがでます。
先に設定したIDとパスワードを入力すると晴れて閲覧可能になります。

Squidでリバースプロクシ

変えるのはコンフィグとポートです。

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
emulate_httpd_log on
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl localnet src 127.0.0.1 192.168.xx.xx
acl sonota src 192.168.xxx.x/255.255.255.0
http_access allow localnet
http_access deny sonota
http_access allow all
http_reply_access allow all
icp_access allow all
forwarded_for on
coredump_dir /var/spool/squid
client_persistent_connections off
server_persistent_connections off
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
http_port 80
https_port 443 cert=/etc/squid/ssl/server.crt key=/etc/squid/ssl/server.key
cache_effective_user squid
cache_effective_group squid
visible_hostname www.momo-i.org
httpd_accel_host virtual
header_access Via deny all
header_access User-Agent deny all

httpdは81とか違うポートであけておかないと起動しません。

Squid-2.6からコンフィグオプションが結構変わってます。
リバースProxyについて特に変わっているので、とりあえず動いたのをだします。
(2.6時点のため、3.0STABLE1xで今度確認します)

http_port 18080 vhost vport vport=80
https_port 443 cert=/etc/squid/ssl/server.crt key=/etc/squid/ssl/server.key vhost
cache_peer 192.168.11.1 parent 80 0 no-query
hierarchy_stoplist cgi-bin ?
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
http_access allow all
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow localhost
http_reply_access allow all
icp_access allow all
coredump_dir /var/spool/squid

http_accel*がなくなってhttp_portとhttps_portとcache_peerに統合されたようです。

匿名串の作り方

コンフィグに以下を追加するとあら不思議匿名串になります。

header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all

3.x系?だとheader_accessが無くなり、
request_header_accessとreply_header_access
が代わりの設定になるようです。

request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

キャッシュさせない

とりあえず串を使わせたいけどキャッシュさせるのはいやだ!と言う人向け?

acl all src all
no_cache deny all

後は適当に。。。

Tags: 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.