ITエンジニアとして 知る 学ぶ
 
Java
.NET
PHP
プログラミング一般
DataBase
システム/サーバ構築
システム/サーバ運用
技術系一般知識
 
 
IT技術情報>システム/サーバ構築>プロキシサーバSquid 2.squidのインストール
【連載】 プロキシサーバSquid  

【 ページ 】 | 1 | 2 |

<<前のページへ

●プロキシサーバ構築

では、実際にsquidを利用したプロキシサーバを構築していきましょう。 想定するネットワーク構成は以下の通りです。ここでは、ローカルネットワーク (192.168.0.0/24)からのみプロキシサーバの利用を認めるよう設定していきます。


●squidのインストール


squidはhttp://www.squid-cache.orgにて入手できます。2003/06/16現在の最新安定版として、squid-2.5.STABLE3.tar.gzが利用できます。 インストールは以下の手順で実行すればよいでしょう。

# tar zxvf squid-2.5.STABLE3.tar.gz
# cd squid-2.5.STABLE3
# ./configure --enable-err-language=Japanese \
--enable-useragent-log \
--enable-referer-log \
--enable-linux-netfilter \
--enable-poll \
--enable-carp \
--enable-removal-policies="heap,lru" \
--enable-storeio="diskd,ufs" \
--enable-auth-modules="LDAP,NCSA,PAM,SMB,MSNT" \
--disable-ident-lookups \
--disable-internal-dns
# make
# make install

これで、/usr/local/squidディレクトリ以下に各種ファイル群が生成されます。

●設定ファイルの主な項目

squidの設定は/usr/local/squid/etc/squid.confを編集することで行います。プロキシサーバの性質から、多くの設定項目がありますが、多くのパラメータはデフォルトとして適切な値が設定されているので、最低限の設定項目について説明します。(各設定項目についてはsquid.confファイルを参照してください。)

メリット 説明
http_port 8080 (デフォルトは3128ですが、多くの場合プロキシには8080を利用する)
cache_dir できれば別パーティション上のキャッシュ専用ディレクトリ
cache_access_log /usr/local/squid/var/logs/cache_access_log
cache_log /usr/local/squid/var/logs/cache_log
cache_store_log /usr/local/squid/var/logs/cache_store_log
ftp_user AnonymousFTPユーザ用メールアドレス
Acl 後述()
http_access 後述()
cache_mgr 後述()
cache_effective_user Nobody
cache_effective_group Nobody
refresh_pattern 後述()
logfile_rotate 10


▼Java や Linux を体系的に学びましょう!▼
Stack*のラクスが、
新学習方式のカリキュラムを開発しました!
14700円から(*1)、Java や Linux を体系的に学べます!!
(*1 テキスト代のみの税込料金です)




●キャッシュディレクトリに関する項目

●squid実行ユーザ/グループの設定 (cache_effective_user/ group)

/usr/local/squid/etc/squid.confのcache_effective_user及び cache_effective_groupはキャッシュをディスクに書き込む際のユーザ権限です。デフォルトではcache_effective_groupにnogroupが設定されていますが、RedHatLinuxのデフォルトではnogroupは存在しないため、ここでは既に存在するnobodyに変更します。また、できるだけ他のプログラムとは別の権限を与えたいので、Apacheなど多くのプログラムで利用されるnobodyではなく、例えば、squidというユーザ/グループを作成することも考えられます。

1: #Default:
2: # cache_effective_user nobody
3: cache_effective_group nobody


●キャッシュディレクトリの設定

キャッシュを保存しておくディレクトリの設定はcache_dirで行います。今回はデフォルト値を変更し、キャッシュサイズ200MB、サブディレクトリの階層構造は16×256、/squidCacheディレクトリにキャッシュを保存するように設定していきます。ちなみに、cache_dirは複数行設定することもできます。 また、デフォルトのufsというデータ保存形式を利用するのが一般的ですが、ここではメインのSquidプログラムとは別のdiskdというデーモンを動作させ、キャッシュデータの書込みによってSquidデーモンの応答が悪くなることを予防しています。

4: #Default:
5: # cache_dir ufs /usr/local/squid/cache 100 16 256
6: cache_dir diskd /squidCache 200 16 256



そして、cache_effective_userで設定したユーザでキャッシュやログが書き込めるように、squidCacheディレクトリとlogsディレクトリの所有者を設定しておきます。ここではnobodyユーザを設定しましたので、以下のようにコマンドを実行してください。また、squidCacheディレクトリに関しては新規作成する必要があります。

# mkdir /squidCache
# chown nobody.nobody /squidCache
# chown nobody.nobody /usr/local/squid/var/logs


●キャッシュディレクトリの作成

その後、以下のように実行し、キャッシュ構造を作成します。
# /usr/local/squid/sbin/squid -z

