12.3. Squid の設定

Squid を設定するには、設定ファイルのディレクティブを調節します。Squid は通常、特定のネットワークの要件に合わせて、コマンドラインを使用して /etc/squid/squid.conf に配置されている Squid 設定ファイルを編集して設定します。この squid.conf ファイルには推奨の最小構成が含まれています。

12.3.1. 基本設定および /etc/squid/squid.conf

手順12.1 基本設定

  1. 元の config ファイルをバックアップします。
    mv /etc/squid/squid.conf /etc/squid/squid.conf.org
  2. 以下の内容を使用して、新規の /etc/squid/squid.conf ファイルを作成します。mynetwork のアクセス制御リスト (ACL) の行を編集して、ローカルネットワークのソースネットワークを定義します。これは、クライアントのシステムが Squid サーバーをプロキシーとして使用するネットワークのことです。

    注記

    Squid はファイルを最初から読み込んでいくので /etc/squid/squid.conf 設定ファイルのアイテムの順番は重要です。
    acl mynetwork src xxx.xxx.xxx.0/24
    http_access allow mynetwork
    
    #defaults
    acl localnet src 10.0.0.0/8 
    acl localnet src 172.16.0.0/12  
    acl localnet src 192.168.0.0/16 
    acl localnet src fc00::/7
    acl localnet src fe80::/10
    acl SSL_ports port 443
    acl Safe_ports port 80      
    acl Safe_ports port 21      
    acl Safe_ports port 443     
    acl Safe_ports port 70      
    acl Safe_ports port 210     
    acl Safe_ports port 1025-65535  
    acl Safe_ports port 280     
    acl Safe_ports port 488     
    acl Safe_ports port 591     
    acl Safe_ports port 777     
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localnet
    http_access allow localhost
    http_access deny all
    http_port 3128
    hierarchy_stoplist cgi-bin ?
    coredump_dir /var/spool/squid
    refresh_pattern ^ftp:       1440    20% 10080
    refresh_pattern ^gopher:    1440    0%  1440
    refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
    refresh_pattern .       0   20% 4320
  3. サービスを起動して、ブート時に有効になるように設定します。
    ~]#  systemctl enable squid
    ~]#  systemctl start squid
  4. ファイアウォールを有効化する場合には、Squid ポートを許可します。
    ~]#  firewall-cmd --add-port=3128/tcp --permanent
  5. Web ブラウザーがプロキシーを使用するように設定します。これは、使用するブラウザーとバージョンにより左右されます。たとえば、バージョン 46.0.0 の Firefox を設定するには以下を実行してください。

    手順12.2 プロキシーを使用した Firefox の設定

    1. Firefox の右上端にあるメニューから 設定 を選択します。左のタブから 詳細 を選択して、上部のバーにあるタブから ネットワーク を選択します。
    2. 接続 のセクションで、接続設定 を開きます。
    3. 開いた新規ウィンドウで、手動でプロキシーを設定する にチェックを入れて、HTTP プロキシー フィールドに接続先のプロキシーサーバーを入力します。固有のポートを入力する必要がある場合には、ポート フィールドに入力します。
/etc/squid/squid.conf に関する詳しい情報は squid(8) の man ページを参照してください。

12.3.2. HTTP プロキシーサーバーとしての Squid の設定

手順12.3 HTTP プロキシーサーバーとしての Squid の設定

  1. /etc/squid/squid.conf ファイルの一番上に以下の行を追加してください。IP アドレスの例は実際の IP アドレスに置き換えてください。
    cache_dir ufs /var/spool/squid 500 16 256
    acl my_machine src 192.0.2.21 # Replace with your IP address
    http_access allow my_machine
  2. 以下のコマンドを使用してキャッシュディレクトリーを作成します。
    ~]# systemctl restart squid
    Squid は、マシン上にある全ネットワークインターフェースのポート 3128 (デフォルト) のリッスンを開始するようになります。
  3. Firefox などのブラウザーがマシンの IP アドレスとポート 3128 のホストで HTTP プロキシーサーバーとして Squid を使用するように設定します。詳細は 手順12.2「プロキシーを使用した Firefox の設定」 を参照してください。

12.3.2.1. HTTP ポートの設定

