Squid-2.5.STABLE5-2

スクゥィド最終更新日 2013年9月4日

ヤリイカのことではなく、Linuxで動作するキャッシュサーバー。MS Proxyが、WindowsNTという重いOS上で動作するという難儀なものなので、MS Proxyを入れていたマシンが非力で耐えきれないので、LinuxでGUIを止めて非力なマシンでインターネットアクセスの負荷を軽減することができれば、と設定に難儀したときの記録。

手順は調べたところこれが一番シンプルにまとまっていると思う。この記述を元に作業の内容を記録。現在実際に稼働している状況になって振り返ってみて、徒労だったと思われる作業は外してあるので、みてくれは簡単そうですが、実に8時間ぐらいかかりっきりで作業しています。

今回、以前7.2でセットアップしたSquidサーバーのパフォーマンスが限界に来ている感じなので、新しいあまりPCを再利用ということで挑戦した記録で上書き。

詳しくないので動くことが第一目標で、セキュリティには配慮していません。ご注意下さい。

Fedora Core 2 をセットアップ

今回は、Red Hatの後継ともいえる、Fedora Coreをセレクト。じつは3もリリースされているのだが、なぜかうまくいかないので、2で行くことにしました。

解決しました。FC3の場合は、SELinuxを無効化しないとこの設定ではSquidが起動できません。SELinuxを無効にするによると、

/etc/sysconfig/selinux
SELINUX=enforcing
と いう行を
SELINUX= disabled
とします。

とすればよいようです。SELinuxはroot権限の分散化により、進入により権限が奪われた場合の被害を大きくしないための仕組みのようですが。日本SELinuxユーザー会

Fedora Core 2のセットアップの項目で特記事項としては、サーバーセットアップで、ファイヤーウォールを使用しない設定にオプションを変更して、Minimalセットアップしてある。

イーサネットカードのTCP/IP周りの設定をきちんとする。キャッシュサーバーなので、DHCPに頼らずIPアドレスを割り振る。ホスト名を指定する。ゲートウェイを指定して、DNSサーバーは社内でDNSサーバーが動作しているWindows2000サーバーのIPアドレスを指定。コイツだと社内のDHCPで設定されているクライアントの名前解決(逆引き)までできるので。

当然、以降の作業もrootのままやってます。

ちなみにCDのDisk 1だけで終わりますので、4枚分ダウンロードする必要はありません。

Squidのインストール

手順はこちらを参考にしました。

FC2には、yumっていうインストール支援ユーティリティーがあるので、それで横着をします。

# yum -y install squid

でパッケージの依存関係を調べてインストールしてくれるそうです。終わるまでのんびり待ちます。初期設定すれば速くなるのかもしれないけど。perl-URIっていうのだけ追加でインストールされたようです。

パッケージ名から、今回のSquidはSquid-2.5.STABLE5-2となるようです。

さっくりインストール完了(待ち時間だけなので)。

そうしたら、動作設定をします。

最近はviを使うようになりました。

vi /etc/squid/squid.conf

テキストファイルエディタでsquid.confを編集して、Squidの動作設定をします。変更する意味のわからないところの設定はデフォルトを尊重したので、変更点は結局4カ所に落ち着きました。

viの基本コマンドは別ページにありますが、このページだけで作業できるように同じこと書いておきます。

/文字列 で文字列を検索。/[enter]で次を検索

[a] でカーソルの後ろに入力モード(挿入モード)

[Esc]で戻り、再び検索へ。

全部終わったら、[Esc]で戻って[Shift]+[Z],[Shift]+[Z]で保存終了。破棄の場合は [:][q][!] と入力

で設定した項目は、

# http_port 3128
#を外して3128を80に。以前稼働していたMS-Proxyの代理なので、クライアントの再設定が不要なように、MS-Proxyのデフォルトのポートを引き継ぐことに。フツーの世の中の通例の設定は8080ですな。あと、1024より小さいポートはLinuxをファイヤーウォールを使用する設定でセットアップしていると通らないとか。ファイヤーウォールの設定変更などは挑戦していないのでわかりません。あと、トランスペアレンシーな動作をするときは80にする必要があるそうな(よく知らない、というかやる気なし)。
http_port 80

#cache_dir ufs /var/spool/squid 100 16 256
いくつかのサイトでは#を外してufsを外すような記述になっているように見えますが、コレがハマり(ここでもハマってたみたい)。私の環境では、キャッシュディレクトリの初期化に失敗するので、ufsは消しちゃダメ。aufsはLinuxかSolarisで使用する場合に設定できるらしいですが、わかってないのにデフォルトから変更する意味はないと思います。(なんだか元々チャレンジ設定みたいなこと書いてあるし)
もしかしたらこのufsの記述はSquid2.3から登場するのかも。それ以前のバージョンで説明しているサイトを参考にするとハマるのね〜。
結局、#を外して数字の部分だけ任意の設定にすればOKだと思う。ま、デフォルトでもいいんだろうけど、ダウンロードしたファイルとかキャッシュして欲しいので多めに設定(笑)。どうせこのマシンはSquidにしか使わないので容量だけ大きく。具体的にどれをどのぐらいに設定するとパフォーマンスがどうなるとかさっぱりわからないのが問題。
cache_dir ufs /var/spool/squid 1000 16 256

