タグ: squid

squid のキャッシュ削除

とりあえず、squidを一旦停止。

/etc/init.d/squid stop

キャッシュが保存されているディレクトリを削除。

rm -rf /var/spool/squid/*

キャッシュディレクトリを改めて確保しておく。

squid -z

squidを立ちあげて、OKが出ればよし。

/etc/init.d/squid start

これってサービス止めないで出来ないかなぁ。

squid

yum install squid

で普通にインストール。

vi /etc/squid/squid.conf

を書き換える。

#http_port 3128
http_port 8080 transparent

#cache mem 8M
cache mem 32M

ポート番号をデフォルトの3128から8080に変更して透過型にする。
キャッシュサイズも多少あげておく。

aclを書く。

acl locals src 192.168.1.0/255.255.255.0
acl passlist dstdomain "/etc/squid/passlist.txt"
acl blocklist dstdomain "/etc/squid/blocklist.txt"

dstdomainでファイルを指定する。
ファイルの中身は
.google.co.jp
.google.com
katzplus.com
のようなドメインの羅列。

「特定ドメインの特定ディレクトリのみ」というような指定をする場合は

acl regex_passlist url_regex "/etc/squid/regex_passlist.txt"

というように「url_regex」で指定する。
regex_passlist.txtの中身は正規表現で記入する。
^http://mail\.google\.com($|/|:)
^http://[^/]*\.katzplus\.com($|/|:)

aclを書いたらそれぞれの許可・拒否を指定していく。
aclは上から順番に照合して、合致したものがあるとそこから先のルールは照合されないので、順番には気をつける。

http_access allow localhost
・・・
http_access deny !locals
http_access deny blocklist
http_access allow passlist
・・・
http_access deny all
# ↑ですべてのアクセスを拒否しているのでここから下は何を書いても意味がない。

先にblocklistで拒否してから次にpasslistを許可すると、両方に書いてあるドメインはとりあえず拒否が先に合致するので拒否される。

書き終わったら保存して終了。

/etc/init.d/squid start

で起動するか確認。
起動したら

chkconfig --level 35 squid on

で自動起動するようにしておく。

iptableを書き換えて80番ポートで来たものを8080番ポートに転送するようにしておく

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

さらにIP Forwardingを有効にするため、

vi /etc/sysctl.conf

を書き換える。

net.ipv4.ip_forward = 0
↓
net.ipv4.ip_forward = 1

ここまでやったらネットワークの再起動

/etc/init.d/network restart