images header
Index >> Plamo Linux Fan >> Squidメモ
                Squidメモ(2.4対応)
2003/09/19
1.目的

 Squid は、いわゆる Proxy Cache サービスを提供するデーモンです。Proxy とは、たとえばインターネットで WEBサイトを見に行く時に、パソコン上の WEB ブラウザ(ネットスケープだとかインターネットエクスプローラだとか)の『代理人』になって、リクエストされた URL からページを取得してきてそれを要求したパソコンへ渡す、いわゆる『代理サーバ』です。そして、Proxy Cache は、その取得履歴をキャッシングして、同じ場所への他のパソコンからのリクエストには自分が「代理で」答えてしまうのです。

 このしくみの最大のメリットは、LAN 上の誰かが開いたページは、その内容が更新されていない限り次の同一リクエストに対してはキャッシュされているデータを返すという振る舞いをするため、WAN(=インターネットと接続している専用線など)にかかる負荷を最小限度に押さえることができるということと、一個所で包括的にキャッシュを行うことにより、各ユーザのパソコン上に大量のキャッシュを用意しなくてよくなる点です。この振る舞いは、特にホームページに良くあるタイトル画像など、あまり頻繁に変更されない画像ファイルのキャッシュに特に良く効きます。最近増えてきたポータルサイトなどは、大きな画像がたんまりある上、大抵の人が一日一回は見に行くので、劇的に効果があります。

 これらの特性をうまく生かすためには、まず大勢で使うということが前提となります。一人で使ってはあまり大した意味はありません(パソコンのキャッシュ領域を節約できる以外は)。また、人数や頻度に応じた適切なパフォーマンスを持ったマシンをホストにしなくてはなりません。これがもっとも難しいでしょう。10人なら既に現役を引退した 486CPU を積んだ古いマシンでも何とかなるかもしれませんが、100人いればもう少しパワーがほしくなるところですし、200人だと更にパワーが必要になるでしょう。また、ネットワーク上のどこに配置するかということも問題となります。各クライアントとインターネットへのゲートウェイとの間に挟まっているので、当然それらからの要求が一箇所に集中してしまうのですからね。

2.入手先

