SquidによるProxyサーバの構築
Proxy(代理)サーバはセキュリティ強化(ファイアーウォール)のために利用されるが,積極的な意味では,データを備蓄してそれを再利用することにも応用される。その目的に利用するためのProxyサーバのことをキャッシュサーバと呼んでいる。
クライアントマシンで,Webページを閲覧した場合,そのデータはそのクライアントのハードディスクの中にキャッシングされるが,このときにデータが通過したProxyサーバ内にもキャッシングすれば,別のクライアントで同じWebページを閲覧しようとしたとき,いちいちインターネットからデータを持ってくるのではなく,Proxyサーバにキャッシュされたデータを持ってくれば,その分読み込みは高速となり,外部への回線のトラフィックの軽減にもなる。例えば,授業などで利用するサイトをあらかじめ閲覧し,キャッシュしておくことにより細い回線でも生徒は快適に閲覧することができるようになる。
さらに,外部ネットワークと内部ネットワークを分離するゲートウェイにProxyサーバを設置することによりセキュリティ対策にもなる。
●Proxyサーバ「Squid」
Proxyサーバに多くの種類があるが,本研修では,UNIXで動作し,キャッシュサーバに機能に特化した「Squid」を使用する。UNIXで動作する他のProxyサーバとしてはApacheのProxyやCERN HTTPDやDelegateなどある。
(1)ネットワーク構成
Proxyサーバを設置する位置によりネットワークの構成が変わる。基本的には,Proxyサーバ単独で利用する場合と,ゲートウェイを兼ねる場合である。以下にネットワーク構成図を示す。

既存のネットワークに,端末と同じようにProxyサーバを追加設置するため,ブラウザの設定にProxyサーバを指定するだけでよい。

Proxyサーバをゲートウェイに設置した場合,外部向けのパケットは全てProxyサーバを経由しなければならない。このため,Proxyサーバが中継しないプロトコルでの通信は行えない。Squidの場合,中継するプロトコルはHTTP等なので,Web以外のインターネット利用は出来なくなる。ファイアウォールとしては強固である。

IPマスカレードを利用したファイアウォールにProxyサーバ機能を組み込む方法である。Proxyサーバが中継しないプロトコルはIPマスカレードによって通すことにより,他のインターネットプロトコルも使用できるようにし,Proxyサーバはキャッシュサーバとして利用する。
●構築するネットワーク構成
構築するネットワーク構成を,以下の図に示す。IPマスカレードファイアウォールに,Proxyサーバを加えた構成である。

(2)Squidのインストール
Linuxディストリビューションは,Laser5 Linux6.0を使用する。Squidがインストールされていない場合は,Laser5 Linux6.0のCD-ROMよりgnoRPMやRPMコマンドにより,Squid RPMパッケージを導入する。Laser5 Linux6.0付属のSquidパッケージは「squid-2.2.STABLE4-5.i386.rpm」である。
(3)Squidの基本設定
Squidの設定ファイルは,/etc/squid/squid.confである。squid.confは約1900行もあるテキストファイルであり,設定する項目は無数あるが,設定するべき項目は少ない。
エディタで,/etc/squid/squid.confを開き,次に示す 個所を変更する。
/etc/squid/squid.conf
<省略>約19行目 # NETWORK OPTIONS # TAG: icp_port <省略>約190行目 # <省略>約345行目 # The default is 8 Megabytes. キャッシュに使うメモリ量,搭載メモリが豊富ならば増やせばよいが,デフォルトでかまわない cache_mem 8 MB # TAG: cache_swap_low (percent, 0-100) どれくらいのサイズのファイルまでキャッシュするの指定。デフォルトは4MBである。 特に変更は不要 maximum_object_size 4096 KB <省略>約730行目 # TAG: reference_age どれくらいの期間キャッシュを持ち続けるかの設定。デフォルトは1ヶ月,3 daysとかでよいかも reference_age 1 month <省略>約990行目 #Examples: proxyサーバを利用できるホストを定義, 192.168.1.xのIPアドレスのクライアントをlocalnetとして定義している acl localnet src 192.168.1.0/255.255.255.0 # TAG: http_access http_access allow localnet http_access deny all |
あとは,運用をしながらチューニングを施す。設定の詳細については「http://squid.nlanr.net/」を参考にしてもらいたい。
(4)Squidの起動と停止
Squidの起動は,ターミナルよりルート権限で,
# cd /etc/rc.d/init.d |
と入力し,起動せさる。
エラーなど発生し,起動できないときはsquid.confを見直す。
Squidの起動中に,squid.confを変更した場合は,
# cd /etc/rc.d/init.d |
とする。
Squidをサービスとして起動する場合は,ntsysvコマンドを利用する。
#ntsysv |
と入力し,「squid」の項目の前に「*」を付ける。
この操作により,システムを起動するれば,squidはサービスとして自動起動する。
Squidを停止したい場合は,
# cd /etc/rc.d/init.d |
でよい。
(5)ブラウザのProxy設定
InternetExplorer4.01の例を示す。
InternetExplorer4.01のメニューより「表示(V)」→「オプション(O)」を選択し,「インターネットのプロパティ」画面より「接続」タブを表示させ,「プロキーサーバー」の項で,詳細(V)を選択する。

「プロキシー設定」画面において,「HTTP(H)」,「FTP(F)」の項に,構築した,プロキシーサーバのIPアドレスを指定し,ポート番号は,「Squid.conf」で指定した。「8080」に設定する。
(6)Squidによる有害情報へのアクセス制御
Squidにより,アクセス制御する方法について説明する。
ブロックするURLリストファイルの作成
以下に示すリストのように,アクセス制御するURLのリストを正規表現で記入したテキストファイル作成する。
/etc/squid/blacklist.txt
^http://www.yahoo.co.jp/ |
上記の例では,/etc/squidのディレクトリの中に「blacklist.txt」として,「Yahoo!JAPAN」と「goo」に対してアクセス制御した場合である。
ブロックするパス名リストファイル(URLからホスト名を除いた部分)の作成
以下に示すリストのように,アクセス制御するパスのリストを正規表現で記入したテキストファイル作成する。
/etc/squid/blackpath.txt
|
xxx |
上記の例では,/etc/squidのディレクトリの中に「blackpath.txt」として,「xxx」,「adult」,「sex」の文字列ががURLに含まれる場合に対してアクセス制御する例である。
※正規表現
正規表現が,「^」で始まっていれば前方一致(文字列の先頭部分が一致),「$」で終わっていれば後方一致(文字列の最後の部分が一致),「^」と「$」で文字列がはさまれていれば完全一致を意味する。
Squid.confの定義
<省略>約990行目 #Examples: acl blacklist url_regex “/etc/squid/blacklist.txt” <省略> #Default configuration: http_access allow localhost |
Squidがすでに起動している場合は,/etc/rc.d/init.d/squid restartとしてやれば,設定が更新される。
※Squidの設定ではまってしまった場所
squid.confの設定で,以下のようにキャッシュサイズ500MBに増や設定をしたところ,Restartがひたすら時間がかかり,うまくいかなかった。
cache_dir /var/spool/squid 500 16 256 |
最近の,squid.confを見たところ,以下のように「ufs」がついているではないか!
| cache_dir ufs /var/spool/squid 100 16 256 |
「ufs」を付けたところ,あっさり解決...。
参考文献:
- UNIX MAGAZINE 1999年3月号ASCII
- Squid プロキシーサーバの設定と運用長岡秀行 著テクノプレス
2000 Copyright© T.Kumashiro