透過型Proxyの構築
Proxyの設定をクライアントPC全部に設定するのは面倒なので
IPマスカレードと組み合わせてポート80はsquid経由させるようにして
強制的にProxy通す(^^)
■調査に使用したマシン
DELL Precision220
CPU: PentiumIII/833MHz × 1
Memory: 256Mbyte
HDD: 40Gbyte(IDE)
PS/2マウス
日本語106キーボード
※ネットワークカードを一枚追加(合計2個)
■OS
Turbo Linux Server 6.1(日本語版)
OSのインストールメモはTurbo Linux Server 6.1 のインストールメモにあります。
■ネットワーク環境
説明用の架空の環境です。
設定は/usr/sbin/turbonetcfgで行うのが簡単です。
ドメイン:hogehoge.com
ホスト名:imo
DNSサーバー:111.111.111.2
ルータアドレス:111.111.111.1
インターネット側インターフェース(eth0)
IPアドレス:111.111.111.111
ネットマスク:255.255.255.0
LAN側インターフェース(eth1)
IPアドレス:192.168.0.1
ネットマスク:255.255.255.0
■Squidパッケージの削除
TurboLinuxに含まれるパッケージ版squidは
透過型に対応するようにMakeされていないため削除する
# rpm -e squid
■最新版のダウンロード
http://www.squid-cache.org/ から最新版をダウンロードする。
最新版は「2.4.STABLE1」(2001/4/27)
■インストール(全てデフォルト)
$ gtar zxvf squid-2.4.STABLE1-src.tar.gz
$ cd squid-2.4.STABLE1
$ ./configure
# make all
# make install
■ユーザー、グループ、ディレクトリの作成
パッケージ版のSquidがユーザー=squid、グループ=squidで
実行される設定となっていたので真似る。
# /usr/sbin/groupadd -g squid
# /usr/sbin/useradd -g squid -d /var/spool/squid -s /dev/null squid
ログの出力先やキャッシュ用ディレクトリの場所も真似る。
# mkdir /var/spool/squid
# chown squid.squid /var/spool/squid
# chmod 750 /var/spool/squid
# mkdir /var/log/squid
# chown squid.squid /var/log/squid
# chmod 750 /var/log/squid
■squid.confの設定
デフォルトでmakeするとsquidは /usr/local/squid にインストールされます。
設定ファイルの場所は /usr/local/squid/etc/squid.conf となります。
・メモリキャッシュの容量を増やす。(デフォルトは8MB)
cache_mem 32 MB
・ファイルキャッシュの一つのファイルの最大サイズを増やす(デフォルトは4096KB)
maximum_object_size 20480 KB
・メモリキャッシュの一つのファイルの最大サイズを増やす(デフォルト8KB)
maximum_object_size_in_memory 32 KB
・URLに特定の文字列が含まれる場合はキャッシュしない設定
acl QUERY urlpath_regex cgi servlet \?
・キャッシュディレクトリ(キャッシュ用のディスク領域も100MBから1GBに増やす)
cache_dir ufs /var/spool/squid 1000 16 256
↑
1000の部分が1GBの指定になります。
・キャッシュアクセスログ
cache_access_log /var/log/squid/access.log
・キャッシュログ
cache_log /var/log/squid/cache.log
・キャッシュストアログ
cache_store_log /var/log/squid/store.log
・アクセス許可(LAN側全て許可)
acl lan src 192.168.0.0/255.255.255.0
http_access allow lan (注意:deny allの行より上に書くこと)
・透過型にするための設定
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
・ユーザー、グループ(上で作ったユーザー、グループを指定)
cache_effective_user squid
cache_effective_group squid
■キャッシュディレクトリの作成
/usr/local/squid/bin/squid -z でキャッシュディレクトリを作成
■ipchainsの設定
・IPマスカレードの設定をする
・パケットフォワーディングを有効にする。
# echo "1" > /proc/sys/net/ipv4/ip_forward
起動時に有効にするには
/etc/sysconfig/networkの「FORWARD_IPV4」を「yes」にする
・ルータとして動作させるためのルーティング情報の設定
/etc/sysconfig/static-routesファイルに次の2行を記述
eth0 net 111.111.111.0 netmask 255.255.255.0
eth1 net 192.168.0.0 netmask 255.255.255.0
※eth0がインターネット側、eth1がLAN側
・フォワーディングポリシーの設定
sbin/ipchainsコマンドで設定する。起動時に有効になるよう
/etc/rc.d/rc.localの最後に次の2行を追加
ipchains -A forward -s 192.168.0.0/24 -j MASQ
ipchains -P forward -j DENY
・透過型Proxyに対応するルールの追加
sbin/ipchainsコマンドで設定する。起動時に有効になるよう
/etc/rc.d/rc.localの最後に次の行を追加
ipchains -A input -p tcp -d 0.0.0.0/0 www -j REDIRECT 3128
■動作確認
/usr/local/squid/bin/RunCache& で実行
ブラウザーで適当なWebサイトを見て、
ログ(/var/log/squid/access.log)で動作を確認
■OS起動時にsquidが起動するように
/etc/rc.d/rc.localの最後に次の行を追加
/usr/local/squid/bin/RunCache
以上
---------------------------------------------------------------------
2002.05.09 ログおよびキャッシュディレクトリの作成について
間違った記述があったので修正
---------------------------------------------------------------------