Overview
Squid を使用してプロキシサーバーを構築します。Squid プロキシサーバーは、Web コンテンツのキャッシュとアクセス制御を行うためのプロキシサーバーソフトウェアです。主に HTTP や HTTPS などのプロトコルで動作し、次のような機能を提供します。
- キャッシュ機能: 頻繁にアクセスされる Web ページをローカルに保存することで、再度のアクセス時にインターネットを経由せず、キャッシュされたページを提供し、レスポンスを高速化し、帯域幅の節約に貢献します。
- アクセス制御: IP アドレスやドメイン名、ポート番号に基づいてアクセスの許可やブロックを設定でき、企業や学校でのインターネット利用を制限するのに役立ちます。
- コンテンツフィルタリング: 特定の Web サイトやコンテンツに対するアクセスを制限することで、セキュリティや業務効率向上を目的としたフィルタリングが可能です。
- 匿名性向上: ユーザーの IP アドレスを隠すことができ、ユーザーのプライバシーを保護したり、アクセス元を特定できないようにすることができます。
前提条件
- こちらを参考に基本設定が完了していること。
インストール
squid
をインストールします。
sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install squid
/etc/squid/squid.conf
/etc/squid/squid.conf
を編集します。
デフォルト値
デフォルト値は下記の通りです。
grep -v -e '^\s*#' -e '^\s*$' /etc/squid/squid.conf | sed 's/#.*//' | sed 's/[[:space:]]*$//' | expand | tr -s [:space:] | sed 's/^\s/ /g'
acl localnet src 0.0.0.1-0.255.255.255
acl localnet src 10.0.0.0/8
acl localnet src 100.64.0.0/10
acl localnet src 169.254.0.0/16
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
include /etc/squid/conf.d/*.conf
http_access deny all
http_port 3128
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 \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320
設定値
設定値は下記の通りです。
sudo cp -ai /etc/squid/squid.conf{,.orig}
sudo tee /etc/squid/squid.conf <<"EOF"
acl localnet src 10.1.0.0/24
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow localnet
include /etc/squid/conf.d/*.conf
http_access deny all
http_port 3128
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 \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320
request_header_access Referer deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
forwarded_for off
EOF
設定の有効化
設定を有効化します。
sudo systemctl restart squid.service && systemctl status squid.service
Ubuntu 22.04 Squid プロキシサーバー構築