第3章 Squid キャッシングプロキシーサーバーの設定
Squid は、コンテンツをキャッシュして帯域幅を削減し、Web ページをより迅速に読み込むプロキシーサーバーです。この章では、HTTP、HTTPS、FTP のプロトコルのプロキシーとして Squid を設定する方法と、アクセスの認証および制限を説明します。
3.1. 認証なしで Squid をキャッシングプロキシーとして設定 リンクのコピーリンクがクリップボードにコピーされました!
認証なしで Squid をキャッシュプロキシーとして設定できます。以下の手順では、IP 範囲に基づいてプロキシーへのアクセスを制限します。
前提条件
-
/etc/squid/squid.confファイルが、squidパッケージにより提供されている。このファイルを編集した場合は、ファイルを削除して、パッケージを再インストールしている。
手順
squidパッケージをインストールします。dnf install squid
# dnf install squidCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/squid/squid.confファイルを編集します。localnetアクセス制御リスト (ACL) を、プロキシーを使用できる IP 範囲と一致するように変更します。acl localnet src 192.0.2.0/24 acl localnet 2001:db8:1::/64
acl localnet src 192.0.2.0/24 acl localnet 2001:db8:1::/64Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、
/etc/squid/squid.confファイルにはlocalnetACL で指定されたすべての IP 範囲のプロキシーを使用できるようにするhttp_access allow localnetルールが含まれます。http_access allow localnetルールの前に、localnetの ACL をすべて指定する必要があります。重要環境に一致しない既存の
acl localnetエントリーをすべて削除します。以下の ACL はデフォルト設定にあり、HTTPS プロトコルを使用するポートとして
443を定義します。acl SSL_ports port 443
acl SSL_ports port 443Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーが他のポートでも HTTPS プロトコルを使用できるようにするには、ポートごとに ACL を追加します。
acl SSL_ports port port_number
acl SSL_ports port port_numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
acl Safe_ports port 21 acl Safe_ports port 80 acl Safe_ports port 443Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、設定には
http_access deny !Safe_portsルールが含まれ、Safe_portsACL で定義されていないポートへのアクセス拒否を定義します。cache_dirパラメーターにキャッシュの種類、キャッシュディレクトリーへのパス、キャッシュサイズ、さらにキャッシュの種類ごとの設定を設定します。cache_dir ufs /var/spool/squid 10000 16 256
cache_dir ufs /var/spool/squid 10000 16 256Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定により、以下が可能になります。
-
Squid は、
ufsキャッシュタイプを使用します。 -
Squid は、キャッシュを
/var/spool/squid/ディレクトリーに保存します。 -
キャッシュのサイズが
10000MB まで大きくなります。 -
Squid は、
16個のレベル 1 サブディレクトリーを/var/spool/squid/ディレクトリーに作成します。 Squid は、レベル 1 の各ディレクトリーに
256個のサブディレクトリーを作成します。cache_dirディレクティブを設定しないと、Squid はキャッシュをメモリーに保存します。
-
Squid は、
cache_dirパラメーターに/var/spool/squid/以外のキャッシュディレクトリーを設定する場合は、以下を行います。キャッシュディレクトリーを作成します。
mkdir -p path_to_cache_directory
# mkdir -p path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow キャッシュディレクトリーの権限を設定します。
chown squid:squid path_to_cache_directory
# chown squid:squid path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux を
enforcingモードで実行する場合は、squid_cache_tコンテキストをキャッシュディレクトリーに設定します。semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" restorecon -Rv path_to_cache_directory
# semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?" # restorecon -Rv path_to_cache_directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow semanageユーティリティーがシステムで利用できない場合は、policycoreutils-python-utilsパッケージをインストールします。
ファイアウォールで
3128ポートを開きます。firewall-cmd --permanent --add-port=3128/tcp firewall-cmd --reload
# firewall-cmd --permanent --add-port=3128/tcp # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow squidサービスを有効にして開始します。systemctl enable --now squid
# systemctl enable --now squidCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
プロキシーが正しく機能することを確認するには、curl ユーティリティーを使用して Web ページをダウンロードします。
curl -O -L "https://www.redhat.com/index.html" -x "proxy.example.com:3128"
# curl -O -L "https://www.redhat.com/index.html" -x "proxy.example.com:3128"
curl でエラーが表示されず、index.html ファイルが現在のディレクトリーにダウンロードされている場合は、プロキシーが動作します。