プロキシ・サーバ squid のインストールと設定(Ubuntu 上)
Ubuntu で Squid プロキシサーバを構築する方法を説明する。設定ファイル /etc/squid/squid.conf でのアクセス許可設定、サービスの起動と停止、ファイアウォールの設定、クライアントからの接続テスト、ログの確認方法を扱う。
自分が管理しているマシンにプロキシサーバを動作させ、同じ LAN 内の別のマシンの Web アクセス(Web ブラウザや wget など)が、このプロキシサーバを経由するようにする。プロキシサーバのキャッシュ機能により、同じ内容への繰り返しのアクセスでネットワークへの負荷が減る場合がある。
前もって決めておく事項
- プロキシサーバのポート番号: 設定例として 3128 を使用する。
- アクセスを許すネットワークのネットワーク名(squid 設定ファイルでの名前): 設定例として my を使用する。
- アクセスを許すネットワークの IP アドレス範囲: 設定例として XXX.YYY.ZZZ.0/24(CIDR 表記)を使用する。
インストールと設定
- Squid パッケージのインストール:
端末で次のコマンドを実行する。Ubuntu 24.04 LTS では Squid 6 系がインストールされる。
バージョンは次のコマンドで確認する。sudo apt update && sudo apt -y install squidsquid --version - 設定ファイル /etc/squid/squid.conf の編集:
編集前にオリジナルファイルのバックアップを作成する。
設定ファイルを編集し、ポート番号とアクセスを許可するネットワークを設定する。次の例は、ポート 3128 で待ち受け、IP アドレス範囲 XXX.YYY.ZZZ.0/24 からのアクセスを許可する設定である。sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bkpaclとhttp_access allowの行は、設定ファイル内にあるhttp_access deny allの行より前に記述する。http_accessは上から順に評価され、最初に一致した規則が適用される。
編集後、設定ファイルの文法を確認する。# http_port ポート番号 http_port 3128 # アクセス制御リスト (ACL) の定義 # acl <ネットワーク名> src <IPアドレス範囲 (CIDR表記)> acl my src XXX.YYY.ZZZ.0/24 # HTTPアクセス制御 # http_access allow <ネットワーク名> http_access allow my # その他のアクセスは拒否 http_access deny allsudo squid -k parse - Squid サービスの再起動:
設定変更を反映させるためにサービスを再起動する。
サービスの状態を確認し、エラーが出ていないことを確認する。sudo systemctl restart squid
サービスを停止するときは次のコマンドを実行する。sudo systemctl status squidsudo systemctl stop squid - ファイアウォールの設定:
ファイアウォールが有効な環境では、Squid が使用するポートへのアクセスを許可する。UFW を使用している場合の例を示す。送信元を限定することで、LAN 外からの接続を受け付けないようにする。sudo ufw allow from XXX.YYY.ZZZ.0/24 to any port 3128 proto tcp - プロキシ経由での Web アクセス・テスト:
Squid が指定したポートで待ち受けているかを確認する。
別のマシンでプロキシを指定して Web サイトにアクセスできるかを確認する。ss -lntp | grep 3128curlを使用する場合の例を示す。
Web ブラウザから使用する場合は、ブラウザまたは OS のプロキシ設定に、プロキシサーバの IP アドレスとポート番号(3128)を指定する。curl -x http://[プロキシサーバのIPアドレス]:3128 -I https://www.ubuntu.com/ - Squid ログの確認:
ログファイルは/var/log/squid/ディレクトリに置かれる。アクセスログはaccess.log、エラーや起動時のメッセージはcache.logである。アクセスログをリアルタイムで確認する場合の例を示す。
クライアントからのアクセスがログに記録されない場合は、クライアント側のプロキシ設定、sudo tail -f /var/log/squid/access.loghttp_accessの記述順序、ファイアウォールの設定を確認する。