Show Table of Contents
第16章 Squid キャッシュプロキシーサーバーの設定
Squid は、コンテンツをキャッシュして帯域幅を減らし、Web ページをより迅速に読み込むプロキシーサーバーです。本章では、HTTP、HTTPS、FTP プロトコルのプロキシーとして Squid を設定する方法と、アクセスの認証と制限を説明します。
16.1. 認証なしで Squid をキャッシュプロキシーとして設定
本セクションでは、認証を使用しないキャッシュプロキシーとする Squid の基本設定を説明します。この手順では、IP 範囲に基づいてプロキシーへのアクセスを制限します。
前提条件
- この手順では、
/etc/squid/squid.conf
ファイルが squid パッケージにより提供されることを前提としています。このファイルを編集した場合は、ファイルを削除し、パッケージを再インストールします。
手順
- squid パッケージをインストールします。
# yum install squid
/etc/squid/squid.conf
ファイルを編集します。localnet
アクセス制御リスト (ACL) を、プロキシーを使用できる IP 範囲と一致するように変更します。acl localnet src 192.0.2.0/24 acl localnet 2001:db8::/32
デフォルトでは、/etc/squid/squid.conf
ファイルにはlocalnet
ACL で指定されたすべての IP 範囲のプロキシーを使用できるようにするルールが含まれます。http_access allow localnet
ルールの前に、すべてのlocalnet
ACL を指定する必要がある点に注意してください。重要
環境に一致しない既存のacl localnet
エントリーをすべて削除します。- 以下の ACL はデフォルト設定にあり、HTTPS プロトコルを使用するポートとして
443
を定義します。acl SSL_ports port 443
ユーザーが他のポートでも HTTPS プロトコルを使用できるようにするには、以下の各ポートに ACL を追加します。acl SSL_ports port port_number
- Squid が接続を確立できるポートに設定する
acl Safe_ports
ルールの一覧を更新します。たとえば、プロキシーを使用するクライアントがポート 21 (FTP)、80 (HTTP)、443 (HTTPS) のリソースにのみアクセスできるようにするには、その設定の以下のacl Safe_ports
ステートメントのみを保持します。acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443
デフォルトでは、設定にはhttp_access deny !Safe_ports
ルールが含まれ、Safe_ports
ACL で定義されていないポートへのアクセス拒否を定義します。 cache_dir
パラメーターにキャッシュタイプ、キャッシュディレクトリーへのパス、キャッシュサイズ、さらにキャッシュタイプ固有の設定を設定します。cache_dir ufs /var/spool/squid 10000 16 256
この設定により、以下が可能になります。- Squid は、
ufs
キャッシュタイプを使用します。 - Squid は、キャッシュを
/var/spool/squid/
ディレクトリーに保存します。 - キャッシュのサイズが
10000
MB まで大きくなります。 - Squid は、
16
個の レベル 1 サブディレクトリーを/var/spool/squid/
ディレクトリーに作成します。 - Squid は、レベル 1 の各ディレクトリーに
256
個のサブディレクトリーを作成します。
cache_dir
ディレクティブを設定しない場合、Squid はキャッシュをメモリーに保存します。
cache_dir
パラメーターに/var/spool/squid/
以外のキャッシュディレクトリーを設定する場合は、以下を行います。- キャッシュディレクトリーを作成します。
# mkdir -p path_to_cache_directory
- キャッシュディレクトリーの権限を設定します。
# chown squid:squid path_to_cache_directory
- SELinux を
enforcing
モードで実行する場合は、squid_cache_t
コンテキストをキャッシュディレクトリーに設定します。# semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv path_to_cache_directory
semanage
ユーティリティーがシステムで利用できない場合は、policycoreutils-python-utils パッケージをインストールします。
- ファイアウォールで
3128
ポートを開きます。# firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reload
squid
サービスを開始します。# systemctl start squid
squid
サービスを有効にして、システムの起動時に自動的に起動するようにします。# systemctl enable squid
検証手順
プロキシーが正しく機能することを確認するには、
curl
ユーティリティーを使用して Web ページをダウンロードします。
# curl -O -L "https://www.redhat.com/index.html" -x "proxy.example.com:3128"
curl
がエラーを表示せず、index.html
ファイルが現在のディレクトリーにダウンロードされている場合は、プロキシーが動作します。