※ このディレクトリはsquidがキャッシュを管理する際に内部的に利用されます。

●アクセス制限の設定

●アクセスコントロールリスト (acl)

ここではあるホスト群や、プロトコル、ポート番号の集合などに名前を付けます。この名前はhttp_accessなどの項目で使用されます。 デフォルトの設定の一部を例に説明します。

7: acl all src 0.0.0.0/0.0.0.0 …(1)
8: acl manager proto cache_object …(2)
9: acl localhost src 127.0.0.1/255.255.255.255 …(3)
10: acl SSL_ports port 443 563 …(4)
11: acl Safe_ports port 80 …(5)

(1)全てのホストからのアクセスに対して"all"という名前を定義しています。 (2)cachemgr.cgi(統計情報を出すためのプログラム)が使用する"cache_object"に"manager"という名前を定義しています。このプログラムについては後述します。 (3)送信元が127.0.0.1であるアクセス(ローカルループバック)に対して"localhost"という名前を定義しています。 (4)ポート443と563に"SSL_ports"という名前を定義しています。 (5)ポート 80に"Safe_ports"という名前を定義しています。

●HTTPアクセスの制限 (http_access)

http_accessではaclで設定したacl名を使用して、squidの使用に関する許可、或いは拒否の設定をします。これらの"http_access"は設定した順に有効になります。

12: http_access allow manager localhost …(6)
13: http_access deny manager …(7)
14: http_access deny !Safe_ports …(8)
15: http_access deny CONNECT !SSL_ports …(9)
16: http_access allow localhost …(10)
17: http_access deny all …(11)



(6)ローカルのキャッシュマネージャによる操作を許可します。("manager"についてはacl設定を参照)
(7)その他のキャッシュマネージャの操作を禁じます。(アドレスの設定がない場合は0.0.0.0/0.0.0.0を指定したことになります。)
(8)Safe_portsで指定したアクセス以外のアクセスを禁じます。(頭の"!"は否定の意味を表します。)
(9)SSL_ports以外からのCONNECTメソッドを禁じます。
(10)ローカルホストのアクセス全てを許可します。
(11)上記以外全てのアクセスを禁じます。

デフォルト設定のままではローカルホストだけがsquidを使用できる状態にあり、他のホストにプロキシサービスを利用させることはできません。ここでは、ネットワーク192.168.0.0/255.255.255.0からのみ接続を認めるように、以下のような設定を上記(11)より上の行で設定します。

18: acl localnet src 192.168.0.0/255.255.255.0
19: http_access allow localnet


●その他の設定

これ以降はSquidの付加的な機能設定をいくつか紹介します。まずは『Squidを動作させたい』というかたは読み飛ばしてください。

使用ポートの設定 (http_port)

squidはクライアントとの通信に3128/TCPをデフォルトで利用しますが、一般的にHTTPプロキシによく利用されるポート番号は8080/TCPです。もし、変更したい場合は、以下を設定します。

20: http_port 8080

●管理者アドレスの設定 (cache_mgr)

また、何らかのトラブルによりサーバが稼働停止した場合、メールを送ることによりサーバの復旧を促すことができます。squidに問題が生じたときには"cache_mgr"に指定したアドレスがブラウザに表示されます。そのため、"cache_mgr"に管理者のメールアドレスを設定します。

21: cache_mgr asano@itboost.co.jp

●AnonymousFTPユーザのメールアドレス設定 (ftp_user)

AnonymousFTPを使用するときにはパスワードとしてメールアドレスを入れる必要があります。通常ブラウザではその処理を自動的に処理してくれていますが、Squid経由でAnonymousFTP接続する場合、Squidがメールアドレスの送信を代行します。そのときに使用するメールアドレスは"ftp_user"で指定します。

22: ftp_user anon@itboost.co.jp

●キャッシュの有効期限の設定 (refresh_pattern)

キャッシュを有効に使用するには、キュッシュの保存期間をコントロールすることが望まれます。例えば、掲示板やニュース関係の頻繁に更新されるであろうファイルは、それに応じてキャッシュの更新も望まれます。また反対に、拡張子が.gifなどの画像ファイルはそう頻繁に変わるものでもありません。このように、それぞれのキュッシュに応じた保存期間をコントロールするためにrefresh_patternがあります。
ここでは、デフォルトの設定で話を進めていきます。詳しい情報はsquid.confのコメント行を参照してください。
デフォルト設定は以下の通りです。

23: refresh_pattern ^ftp: 1440 20% 1008
24: refresh_pattern ^gopher: 1440 0% 1440
25: refresh_pattern . 0 20% 4320

