virtualboxにあるcentos6にsquidをインストールしてみた

squidはプロキシサーバを立てるのに必要なものという認識しかありませんが、構築にチャレンジしてみます。下記のサイトを参考します。

Squidによるプロキシサーバーの構築

CentOSのバージョンの確認

普段使わないので忘れがちファイルです。

cat /etc/redhat-release
#結果
CentOS release 6.5 (Final)

インストール

squidのパッケージを探し、yumでインストールします。インストール後にインストールできたかを確認します。

rpmのオプションqでパッケージ情報を表示します。

yum search squid
yum install squid.x86_64

rpm -q squid
#実行結果
#squid-3.1.10-22.el6_5.x86_64

 インストール場所の確認

rpmのオプションlでパッケージ内のファイルの場所を全て表示します。

rpm -l squid

#####実行結果の抜粋#####
コマンド
/usr/bin/squidclient
/usr/sbin/squid

#設定ファイル
/etc/httpd/conf.d/squid.conf

#ディレクトリ
/etc/squid/
/usr/lib64/squid/
/usr/share/doc/squid-3.1.10/
/usr/share/squid/errors/
/var/log/squid/
/var/spool/squid/

yumでインストールしたら/usr/lib/以下に入ると思っていましたが、/usr/share/にも入るのですね。

自動起動の確認

これも忘れがちなコマンドですので使ってみました。

chkconfig --level 35 squid on
chkconfig --list squid

#実行結果
squid           0:off   1:off   2:off   3:on    4:off   5:on    6:off

 ですが、サーバーとして利用しないのでoffに戻しました。起動が遅くなると嫌なので。

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

#実行結果
squid           0:off   1:off   2:off   3:off   4:off   5:off   6:off

 ちなみにこの時点でsquidは起動はしていません。

service squid status

#実行結果
squid は停止しています

 ポート番号の慣例

プロキシサーバーが使用するポートは通常、8080番や8008番などの数字に8がつく番号を使用するのが慣例となっています。via: Squidによるプロキシサーバーの構築

これは知らなかったです。webを扱うなら覚えておいて損は無いですね。8080を使うということは、apacheもプロキシサーバなのでしょうか。

とりあえず、squid.confに下記の一文を追加し、起動します。

acl localnet src 192.168.0.2/255.255.255.0

 実際にデフォルトのポート番号が3128番なのか確認してみます。

netstat -anp | grep 3128
#実行結果(ヘッダーは後付)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
tcp        0      0 :::3128                     :::*                        LISTEN      1412/(squid)

このままmacのプロキシを設定すると、googleの検索結果は表示されますが、そのリンク先は表示できません。

プロキシサーバに接続できない

squid_01_141015

プロキシ自体に接続が出来ていないようです。sshでホストOS(mac)からゲストOS(centos)に繋げれるので、物理的には繋がっているはず!アクセスログは記録されていました。

squid.confを見てみると、定義したIPアドレスのグループからのアクセスを許可していませんでした。下記を追加します。

http_access allow localnet

 名前解決ができない!squid_02_141015

プロキシには繋がりましたが、今度は名前解決ができません!どうやらsquidはresolve.confに記載したDNSサーバではなく、独自の仕組みで名前解決を行っているらしいです。

そこで下記のファイルに設定追加。

order bind,hosts

 詳しくは下記を見て下さい。

order bind,hosts

これでようやくページが表示されました。アクセスログも記録されています。ちなみに上記の設定をしても最初は上手くいきませんでしたが、一度centosを終了して起動したら何故かうまくいきました。