squid入れた


お客様サイトの接続確認をするのに、いつも会社からアクセスしたり、
会社以外からのアクセスを確認するのに、外部の接続確認サイトを使ったりしていたが
単に繋がってるかどうかだけじゃなくて、htmlの表示もきちんとしているか等見てみたかったので
うちのサーバにプロキシサーバ(squid)をインストールした。

設定はものすごく簡単で、キャッシュサーバとしても匿名串としてもちゃんと機能している。
外から使われないように、LAN内と会社からしか接続を認めない設定にし、
ありがちな8080ポートじゃない秘密のポートにした。

なお、blogcubeなどが入っているサーバとは別マシンで動かしているので、
原理としてはアクセラレータとしても動かすことができるようだ。
マシンパワーは貧弱だけどw


■■ インストール

インストールはいたって簡単。
CentOSなのでいつも通りにyumでインストールする。

[root@intra1 ~]# yum install squid
(中略)
Installed: squid.i386 7:2.5.STABLE14-1.4E
Complete!

■■ 設定

[root@intra1 ~]# cd /etc/squid/

cachemgr.conf を除いて、設定ファイルのオリジナルが用意されているので、
いきなり編集しちゃってもよい。
[root@intra1 squid]# diff mime.conf mime.conf.default
[root@intra1 squid]# diff msntauth.conf msntauth.conf.default
[root@intra1 squid]# diff squid.conf squid.conf.default

今回設定するファイルはsquid.conf。

[root@intra1 squid]# vi squid.conf

ここを
# http_port 3128

こうする
# http_port 3128
http_port (秘密のポート番号)

ここを
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY

こうする
acl QUERY urlpath_regex cgi-bin ?
acl CONNECT method CONNECT
acl trusted src 192.168.0.0/255.255.255.0 (会社のGWのIPアドレス)/255.255.255.255
no_cache deny QUERY

ここを
http_access allow manager localhost
http_access deny manager

こうする
http_access allow localhost
http_access allow trusted
http_access deny all

ここを
# forwarded_for on

こうする
# forwarded_for on
forwarded_for off

#  TAG: visible_hostname    のところの

ここを
#Default:
# none

こうする
#Default:
# none
visible_hostname stellarcube.com

#  TAG: header_access        のところの

ここを
#Default:
# none

こうする
#Default:
# none
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all

■■ squidを起動する

■ 起動

[root@intra1 ~]# /etc/init.d/squid start
init_cache_dir /var/spool/squid... squid を起動中: .       [  OK  ]

■ 自動起動設定

[root@intra1 ~]# chkconfig --list squid
squid           0:off   1:off   2:off   3:off   4:off   5:off   6:off

[root@intra1 ~]# chkconfig squid on

[root@intra1 ~]# chkconfig --list squid
squid           0:off   1:off   2:on    3:on    4:on    5:on    6:off

■■ アクセステスト

会社からのアクセステストは、ブラウザにプロキシの設定をして行った。
LAN内からのアクセステストは、会社から家のlinuxマシンにSSHで接続して、wgetコマンドで行った。
wgetで試験する場合は

http_proxy="http://(プロキシサーバのグローバルIPアドレス):(ポート番号)" wget http://www.blogcube.info/
もしくは
http_proxy="http://(プロキシサーバのプライベートIPアドレス):(ポート番号)" wget http://www.blogcube.info/

で行う。

ログを流し見すると、アクセスしているのがわかる。

# tail -f /var/log/squid/access.log

1193721750.361      3 192.168.0.1 TCP_MISS/200 7033 GET http://www.blogcube.info/ - DIRECT/192.168.0.2 text/html
が、最初にアクセスしたログ。

1193721755.141      0 192.168.0.1 TCP_MEM_HIT/200 7040 GET http://www.blogcube.info/ - NONE/- text/html
が、ブラウザからのリクエストに対してキャッシュで返したログ。

これで会社からも、さも家からブラウザで見ているかのような試験を行うことができる。