http_port ディレクティブを使用して、Squid がクライアントの接続をリッスンするポートを指定します。デフォルトの動作は、マシンで利用可能なすべてのインターフェースのポート 3128 をリッスンします。異なるインターフェースの異なるポートや、複数のインターフェースを強制的に Squid にリッスンさせることができます。

例12.1 HTTP ポートの指定

/etc/squid/squid.conf を開いて、適切な行を編集します。この例では、Squid はポート 8080 をリッスンするように設定します。
# Squid normally listens to port 3128
http_port 8080
Squid サーバーは、同時に複数のポートをリッスンすることができます。

例12.2 2 つ以上のポートの指定

以下の設定では、 Squid はポート 8080 と 9090 の両方をリッスンします。
http_port 8080 9090

注記

以下を実行し、Squid サーバーを再起動して新規設定を適用するのは忘れないでください。
~]# systemctl restart squid
/etc/squid/squid.conf で IP アドレスおよびポートの組み合わせも指定してください。通常、マシンに複数のインターフェースがあり、Squid にローカルエリアネットワーク (LAN) に接続されているインターフェースのみをリッスンするようにする場合にはこのアプローチを使用します。

例12.3 IP アドレスの設定

以下のコマンドは Squid に対して IP アドレスが 192.0.2.25 のインターフェースのポート 3128 をリッスンするように指示を出します。
http_port 192.0.2.25:3128
さらに、ホスト名ポート を使用して、http_port を指定できます。ホスト名は、Squid により IP アドレスに変換され、特定の IP アドレスのポート 8080 をリッスンします。
http_port myproxy.example.com:8080
http_port ディレクティブの別の特長として、別の行で複数の値を受け入れることができます。以下の行は、Squid が 3 つの異なる IP アドレスとポートの組み合わせをリッスンするようにトリガーします。一般的にこれは、異なる LAN にクライアントがあり、プロキシーサーバーに異なるポートを使用するように設定されている場合に役立ちます。/etc/squid/squid.conf ファイルを以下のように編集します。
http_port 192.0.2.25:8080
http_port lan1.example.com:3128
http_port lan2.example.com:8081

12.3.2.2. ACL および HTTP のアクセス制御

アクセス制御リスト (ACL) は、アクセス制御の基本要素で、通常 http_access などの他のディレクティブと組み合わせて使用して、さまざまな Squid のコンポーネントと Web リソースへのアクセスを制御します。

例12.4 ドメイン名向けの ACL 構築

以下の例は、下記の一般的な指示を編集する方法を示しています。
acl example_site dstdomain example.com
example_site は任意の名前に置き換えて ACL に名前を指定してください。こおで使用する種別は dstdomain で、この値 (Web サイト) はドメイン名であると指定します。
acl FB dstdomain facebook.com
複数の Web サイトを対象とする ACL を構築する必要がある場合には、以下を行ってください。
  • 単一の行に値を記述してください。
    acl example_sites dstdomain example.com example.net example.org
  • 値が大幅に増加する場合に向け、複数の行に分けて値を記述します。
    acl example_sites dstdomain example.com example.net
    acl example_sites dstdomain example.org
  • 専用のファイルに値を投入して、Squid がそのファイルから値を読みこむように指示します。
    acl example_sites dstdomain '/etc/squid/example_sites.txt'
    /etc/squid/example_sites.txt の内容は以下のようになります。
    # Write one value (domain name) per line
    example.net
    example.org # Temporarily remove example.org from example_sites acl
    example.com

重要

さまざまなリソースへのアクセスを許可または拒否するには、ACL はアクセス制御のディレクティブと組み合わせる必要があります。http_access は、Squid 経由で HTTP トランザクションを実行するためのアクセスを許可する際に使用するディレクティブです。
ACL を使用した HTTP アクセスの制御
クライアントへのアクセスを許可または拒否するには、http_access ディレクティブと ACL を組み合わせる必要があります。
/etc/squid/squid.conf ファイルで http_access ディレクティブを編集します。ACL_NAME は、アクセスを許可または呼び出す必要のある要求にお聞かてください。
http_access allow|deny [!]ACL_NAME

例12.5 クライアントへのアクセスの許可または拒否

以下の設定は、localhost へのアクセスを許可します。
http_access allow localhost
この設定は、localhost へのアクセスを拒否します。
http_access deny localhost
感嘆符で始まる ACL 名もありますが、そのような場合には感嘆符も含みます。
http_access deny !Safe_ports