squid-2.5.STABLE4-src.tar.gz
http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE4.tar.gz
2003/09/19現在、最新の2.5系列安定版
興味がある方は、リリースノートを熟読してください。
squid-2.4.STABLE7-src.tar.gz
http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE7-src.tar.gz
2002/07/27現在最新の2.4系列安定版。なお、2.4.STABLE3までのSquidには、いくつかのセキュリティホールが報告されています。2.4.STABLE3以前をお使いの方は、アップデートされることをお勧めします。また、2.4.STABLE5はBuggyだそうです(^^;
squid-2.3.STABLE5-src.tar.gz
http://www.squid-cache.org/Versions/v2/2.3/squid-2.3.STABLE5-src.tar.gz
2002/02/09現在最新の2.3系列安定版。

3.導入方法

 これを導入するには、まずあらかじめどのくらいの規模で動かすか、プランを立てておかなくてはなりません。家庭内 LAN 程度だったら、1GBもキャッシュすれば充分でしょうが、SOHO サイト、あるいはもっと大きなネットワークで使うならば、さらに大きくて高速なディスクとある程度大きなメモリが必要になるでしょう。
 Squid は、デフォルトでは /usr/local/squid 以下にインストールされ、その下にキャッシュ領域を作りますので、プランに合わせてこの位置から下に必要なキャッシュサイズを作成できるだけのディスクをマウントしておきましょう。僕んちは、/usr/local/squid を独立した5GBのパーティションを用意して /etc/fstab に書き加えて自動マウントされるようにしています。

  1. Squid用のユーザおよびグループを作る
    Squidのデーモンを動かすためのユーザとグループを先に作るのが流儀みたいです。こちらにそれについての記述があります。それに従うと、以下のような手順になります。まずは root でログインしてください。

    # groupadd squid
    # cat /etc/group | grep squid
    squid:x:101:
    # useradd -d /usr/local/squid -g squid -m squid
    # cat /etc/passwd | grep squid
    squid:x:10003:101::/usr/local/squid:
    # su squid
    $ cd
    $ pwd
    /usr/local/squid
    $ mkdir src
    $ cd src

  2. 上記から持ってきたアーカイブを src ディレクトリで展開する

    $ tar xvfz squid-2.4.STABLE7-src.tar.gz
    $ cd squid-2.4.STABLE7


    2.3系列の場合は、
    $ tar xvfz squid-2.3.STABLE5-src.tar.gz
    $ cd squid-2.3.STABLE5

  3. 2.3STABLE4の場合は、続いてパッチファイルをこのディレクトリにおいて、パッチを当てる

    $ patch -p1 < squid-2.3.stable4-ftp_icon_not_found.patch

  4. 日本語エラーメッセージ仕様でコンパイルする

    $ ./configure --enable-err-language=Japanese

    もし /usr/local/squid 以外にインストールするなら、下記のようにする
    $ ./configure --enable-err-language=Japanese --prefix=/some/other/dir
     2.4系列では Useragent やら Referer やらのログが取れるので、欲しい方は
    $ ./configure --enable-err-language=Japanese --enable-useragent-log --enable-referer-log
    などとするといい。
     さらに、イントラネットをキャッシュする方で、内部に Windows 2000 なサーバがいて、FQDN に '_'(アンダースコア)が含まれている場合、それを容認するために --enable-underscores を追加するといい(迷惑な話だ(^^;

    $ make all
    $ make install

  5. 基本的な設定を行う
     まずは、/usr/local/squid/etc/squid.conf を環境に合わせていじる必要があります。これの詳しい意味などは、こちらあたりをごらんになってください。ここでは、極々一般的な使用に耐える設定例を示します。

    • acl all src 0.0.0.0/0.0.0.0
      http_access deny all

       デフォルトでこうなっています。acl とは、access control list の略です。この2行で、ここでリストしたネットワークからの接続は許さないという意味です。0.0.0.0/0 はすべてなので、デフォルトでは誰からの接続も許さないことになります。インターネット上の誰からも見えるところに置くのであれば、当然仔細に設定すべきですが、保護されたプライベートネットワークであれば「くるものは拒まず」という設定でいいんじゃないでしょうか。というわけで、deny all というところを allow all に直します。

       ダイヤルアップルータに仕立てた LinuxBox 上で Squid を動かす場合は、これでは駄目ですね。適切に不正アクセスを排除する必要があります。その場合は、上述の変更は行わず(つまりデフォルトのままにしておいて)以下の記述を追加してください。なお、ここではプライベートネットワークのアドレスは 192.168.0.0/24 だとします。違う場合は適宜読み替えてください。

      acl localnet src 192.168.0.0/255.255.255.0
      http_access allow localnet

       なお、デフォルトの設定がバージョンがあがる毎に徐々に増えてますが、敢えて削除することはしなくてもいいでしょう。そのままにしておくことをお勧めします。

    • cache_effective_user squid
      cache_effective_group squid

      デフォルトでは、nobody/nogroup になっているのですが、すでに uid=squid、gid=squid でインストール済みですので、ここはこのように直す必要があります。

    • pid_filename /usr/local/squid/logs/squid.pid
      以前はこのファイルのありかを/var/runへ動かすように記述していましたが、これですと squid:squid で動いている squid プロセスは、squid.pid を書きこめませんでした。この記述は、昔々まだ Squid を root 権限で動かしていたときの名残です。お詫びして訂正致します m(_ _)m
      以前の記述
      Slackware系の慣例に従って(?)、PID を書き込むファイルは /var/run へ移動しています。デフォルトでは、/usr/local/squid/logs/ へ作ることになっていますが、まぁ好みの問題でしょうか(笑)

    • cache_mem
      主に現在読み込み中のデータの一時キャッシュに使うメモリ量を設定します。Squid添付のガイドでは、Squidに使える残りメモリの1/3を割り当てなさいとなっていますが、現実にはマシンの実メモリ量に応じて適当なサイズにしておけばいいのではないでしょうか(^^;
      というのも、実はこれを少々大きくしたからといって体感するほどにはパフォーマンスが変わらないんです(1GByteとかするとどうなるかわかりませんが僕んちのマシンはそんなにメモリ積んでない(笑)。Squidは必要ならば(つまりリクエストの集中などが起きたら)可能な限り空きメモリからの追加を要求して増やし、要らなくなったらまたこのサイズに戻すということをするらしいのです。なので、よほど大人数で使い倒すのでない限り、通常はデフォルトの8MBでもいいかもしれません。

    • maximum_object_size 32768 KB
      Squid でキャッシュ可能な単一ファイルの最大サイズを規定します。デフォルトは、4MBです。値を大きくすると、より大きなサイズの単一ファイルをキャッシュ内に保持しますので、某Tのサービスパックなどのような巨大なものまでキャッシュしたいなら、かなり大きくしなくてはなりません(^^; 一般的なオンラインソフトウエア程度なら、もっと小さな値でも大丈夫でしょう。僕んちは、ごらんの通り32MBにしています。

    • cache_dir ufs /usr/local/squid/cache 4096 16 256
      キャッシュの作成先およびそのサイズの上限、作成するサブディレクトリ数などを設定します。
      最初の'ufs'はおまじないです(笑)。変更する必要は大抵ありません。
      この次に'-1'がデフォルトで記載されるバージョンがありますが、これはキャッシュが保持できる最大オブジェクトサイズを指します。多分ファイルシステムの制限を書くと言うことでしょうが、Plamoの場合デフォルトは1GBですから、maximum_object_sizeステートメントで1GB以上を指定していない限り、必要ない設定でしょう。デフォルトの-1はサイズに制限をつけない、と言う意味ですがそのままでいいと思います。
      次の'/usr/local/squid/cache'はキャッシュを作成する場所です。こちらも通常このままでいいでしょう。別の場所にしたい場合は、その場所を記載します。
      続く'4096'はキャッシュサイズの上限で、MB単位で設定します。デフォルトでは、100MBです。用意したディスクのサイズ、要求するキャッシュ容量により適宜決めてください。
      次の'16'は /usr/local/squid/cache/ の下のレベルに作成されるサブディレクトリの数を、その次の'256'は、その16のサブディレクトリの下にそれぞれ作成されるサブディレクトリの数を、それぞれ指定します。

    • logfile_rotate 14
       ログファイルをローテーションする際に、バックアップファイルを何個まで持つかを抑制する設定です。詳細は後述します。僕んちは14個をバックアップします。

    • cache_log
      cache_access_log
      cache_store_log
      cache_swap_log

       Squidが生成する各種ログの吐き出し先ディレクトリを指定します。デフォルトではいずれも /usr/local/squid/logs/ へ作成されるように記載されていますが、別の場所にしたい場合は書き換えます。たとえば、他のログファイルと一元的に扱いたいなどの理由で、/var/log/ 以下に置きたいなら、そのように書き換えます。

    • forwarded_for off
       最近見つけたのですが(笑)、Squid 経由で外へ出ると、http ヘッダには X-Forwarded-For: という行がつけられて出て行きます。これは、Squid の裏側でリクエストを出したホストの IP を添えていますが、これが嫌だ、という方はこのディレクティブを設定すると抑止できます。
       まぁ消したからと言って取り立てて何かいいことがあるかというと、通常は別に何もないと思いますが(笑)、グローバルアドレスを持つホストから Squid 経由で外へでるなら、ホストの IP を Web サイトで収集されないという意味で安全寄りの設定なのかもしれませんね。但し、自サイト外から不正使用されてもわからないという意味では危険寄りなのかもしれませんが(笑)

  6. キャッシュ作成先パーティションを独立に
     キャッシュを作成する先は、できるだけ大容量のディスクがいいのはすでに書いた通りです。で、ついでにいうと、ルート(/)とは別のディスクのほうが安心感がありますよね、頻繁にリードライトされますので。
     で、僕んちは、/usr/local/squid を別パーティションにして、/etc/fstab をいじってそこへ置きました。

    $ cat /etc/fstab | grep squid
    /dev/sdb1 /usr/local/squid ext2 defaults 1 1

     この'/dev/sdb1'は、2台目のSCSIディスクの1つ目のパーティションって意味です。1台目の3つ目のパーティションだったら、'/dev/sda3'ですね(^-^)b
     あ、/etc/fstab の書き換えは、root でなくてはできませんから、このままではできません。この手順で進んできていると、今貴方はsquidユーザなはずですからね。ためしに以下をやってみましょう。

    $ whoami
    squid

    こうなれば、貴方は今 squid ユーザです :-)

  7. キャッシュディレクトリを作る
     キャッシュは、squid.conf に設定した通り、/usr/local/squid/cache/ に作ります。しかし、このフォルダはインストール直後には存在しないので、自分で作成しなくてはなりません。

    $ cd /usr/local/squid
    $ mkdir cache

  8. キャッシュディレクトリツリーの作成
     最後に、キャッシュディレクトリツリーの作成を行わせます。

    $ /usr/local/squid/bin/squid -D -z
    1998/02/21 02:15:48| Creating Swap Directories

     これが終わると、先のsquid.confで設定した通り、1階層目16個、2階層目256個のサブディレクトリツリーが作成されます。

  9. 運用の為の設定を行う
     ログファイルは、放っておけば無尽蔵に増え続けます。それではいつかディスクがパンクしてしまうので、それを抑止するため Squid に SIGUSR1 を送ってログファイルを切り替えることができます。これをすると、それまでのログはリネームされ、新たにログが開始されます。ただ、リネームされたものが山ほど残っても同じ事ですから、先のsquid.conf内の logfile_rotate で、いくつ前までのログをとっておくかを設定しておきます。
     運用に入るために、毎晩 cron で Squid に SIGUSR1 を送るように設定します。
    ※この作業は squid -k rotate でできるらしい。このほうがスマートなので今後はこっちにすることにする。

    $ crontab -e
    0 0 * * * /usr/local/squid/bin/squid -k rotate

     この設定例では、毎晩0:00になると、Squid に SIGUSR1 を送り付け、ログがローテーションされます。

  10. 起動時に自動的に開始するようにする
     一般的には、/etc/rc.d/rc.local で起動スクリプトを記述しますが、rc.squid(2000/04/07:内容を更新してます)という便利なスクリプトがあるので、これを rc.local から起動するようにするといいでしょう。これも root でなくてはできません。もう squid ユーザでやることはないので、exit してしまいましょう。

    $ exit
    # cp rc.squid /etc/rc.d
    # chmod 755 /etc/rc.d/rc.squid
    # jvim /etc/rc.d/rc.local
    # less /etc/rc.d/rc.local
    ...
    if [ -x /etc/rc.d/rc.squid ]; then
    /etc/rc.d/rc.squid start
    fi

  11. 動かしてみる
     上記のスクリプト(rc.squid)があるなら、Squid を起動するのは簡単です。

    # /etc/rc.d/rc.squid start

    動いていれば、

    # ps aux
    squid 5802 1.1 3.1 5012 4068 ? S 19:31 0:10 (squid) -sY
    squid 5803 0.0 0.3 868 388 ? S 19:31 0:00 (dnsserver)
    squid 5804 0.0 0.2 864 332 ? S 19:31 0:00 (dnsserver)
    squid 5805 0.0 0.2 864 332 ? S 19:31 0:00 (dnsserver)
    squid 5806 0.0 0.2 864 332 ? S 19:31 0:00 (dnsserver)
    squid 5807 0.0 0.2 864 332 ? S 19:31 0:00 (dnsserver)
    squid 5808 0.0 0.1 820 220 ? S 19:31 0:00 (unlinkd)

    ってな具合になります。また、
# tail -n100 /usr/adm/messages | grep squid
Dec 23 01:07:44 xxxxxxxx squid[5850]: Process ID 5850
Dec 23 01:07:44 xxxxxxxx squid[5850]: With 256 file descriptors available
Dec 23 01:07:44 xxxxxxxx squid[5850]: Performing DNS Tests...
Dec 23 01:07:44 xxxxxxxx squid[5850]: Successful DNS name lookup tests...
Dec 23 01:07:44 xxxxxxxx squid[5850]: helperOpenServers: Starting 5 'dnsserver' processes
Dec 23 01:07:45 xxxxxxxx squid[5850]: Unlinkd pipe opened on FD 11
Dec 23 01:07:45 xxxxxxxx squid[5850]: Swap maxSize 102400 KB, estimated 7876 objects
Dec 23 01:07:45 xxxxxxxx squid[5850]: Target number of buckets: 157
Dec 23 01:07:45 xxxxxxxx squid[5850]: Using 8192 Store buckets, replacement runs every 10 seconds
Dec 23 01:07:45 xxxxxxxx squid[5850]: Max Mem  size: 8192 KB
Dec 23 01:07:45 xxxxxxxx squid[5850]: Max Swap size: 102400 KB
Dec 23 01:07:45 xxxxxxxx squid[5850]: Rebuilding storage in Cache Dir #0 (CLEAN)
Dec 23 01:07:45 xxxxxxxx squid[5850]: Set Current Directory to /usr/local/squid/cache
Dec 23 01:07:45 xxxxxxxx squid[5850]: Loaded Icons.
Dec 23 01:07:45 xxxxxxxx squid[5850]: Accepting HTTP connections on port 3128, FD 34.
Dec 23 01:07:45 xxxxxxxx squid[5850]: Accepting ICP messages on port 3130, FD 35.
Dec 23 01:07:45 xxxxxxxx squid[5850]: Ready to serve requests.
Dec 23 01:07:45 xxxxxxxx squid[5850]: Done reading Cache Dir #0 swaplog (33 entries)
Dec 23 01:07:45 xxxxxxxx squid[5850]: Finished rebuilding storage disk.
Dec 23 01:07:45 xxxxxxxx squid[5850]:        33 Entries read from previous logfile.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 Entries scanned from swap files.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 Invalid entries.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 With invalid flags.
Dec 23 01:07:45 xxxxxxxx squid[5850]:        33 Objects loaded.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 Objects expired.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 Objects cancelled.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 Duplicate URLs purged.
Dec 23 01:07:45 xxxxxxxx squid[5850]:         0 Swapfile clashes avoided.
Dec 23 01:07:45 xxxxxxxx squid[5850]:   Took 1 seconds (  33.0 objects/sec).
Dec 23 01:07:45 xxxxxxxx squid[5850]: Beginning Validation Procedure
Dec 23 01:07:46 xxxxxxxx squid[5850]:   Completed Validation Procedure
Dec 23 01:07:46 xxxxxxxx squid[5850]:   Validated 33 Entries
Dec 23 01:07:46 xxxxxxxx squid[5850]:   store_swap_size = 200k
Dec 23 01:07:48 xxxxxxxx squid[5850]: storeLateRelease: released 0 objects
って具合に、動作環境をログに残してくれるので、起動できたときは一度確かめてみるといいでしょう。ちなみに、このログ内容は、実際に僕んちで動いている4Gキャッシュではなく、これ用に別に作った試験環境のものなので、キャッシュサイズはデフォルトの100MBです。すいません、本物じゃなくて(^^;

4.動作確認

 これで Squid の準備はオーケーですが、実際プロキシするかどうか、キャッシュが効いているかどうか、知りたいところです。僕んちはネットスケープしか使わないのですが、インターネットエクスプローラも動くらしい(^^; ので書いてみましょう。
 なお、ここでは、Squid をインストールした LinuxBox の IP アドレスは、10.0.0.1 だということにします。

  1. Windows版 Netscape 4.7 での設定
     僕んちは以前これを使っていました。これの場合は、[編集(E)]-[設定(E)] で設定ダイアログを開き、カテゴリリストの中の詳細ツリーを開いて、なかにある [プロキシ] を選択します。すると、下記の図のような設定画面が現れますので、[手動でプロキシを設定する(M)] を選択しましょう。

Netscapeのプロキシ設定画面
 続いて、その右側にある[表示(V)]ボタンをクリックしてみましょう。「手動でプロキシを設定」というダイアログが現れるはずです。そうしたら、下の図のように、Squid のアドレスとポートを入力していきます。

Netscapeの手動プロキシ設定画面

 設定が終わったら、OKを押して、Netscapeの通常の画面まで戻ります。そして、どこでもいいので、WEBへアクセスしてみてください。アクセスできたでしょうか?
 もし、

ERROR
The requested URL could not be retrieved


The following error was encountered:

  • Access Denied.

    Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

などというページが出た場合は、先の squid.conf 中の http_access が allow all になっていない、acl all がないなどが考えられます。真っ先にチェックしましょう。

 ところで、http のサイトへばかりつないでいると、直接つながってるんだか間接的につながってるんだかよくわかりません。そういう場合は、ftp サイトにつないで見ると面白いです。たとえば、ftp://SunSITE.sut.ac.jp/pub/archives/linux/jp-linux なんてのを開いてみてください。普通はサーバ側で作成されたアイコンつきのページが出ますが、Squid 経由だと Squid がページを作って送ってきます。画面の一番下に


Generated Thu, xx Dec 1999 xx:xx:xx GMT by squid.who.where.jp (Squid/2.3.STABLE4)

ってな具合に表示されて、この画面が Squid によって作られたんだということがわかります。
  1. Windows版 Netscape 6.2での設定
     現在はこれが主流でしょうか?(違う?(笑)
     基本的には、4.xと同じです。画面がちとちがうだけです。4.xと同様に、[編集(E)]-[設定(E)] で設定ダイアログを開き、詳細リストを開いて、中にある [プロキシ] を選択します。すると、下記の図のような設定画面が現れますので、[手動でプロキシを設定する] を選択しましょう。
 Netscape 6 の元になっている Mozilla 0.9.x でも一緒ですが、英語で書いてあるので直感的にわかりにくい方もいらっしゃるかもしれませんね。[Advanced]リスト内の[Proxies]です。
  1. Windows版 Internet Explorer 4 での設定
     [表示(V)]-[インターネットオプション(O)...]で、インターネットオプションダイアログを開きます。インターネットオプションダイアログが開いたら、[接続]タブを選択して中ほどにある[プロキシサーバ]欄に、Squid のアドレスとポート番号を入力します。

    InternetExplorer4のプロキシ設定画面

  2. Windows版 Internet Explorer 6での設定
     こちらもほとんどIE4とおなじです。[ツール(T)]-[インターネットオプション(O)...]で、インターネットオプションダイアログを開きます。インターネットオプションダイアログが開いたら、[接続]タブを選択して下にある[ローカルエリアネットワーク(LAN)の設定]欄の中の[LANの設定(L)...]ボタンを押します。ローカルエリアネットワーク(LAN)の設定ダイアログが開いたら、下部の[プロキシサーバ]欄内の[プロキシサーバを使用する(X)]にチェックをいれ、Squid のアドレスとポート番号を入力します。



5.大規模サイト向けのお気楽運用法

 さて、動作確認ができたら、運用です。一人で使うなら、あるいは2、3台のコンピュータで使うなら、ここまでで何の問題もないでしょう。しかし、もし100台のコンピュータがあったら・・・貴方がネットワーク管理者で、これを100台に設定して歩くことを考えると、ぞっとしますよね(^^;

 そんな方には、これから説明する「自動プロキシ設定」がお勧めです。ご本家の Squid サイトに記述があります。

 なお、更に一歩進んだやり方として『Transparent Proxy』という手法が取れます。これに関しては、http://www.linux.or.jp/JF/JFdocs/TransparentProxy.htmlに文書がありますので、そちらをご覧になってください。

  1. WEBサーバを用意する
     まずは、WEB サーバが必要です。お手軽なのは、この Squid をインストールした LinuxBox 自体をWEBサーバにしてしまう手です。手前味噌ですが、こちらのページでも参考にしてください(笑)
     MIME-TYPE に

    application/x-ns-proxy-autoconfig pac

    を付け加える部分がミソです。

  2. 自動設定スクリプトをWEBに置く
     このWEBサーバのドキュメントルート(http://server.who.where.jp/で参照されるところ)に、上述の Squid サイトにある例のような Netscape Script ファイルを、拡張子.pacという名称で保存します。
     僕んちはもっとシンプルにしてありまして、こんな感じです(本当のファイル名は'proxy.pac'ですが、ブラウザで見えないので便宜上.txt付け加えてますから気をつけてください)。
     当然ですが、who.where.jp は各サイトのドメイン名ですし、squid.who.where.jp という名前がサイトの DNS に A(もしくはCNAME)レコードとして登録されている必要があります。

  3. Netscape の設定変更
     ここまでの準備がオーケーならば、早速 Netscape を自動プロキシ設定にしましょう。まずは4.で書いたとおり、Netscape のプロキシ設定画面を開きます。そして、先ほどとは違い今度は[自動プロキシ設定(A)] の方へチェックを入れます。また、[設定の場所(L)] 欄には、WEBサーバのFQDN、この例の場合ですと'http://squid.who.where.jp/proxy.pac'と入れます。入れたら、[再読み込み(R)] ボタンで読みこんでみてください。エラーが出たら、大抵WEBサーバから読んでこられないのが原因です。

Netscapeの自動プロキシ設定画面
  1. Netscape 6.2 / Mozilla 0.9.6の設定
     Netscape 6.2 でも大体同じです。Mozilla 0.9.6などの場合は、やはり英語なので直感的にわかりにくいかもしれませんが、手動設定の場合とおなじ場所にあります。
     なお、Netscape 6.1 では JavaScript の処理に問題があり、上手く動かない場合があります。具体的には、名前をDNSからアドレスを引いてくる処理がインプリメントされていません(^^; 素直に6.2にアップデートしましょう。

  1. Internet Explorer 6の設定
     Internet Explorer 6の場合も同様に、手動設定とおなじ場所に設定箇所があります。ローカルエリアネットワーク(LAN)の設定ダイアログが開いたら、上部の[自動設定]欄内の[自動設定のスクリプトを使用する(S)]にチェックをいれ、スクリプトのありかを入力します。

  2. 接続を確認
     これまでの説明どおりにできたら、ブラウザの画面へ戻って、どこかのサイトへ行って見ましょう。ちゃんと見えるでしょうか? 見えるはずなんですが・・・(^^;

  3. おまけ:プライバシーの保護の為に
     ここまでの設定で、各自のパソコンはインターネットから得た情報を自前でキャッシュしなくても、充分快適にネットサーフィンを楽しめるようになっているはずです。ですから、いっそのこと、各自のパソコンでキャッシュすることをやめてしまいましょう(^-^)

     Netscape では、キャッシュはディスクキャッシュとメモリキャッシュの二種類を独立に設定できます。ディスクキャッシュとは、ご存知の通り、各パソコンのハードディスク上に、自分が訪問したページをファイルとして保存します。だから、ディスク容量を浪費します。しかしそれ以外に、プライバシーにかかわる情報が含まれたページを、意図せずパソコン上に残してしまう、という側面もあります。代表的なパターンでは、最近良く見かけるフリー WEB メールや、イントラネットでの WEB グループウェアなどで、自分のメールを開いた状態をブラウザにキャッシュされてしまっていて、それを自分が席を立った後、悪意を持った輩に覗き見される、といったような不幸な事が起こり得ます。自分では、自分がログインして読んでいるときしか見えないと思っている自分のメールボックスですが、実はこういった危険が潜んでいるのですね。このような不幸な出来事を未然に防ぐため、このディスクキャッシュを使えなくしてしまいましょう。

     [編集(E)] - [設定(E)] で設定ダイアログを開き、カテゴリリストの中の詳細ツリーを開いて、なかにある [キャッシュ] ページを選択します。すると、メモリキャッシュとディスクキャッシュという二種類のサイズ設定欄があるはずです。このディスクキャッシュという欄の数字を '0' にして、ついでに [ディスクキャッシュをクリア(K)] ボタンをクリックして既存のファイルを削除してしまいましょう。
     なお、メモリキャッシュというのは、文字通りメモリ上に作成されるキャッシュで、Netscape 終了時、ましてやパソコンの再起動時にはすっかり破棄されてしまうものですから、先のようなプライバシー漏洩の原因にはなりません。

     なお、もっとも最近のバージョンのものは知りませんが、InternetExplorer は知っている限り 4 まではディスクキャッシュのサイズをゼロにはできません。だから、上記の潜在的な危険を回避する方法がありません(知らないだけかも知れません、もし知っておられる方がいらしたら、是非教えてください)。メモリキャッシュのサイズ設定欄もありません。なので、僕んちでは基本的に使わないことにしています(^-^)

    ※IE6になっても、なおダメらしいですね(^^;

  4. おまけ2:バナーフィルタを使ってアクセス制限
     世間にはいろんなバナーフィルタがあるらしいですが、これが Squid で比較的簡単に設定できたので、ご紹介してみます。なお、これを動かすには、同じマシンで Apache など普通に http でアクセスできるデーモンが動いている必要があります。Apacheであれば(というかお勧め)こちらをご覧下さい。

    bannerfilter-1.21.tar.gz

     そのまんまですね(笑)
     これをおとしてきて、/usr/local/squid へ置いて

    # tar xvfz bannerfilter-1.04.tar.gz

    して展開します。
     このディレクトリへ入ります。

    # cd bannerfilter-1.21

     すると、www というディレクトリがありますが、このディレクトリが http デーモンから見える場所(つまり、http://hogehoge/path/ でアクセス可能な場所)に無くてはなりませんので、できれば設定が簡単なドキュメントルート直下に置きましょう。Apache のデフォルトなら、

    # mv www /usr/local/apache/htdocs/bannerfilter

    などです。パーミッションに気をつけてください。
     次に、このディレクトリにある redirector.pl ファイルの1行目の /usr/bin/perl を必要に応じて書き換えます。通常でしたら、/usr/local/bin/perl に書き換えます。また必要なら、redirector.pl のいくつかのディレクティブを書き換えますが、上記の手順で作業した場合はなにも書き換えなくても動作するはずです。動作しないときは、$DATA や $WWW 辺りを見なおしましょう。
     これで動作テストをしてみます。このディレクトリで、

    # ./redirector.pl

    を実行してみてください。そして、何か適当にタイプしてEnterキーを押すと、タイプした文字列がそのままエコーバックされてくればひとまずOKです。

     続いて、Squid の設定です。/usr/local/squid/etc/squid.conf に設定を加えます。

    # vi /usr/local/squid/etc/squid.conf
    # cat /usr/local/squid/etc/squid.conf | grep redirect_program
    redirect_program /usr/local/squid/bannerfilter-1.04/redirector.pl

     こうしておくと、Squid がリクエストされた URL がブロックリストにあると、代わりにローカルにあるダミーの画像やファイルを返し、外には出ていきません。では、実際に試して見ましょう。Squid を一旦停止して、再起動してください。
     Squid を通してどこか適当な、できれば海外のポータルやらニュースサイトやら怪しいサイト(笑)やらを巡ってみてください。どこかできっとバナーが Blocked という画像に置き換わると思います(どことは書けないですが(^^;

     うまく動いたら、これに貴方がアクセスを禁止したいサイトを設定します。

    # vi /usr/local/squid/bannerfilter-1.04/banners.local.data

     このファイルの書式は簡単で、単に末尾に制限したい URL を書き加えて、同じディレクトリにある update.sh を実行するだけです。制限したいURLは、ブラウザで読みこんだソースから読み取りましょう。

    # sh update.sh

     banners.data は、配布もとの方で管理してるファイルで、update.sh を実施するたびに自動的に書きかえられます。

6.アップグレードの際の注意事項

 共通事項として、「既存の conf ファイルを何の考えも無しに上書きするのは厳禁!」です。ディレクティブが追加・削除・変更されているかもしれないのに、単純に上書きしてトラブるケースが非常に多いらしいです。ちゃんと以前のバージョンのものと新しいバージョンの物を見比べてくださいね(^-^)b

  1. 2.2STABLE -> 2.3STABLE
    ・dns_children は、2.3 では既に無用となっているようです(squid-users MLより)。interenal DNS process というのが仕事をするので、この設定はコメントアウトしてしまいましょう。
    ・cache_dir の書式が変わっています。変な識別子(笑)が追加されていますから、気をつけてください。

付録1.参考文献

Squid Web Proxy Cache オフィシャルサイト
オリジナルのSquid FAQ(英語)
その日本語訳 Squid FAQ
Squid-1.1のRelease Noteの日本語訳
squid.conf の日本語訳
v1.1.x時代のものなのでちょっと古いですが、基本的な部分で参考になるでしょう。
Squid Configuration Manual
squid.conf内の数多くのディレクティブについて、設定の意味合いや決め方がいろいろと書いてあります。
藤井氏のSquidに関するメモ
Pekoe氏のSquidに関するメモ
こちらもv1.1.x時代のものでちょっと古いですが、参考にはなるでしょう。
Proxyを踏み台にされないための設定
本ページ中で「acl とは」と書いておいて、その先を解説していなかった件で、それを補完してもらえるページ。
Squid奮闘記
Transparent Proxy mini-HOWTO
この文書内では触れていない、Transparent Proxy についてのHOWTOです。
Linux - Squid
数さんのVineなページの中にあります。Referingして頂いてますm(_ _)m


Index >> Plamo Linux Fan >> Squidメモ