« chkconfigコマンドの使い方 | メイン | squid(プロキシサーバ)の設定 - その2 »

squid(プロキシサーバ)の設定 - その1

 squidは定番のWebプロキシサーバです。回線の遅かった時代にはキャッシュを利用することで同サイト閲覧者が現れたときにキャッシュを見せるという合理的な手段として利用することが多かったのですが、現在はクライアントの代理としてWEBサイトを見に行く機能(安全対策)の意味合いが強いと思われます。
 今回はCentOS4上でソースから導入を行い必要な設定全てを書こうと思います。役立つと思うのでアクセス制御やサイト制限の設定も書こうと思います。


なぜソースから導入するの?
rpmで入れればいいんじゃないの?

 と私も考えていたんですが出来る限りソースから導入しています。メリットは、最新のバージョンが使えることと,自分のマシンに最適化されて性能が向上し、より安定する、と思うからです。rpmはi386で作っていることが多く、ほぼ全てのインテルCPUで動作するようになっています。自分のマシンはPentium4だ!なんて思っても最適化されていません。当然自分のマシンに最適化したい、と思うようになってくると思います。
 しかしソースから入れると設定することが増えてしまいどうしても時間がかかります。当然設定ミスをする可能性が高くなります。
 業務で使うならソースからのほうがいいでしょうか。安定動作が最優先ですから。


始めにsquidをrpmで導入しておきます。一部のファイルを利用するからです。

インストールされているか確認

# rpm -qa|grep squid

インストール

# yum install squid

rpmで導入したsquidが自動起動しないように設定。
コマンドの使い方はカテゴリ「コマンド」に書いておきます。

# chkconfig --list squid
# chkconfig --level 35 squid off

めんどくさい時は削除しちゃってもいいです。

# chkconfig --del squid

上のコマンドを入力してもパッケージファイルが削除されるわけではないので安心を。
事前準備が整ったのでsquid公式サイトから最新安定バージョンをダウンロード。
以下現時点の最新バージョンで記入。

# wget http://www.meisei-u.ac.jp/mirror/squid/Versions/v2/2.6/squid-2.6.STABLE5.tar.bz2

さっそく解凍

# tar jxvf squid-2.6.STABLE5.tar.bz2 -C /usr/local/src/
(-C: 指定した場所に解凍)

解凍先に移動

# cd /usr/local/src/squid-2.6.STABLE5

READMEとINSTALLに目を通す。INSTALLに書かれているとおりに実行でよさそう。
configure --help でさまざまなオプションを見ることができる。
今回はprefixだけつけました。ちなみにこれはデフォルトのようなのでなくてもいい。

# ./configure --prefix=/usr/local/squid
(--prefix:インストール先の指定)

これで関数やライブラリなどの有無をチェックしコンパイルに使うMakefileを生成します。
実際にコンパイルするのは以下のコマンドです。

# make all

これで必要なファイルが出来ました。後はファイルの配置処理(インストール)です。

# make install

これでインストールが完了しました。
後からバージョンが分からなくなるのが心配な方は--prefix=/usr/local/squid-2.6.STABLE5と指定しておいてシンボリックリンクでも作成しておくとよいかと思います。
# ln -s /usr/local/squid-2.6.STABLE5 /usr/local/squid

設定ファイルは/usr/local/squid/etc/squid.confです。
追加・変更した所だけ抜粋しておきます。

http_port 8080
  クライアントからの受付ポート
ftp_user
  FTPサイトでanonymousでログインする時のパスワード(メールアドレス)
cache_mgr name@domain.com
  このサーバ管理者のメールアドレス
acl my_network src 192.168.0.0/255.255.255.0
  アクセスグループの作成
http_access allow my_network
  アクセスグループからの接続許可
cache_effective_user squid
  squidを起動するユーザをsquidに変更
ache_effective_group squid
  squidを起動するグループをsquidに変更
visible_hostname hostname.domain.jp
  これを設定しないとエラーが出ます

特に変更しませんでしたが設定したほうがいいと思うところを下にあげておきます。

cache_mem
  キャッシュに使用するメモリ容量の指定
cache_dir ufs /usr/local/squid/var/cache 100 16 256
  デフォルトでは100Mしかキャッシュしない


※http_access の記述は http_access deny all の前に書きましょう。
※http_access allow の記述はアクセス制限なので十分注意しましょう。
※cache_effective_userとache_effective_groupをsquidに設定しましたがそれぞれ/etc/passwd,/etc/groupに存在するか確認しておきましょう。

ここで作業ユーザ(rootですよね)の環境変数PATHにsquidの実行ファイルをディレクトリを入れておきましょう。squidのrpmパッケージが入っているのでそちらのコマンドとダブっているのでPATHの先頭に追加するのが無難です。

# vi ~/.bash_profile
---
export PATH=/usr/local/squid/bin:/usr/local/squid/sbin:$PATH:$HOME/bin
---
# source =/.bash_profile

確認の為以下のコマンドを入力

# which squid
---
/usr/local/squid/sbin/squid
---

上のように表示されたらOK。


設定が済んだら今度はsquid.confで指定したキャッシュディレクトリを用意して初期化しましょう。
squid付属のコマンドを絶対指定していますがPATHを通しているので省略も可能です。

# mkdir /usr/local/squid/var/cache
# chown squid.squid /usr/local/squid/var/cache
# /usr/local/squid/sbin/squid -z

起動前にログ出力先にアクセス権がないのでchownコマンドを使って権限を与える。

# chown squid.squid /usr/local/squid/var/logs

ようやく準備完了なのでさっそく起動

# /usr/local/squid/bin/RunCache &

なんらかのエラーが出る場合は /usr/local/squid/var/squid.out に出力されているので確認・修正を行います。

あとは確認です。ログを確認するのとアクセス制限がかからないマシンにプロキシの設定をしてWEBブラウズしてみましょう。あまり役にたたないかもしれませんがsquid付属のsquidclientコマンドでも確認出来ます。

# squidclient -p 8080 http://www.google.com/

ここまでで起動は出来ました。ちょっと休憩といったところでしょうか。

次はマシン起動時に自動で起動してほしいのでシステムサービスへの登録を行うのですが長くなってしまったので次回にしたいと思います。