Squidしよう!

「Squidしよう!」とはなんとも妙な日本語ですが、言いたいことは「Squidを使っ たWEBキャッシングをしようということです。Cashingではなくcachingですので、 あしからず。

この文章のテーマは、Windows NTまたはWindows 2000上で個人規模でSquidを用 いたWEBキャッシングを行うことです。個人規模ですので、LANもしくは「スタン ドアローンPC(呼び方は変ってますが、要するにネットワークを組まず、1台で 動いているPCのことです)」 から、ダイアルアップ接続でプロバイダに接続し ている環境を対象としています。

スタンドアローンPCで運営するとなると、Squidが動いているのもlocalhostなら、 WEBを閲覧するのもlocalhostのみということになります。当然です。それで果た して効率が上がるのか、という疑問が持ち上がりますが、筆者が実験してみたと ころ、そこそこの効果はあるようです。特に、自分の開設してるホームページな ど、書き換えが少ないページをブラウザのホームページ(起動して最初に表示さ れるページ。これをホームページと呼ぶのが本来の用法です)にしている場合な どは効果てきめんです。最近のブラウザにはまずキャッシュ機能が搭載されてい ますが、専用のキャッシュサービスに勝るものではありません。ここは一つ四の 五のいわず、ネット資源の節約のためにあなたのマシンでもSquidを動かしてみ ましょう。

さて、SquidというのはUNIX上のフリーのキャッシュサーバとしてメジャーな 地位を占めているソフトです。Windows上でこれを動かすには、Cygwin上でコ ンパイルする方法もあるらしいのですが、Romeo Anghelache氏のページ、 Romeo's personal home から氏の作成されたバイナリが入手できますので、これを用いることにしましょ う。My freeware gifts 2 u(つーゆーの表記あたりが、ちょっと怖いですね。 勝手にリンクして怒られないでしょうか)というコーナーにあります。

インストールは入手したバイナリを適当なフォルダに置いて、squid.confを編集 した後、

squid -z
squid -i
    

を実行するのみです。最初のステップでSquidのキャッシュフォルダが作られ、次 のステップでWindowsのサービスとして登録されます。

問題はsquid.confの編集です。以下に必要最小限の変更点を書き出します。

必ずしなければならないのは、アクセスコントロールの設定です。LANから使う 場合には、まずaclの設定に適切なアドレスを追加します。192.168.0.1から始ま るネットマスク255.255.255.0のネットワークの例を示します。

acl mylan src 192.168.0.1/255.255.255.0
    

つぎにhttp_accessの設定を変更します。mylanの場合には、

http_access allow mylan
    

をhttp_accessのトップに追加します。allow/denyの後のスペースに、先ほど aclで使ったのと同じ名前を設定してやればいいわけです。スタンドアローン PCの場合には、

http_access allow localhost
    

をトップに追加します。あとsquid.confでやることは、forwarded_forにoffを設 定することでしょうか。これは必須ではありませんが、これをoffにしておくこ とで、x_forwarded_forヘッダに、わざとらしく「unknown」と入れてHTTPリクエ ストを発行してもらえます。これをしないとx_forwarded_forに192.168.0.*だの、 localhostだのが入ることになります。こっちがデフォルトです。offにすれば、 あなたのproxyも「漏れproxy」ではなくなりますね。とはいってもどうせ HTTP_REMOTE_HOSTでダイアルアップ接続してることがばれますけど。

それから、プロバイダがプロキシを用意しており、なおかつそれがSquidである 場合、cache_peerにプロバイダのプロキシをparentとして設定します。

cache_peer proxy.myisp.ne.jp parent proxy_port icmp_port
    

proxy_portにはプロバイダから教えてもらったポートを入れてください。 icmp_portまで教えてもらった人(普通はユーザーがsquidかませてるとは思って ないので、教えてくれません)はその通り入れてもらえばいいのですが、デフォ ルトの3130のままでおそらく大丈夫です。

プロバイダのプロキシをparentに設定することで、キャッシュの効率はさらに高 まります。どういうことか説明しましょう。あるページに対するリクエストは、 まず手元のsquidでキャッシュされているか調べられます。キャッシュされてい ない場合、squidはparentであるプロバイダのsquidへとキャッシュの問い合わせ を行います。そこでキャッシュされている場合、そこからデータをもらってリク エストは完了です。プロバイダのsquidにも無い場合、プロバイダのsquidがオリ ジナルのサーバへととりに行きます。要は、キャッシュの階層化であり、 squidプロジェクトが理想とする形の小さな実現です。

ただし、プロバイダのsquidは恐ろしくバージョンが古いこともあり得ますし、 icmpポートも定かではないことが多いので、実際問題として有効に機能するかど うかははなはだ疑問です。プロバイダのプロキシがsquidであることが分かって いる方は、とりあえずparentに設定してみて、様子を見ることをおすすめします。

squid.confの設定が済んだら、前述の通りsquidをサービスとして起動してくだ さい。最後に、ブラウザのプロキシ設定をsquidを走らせたマシンのローカルア ドレスなり、localhostなりに設定すれば完了です。今回紹介した設定では squidのポート番号をいじっていませんので、ポート番号はデフォルトの3128で す。

このページに関するご指摘・ご質問は、下記Webmasterまでお願いします。


Webmaster@tatsuto.com
Last modified: Mon May 1 04:19:41 JST 2000