Squid 2.6 インストール(目次)
| Table of Contents |
環境
- OS
- CentOS 5.4 (kernel 2.6.18-164.6.1.el5)
- パッケージ
- squid-2.6.STABLE21-3.el5
squidのインストール
- squidのインストール
# yum install squid
squidの設定
squid.confの編集
- 設定ファイル「squid.conf」を編集します。
# vi /etc/squid/squid.conf ## クライアントから要求を受け付けるポート http_port 8080 ## キャッシュディレクトリの設定 ## - ufs:記憶システムの種類。ufs以外は再コンパイルが必要。 ## - /var/spool/squid:ディレクトリ名 ## - 100: キャッシュに利用するスペース ## - 16 : サブディレクトリ数 ## - 256: サブディレクトリ配下のディレクトリの数 cache_dir ufs /var/spool/squid 100 16 256 ## キャッシュに利用するメモリ(squidはこれ以外にもメモリを利用する) cache_mem 128 MB ## aclの定義 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl microsoft dstdomain .microsoft.com .microsoft.co.jp ## 追加(microsoftのドメインを定義) acl lan src 192.168.11.0/255.255.255.0 ## 追加(LANの定義) acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT ## アクセス権の設定(定義済のaclに対して行う) http_access allow manager localhost http_access deny manager http_access deny !Safe_ports # Deny requests to unknown ports http_access deny CONNECT !SSL_ports # Deny CONNECT to other than SSL ports http_access allow localhost http_access allow microsoft ## 追加(microsoftに対するアクセスを無条件で許可する) http_access allow lan ## 追加 (LANからのアクセスは無条件で許可する) http_access deny all ## HTTPリクエスト中にクライアント情報(IPアドレスなど)を含めない forwarded_for off ## HTTPリクエストにプロキシ特有の情報を含めないようにする header_access Referer deny all header_access X-Forwarded-For deny all header_access Via deny all header_access Cache-Control deny all ## ログをapache形式にする emulate_httpd_log on #エラーメッセージなどに表示するホスト名。squidサーバがDNSに未登録の場合は必須。 visible_hostname serv200.oss-d.net
- 設定ファイルの構文チェックを行います。コマンドを実行して何も表示されなければ問題ありません。
# squid -k parse
自動起動の設定
- chkconfigコマンドで自動起動をONにします
# chkconfig squid on
- chkconfigコマンドで自動起動の確認をします。
LUNレベル3,4,5がonになっていれば問題ありません。
# chkconfig --list squid squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- squidを起動します。
# /etc/init.d/squid start init_cache_dir /var/spool/squid... squid を起動中: . [ OK ]
- psコマンドで起動の確認を行います。
# ps ax PID TTY STAT TIME COMMAND 26447 ? Ss 0:00 squid -D 26450 ? S 0:00 (squid) -D 26451 ? Ss 0:00 (unlinkd)
動作確認
- ブラウザでプロキシの設定をしてWEBサイトにアクセスして問題なければ完了です。
ユーザ認証
LAN端末に対してユーザ認証を設定します。(LAN以外はproxyを利用できない)
認証はBASIC認証とLDAP認証を紹介します。
BASIC認証
squid.confの編集
- ユーザ認証にBASIC認証を利用する場合「squid.conf」を以下のように編集します。
# vi /etc/squid/squid.conf ## 認証関連の設定(基本的にコメント解除すればよい) auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/.htpasswd # 追加 auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours ## aclの定義 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl microsoft dstdomain .microsoft.com .microsoft.co.jp acl lan src 192.168.11.0/255.255.255.0 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 : : (省略) : acl Safe_ports port 777 acl CONNECT method CONNECT acl password proxy_auth REQUIRED ## 追加 ## アクセス権の設定(定義済のaclに対して行う) http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow microsoft http_access allow lan password ## 修正 http_access deny all
ユーザ登録
- htpasswdコマンドを利用するためhttpdをインストールします
# yum install httpd
- htpasswdコマンドでhogeユーザを追加します。-c は.htpasswdファイルを新規作成する場合のみ指定する事。
# htpasswd -c /etc/squid/.htpasswd hoge New password: Re-type new password: Adding password for user hoge
設定変更の反映
- 設定ファイルを再読み込みさせ、変更を反映します。
# /etc/init.d/squid reload
以下のコマンドでも、変更を反映する事ができます。# squid -k reconfigure
LDAP認証
はじめに
- OpenLDAPのインストールは下記を参照して下さい
OpenLDAPインストールを参照。
- LDAPのツリーは下記構成になっているものとします。
また、ユーザのパスワードについてはSSHA形式で保存されているものとします。
squid.confの編集
- LDAPで認証する場合「squid.conf」を以下のように修正します。
("auth_param basic program"の1行以外はBASIC認証と全く同じです。)
# vi /etc/squid/squid.conf ## 認証関連の設定 auth_param basic program /usr/lib/squid/squid_ldap_auth -b "ou=Users,dc=oss-d,dc=net" -f "(&(uid=%s)(objectClass=posixAccount))" -h 192.168.11.101 ##上記4行を追加(ファイルでは改行せず1行で記載する) auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours ## aclの定義 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl microsoft dstdomain .microsoft.com .microsoft.co.jp acl lan src 192.168.11.0/255.255.255.0 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 : : (省略) : acl Safe_ports port 777 acl CONNECT method CONNECT acl password proxy_auth REQUIRED ## 追加 ## アクセス権の設定(定義済のaclに対して行う) http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow microsoft http_access allow lan password ## 修正 http_access deny all
設定変更の反映
- 設定ファイルを再読み込みさせ、変更を反映します。
# /etc/init.d/squid reload
以下のコマンドでも、変更を反映する事ができます。# squid -k reconfigure
FAQ
squid起動時にアボートする
- Q.
squidを起動しようとすると下記エラーが表示されます。# /etc/init.d/squid start squid を起動中: /etc/init.d/squid: line 42: 26581 アボートしました $SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1 [失敗] - A.
visible_hostnameが設定されていない可能性があります。 squidサーバのホスト名がDNSに登録されていない場合、上記エラーとなり起動に失敗するため、 squid.confでvisible_hostnameにホスト名を設定して下さい。# vi /etc/squid/squid.conf visible_hostname serv200.oss-d.net
proxy_authを設定すると構文エラーになる
- Q.
proxy_authを設定すると下記の構文エラーが表示されます。# squid -k parse 2010/02/28 11:31:24| Invalid Proxy Auth ACL 'acl password proxy_auth REQUIRED' because no authentication schemes are fully configured. FATAL: Bungled squid.conf line 569: acl password proxy_auth REQUIRED Squid Cache (Version 2.6.STABLE21): Terminated abnormally.
- A.
以下の可能性があります。squid.confを見直して下さい。- auth_param basic programの記載がない
- auth_param basic program行をacl行より後に記載している