各行2列目の設定項目で対象となるファイルを指定しています。具体的には、1行目の設定でファイル名の頭が"ftp:"で始まるファイル、2行目の設定で"gopher:"で始まるファイル、3行目の設定でそれ以外のすべてのファイルを指定しています。
3列目から5列目の項目は、それぞれ順に"min"、"persent"、"max"に値し、単位は順に"分"、"%"、"分"で設定します。そして、ここで設定した条件と"age"、"lm-factor"、"expires"とを判断式により比較し、キャッシュが新しいか、そうでないかを判断します。

・age…ファイルをキャッシュしてから現在までの時間
・lm-factor…lm-factor=age/lm_age 
※lm_age:サーバ上での最終更新時刻からキャッシュするまでの時間
・expires…サーバが返すファイル自体の有効期限


判断式は以下の通りです。

26: FRESH if expires < now, else STALE …(1)
27: STALE if age > max …(2)
28: FRESH if lm-factor < percent, else STALE …(3)
29: FRESH if age < min …(4)
30: else STALE

上から順に判断されていきます。ここでは、デフォルト設定の3行目の設定で説明していきます。

(1)サーバが返すファイル自体の有効期限が切れていないか判断しています。
(2) ファイルをキャッシュしてから現在までの時間が、4320分(3日)以下ならキャッシュを利用し、そうでなければ古いと判断されます。
(3) デフォルトでは20%なので、例えば最終更新から1日経ってから取得したファイルであれば、その20%つまり4.8時間過ぎたら古いと判断されます。
(4)デフォルトでは0なので、常に古いと判断されます。

●パスワードによる制限

プロキシを利用する際にパスワードを要求する設定について紹介します。
まず、設定ファイルに以下のようなアクセス制御の設定をします。

31: acl password proxy_auth REQUIRED
32: http_access allow password

また、認証方法にどのプログラムを利用するのかを設定します。

33: authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/squidpasswd

パスワードファイルを準備します。この場合Apacheの『Basic認証』と同様のファイルを用意します。

# /usr/local/apache/bin/htpasswd -c /usr/local/squid/etc/squidpasswd asano
New password:
Re-type new password:


●Squidの起動

以下を実行することで、Squidを起動します。

# /usr/local/squid/sbin/squid -sYD


オプション 説明
z スワップディレクトリを作成する。
s syslog経由でログを採る。
k 引数に[reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse] を指定することで、Squidをコントロールする。
D DNSのテストをしない。
デフォルトでは起動時に設定ファイル中のdns_testnamesに指定されたドメインの名前解決をテストする。

●ブラウザの設定 (Internet Explorer)

では、次にWWWクライアントがプロキシサーバを使用するようにブラウザの設定を変更します。IEの場合、まず【インターネットプロパティ】を開き、【接続】タブの【LANの設定】をクリックします。そして、開いたウィンドウの【LANにプロキシサーバーを使用する】にチェックを入れ、使用するプロキシサーバのアドレス及びポート(http_portで設定したポート)を指定し、【OK】をクリックするとブラウザの設定は完了です。







▼Java や Linux を体系的に学びましょう!▼
Stack*のラクスが、
新学習方式のカリキュラムを開発しました!
14700円から(*1)、Java や Linux を体系的に学べます!!
(*1 テキスト代のみの税込料金です)



●この記事はあなたのお役に立ちましたか?
非常に役に立った
役に立った
どちらでもない
役に立たなかった
全く役に立たなかった

●ご意見・ご感想があればご記入ください。



【 目次 】
1.squidの運用
2.squidのインストール

【 関連記事 】
プロキシサーバSquid
SquidGurardによるアクセス制御
squidの統計情報

サイト内全文検索
スタックアスタリスクのサイトを検索します。検索には、Googleを利用しています。そのため、最新の情報で検索されない可能性があります。


簡単レンタルメールフォーム
300メガ1000円〜 XBitのレンタルサーバー
500メガ1995円〜 電話サポート/PostgreSQL/専用SSLなどにも対応!お客様のニーズを網羅したレンタルサーバ
ホームページ制作のアシストウェブ
STACK* 執筆の講師陣から習得する!! ITエンジニアスクール アイティブースト
統合メールサポートシステム 〜MailDealer(メールディーラー)〜
システム開発,IT教育 〜株式会社アイティーブースト(ITBoost)〜
簡単 営業支援/顧客管理ツール Easy Sales
  利用規約 お問い合わせ・ご意見 スタックアスタリスクについて 運営会社について 
  レンタルサーバー ホスティング 専用サーバー メールフォーム ショッピングカート メール共有 ITエンジニア派遣 Linux講座 Java講座 メール配信 レンタルサーバー Webデータベース 検索サービス
CopyrightcRAKUS Co.,Ltd. All Rights Reserved.  メール管理・共有 顧客管理(CRM)もできるメール対応サポートシステム JAVA LINUX CISCO 技術者派遣 育成事業 株式会社ラクス