アクセスコントロールリストにLAN内のIPアドレス(10.203.168.*)を宣言。名前はlocallanとした。

acl locallan src 10.203.168.0/255.255.255.0
acl CONNECT method CONNECT

設定したlocallanにSquidの利用許可を与える。行の追加だが、http_access deny all(あとは全部禁止)の行の前に書くこと。

http_access allow locallan
http_access deny all

この2箇所はきちんと設定しないと得体の知れないところの踏み台になってしまいそうなので、ちゃんと設定しておく。よくわからないグループ関連会社のネットワークにファイヤーウォール無しで接続している環境ではやむをえず。

# none
visible_hostnameでホスト名を明示しないとSquidが起動しないことがあるらしいので、キチンと指定。ドメイン名まで付けて指定するみたい。コイツはSquidサーバーの4代目なので、squid4というホスト名です(笑)。
visible_hostname squid4.****.****.****.co.jp

#maximum_object_size 4096 KB
キャッシュされるオブジェクトのサイズ、デフォルトは4MBが最大らしい。WindowsUpdateのキャッシュがうまくいかないのはコレか?と思って、#をとって、
maximum_object_size 1 GB
豪快に1GBと設定してみる。どうなるかはまだ不明。

ファイルに保存して終了。([Shift]+[Z],[Shift]+[Z])。

エラーメッセージを日本語化する設定

Squidではクライアントへのエラーメッセージに日本語が用意されていますので、カンタンにエラー発生時のメッセージをは日本語のエラーメッセージに変更することができます。といっても、表示されてもどうせ内容理解できる人は少ないよね。せいぜい、ああ、このネットワークではSquidが動いてるのね、くらい(笑)?
FC2で設定しようとしたら前とフォルダ名違ってたので注意。

ちなみに今回はどうせSquidのエラーメッセージなんて役に立たないので設定しません(笑)。

cd /etc/squid
と、打ちます。
ls -l
と打つと何やらリストが表示されると思います。その2行目(?)が、
errors - > /use/share/squid/errors/English
となっていると、Squidのエラー表示が英語になるらしいので、このフォルダ割り当てを変更するっぽいです。
rm errors
と打つと確認メッセージが出ますので、
y
を入れて下さい。
ln -s /usr/share/squid/errors/Japanese errors
ls -l
と入力すると先ほどのリストが表示されます。
2行目が
errors - > /use/share/squid/errors/Japanese
となっていればOKです。

晴れてsquidの起動

squidを起動します。
service squid start
と入力すると、キャッシュディレクトリを作成してsquidが起動します。先にSquid -Zなどを実行する必要はありません。

うまくいけば、

Starting squid:. [ OK ]

と表示されます。

次に、リブートしたときでも自動起動するようにします。

# chkconfig squid on 

設定状態を確認します。

# chkconfig --list squid
squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2〜5がonになっていればOK(らしい)。

これで、ブート時に自動起動するようになりました。Squidサーバーなんて、一旦設定が終わったらそのまんまだろうからねえ…。

クライアントの設定

クライアント側の設定をします。
インターネットエクスプローラの[ツール]-[インターネットオプション]-[接続]-[LANの設定]の
プロキシサーバを使用するにチェックを入れます。
アドレス欄に
10.203.168.59 (Squidを導入したLinuxのIPアドレス)
ポート欄に
80 (先ほど設定したポートを設定)
ローカル・・・のチェックは、チェックしておきます。また、特定のアドレスはプロキシ経由のアクセスを受け付けないので、除外リストにも書いてやります(あ、squid.confで設定すりゃいーのか(笑)。まあいいや、また後日)

これで、終了です。
もし、アクセスしたときにSquidからのエラーメッセージが出るときはサーバをリブートしてみて下さい。とのこと。今のところ出たことないけど、私の場合は、セットアップする場所から格納する場所に移動するときに結局1回シャットダウンするしかないし、自動起動が生きてるか確認しないとですしね(笑)。

ちなみに、私の会社では、Windows2000のActive Directoryのポリシーで、Proxyサーバー関連の設定をしてありますので、Windows2000とかだと起動時に勝手に設定されます。


Fedora Core 3でこれと同じ手順でやろうとするとうまくいかないのが謎。service squid start で[FAILED]になってしまう…。なぜなんだ…PCが壊れてるのか…。

 

[システム管理者のひとり言]

鳥繁.COM
このページは鳥繁.COMアクセスアップキャンペーンの一環で作成されています。
Copyrights © 2002-2013 Torihan.COM. All rights reserved.