Table of Contents
squidでプロキシサーバの構築
2023/02/08 IPv6のローカルネットワークの定義を追加(自分の体感で改善した気がする。)
2026/11/03 GoogleのGeminiでSquid 5向けに修正
インストール
# dnf install squid
設定
# vi /etc/squid/squid.conf
--------------------------------------------------
#使用しているローカルネットワークを定義(それ以外は削除)
acl localnet src 192.168.xxx.0/24
#有効なIPv6のローカルネットワークを定義追加 23/02/08
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
# 安全ではない特定のポートへのリクエストを拒否する
http_access deny !Safe_ports
# 安全なSSLポート以外のポートに対するCONNECTリクエストを拒否する
http_access deny CONNECT !SSL_ports
# [セキュリティ最適化] localhostへの不正アクセスを防止する設定
http_access deny to_localhost
# ローカルネットワークからのアクセスを許可するルールの例
http_access allow localnet
http_access allow localhost
# 最後に、これら以外のすべてのアクセスを拒否する
http_access deny all
# ポート3128でリクエストを待ち受ける
http_port 3128
# 【最適化】キャッシュ用メモリのサイズを 4GB に拡大
cache_mem 4096 MB
# 【最適化】1オブジェクトあたりメモリにキャッシュする最大サイズを 2MB に拡大
maximum_object_size_in_memory 2 MB
# 【最適化】ディスクキャッシュを高速な aufs 形式で 15GB 有効化
cache_dir aufs /var/spool/squid 15000 16 256
# キャッシュに保持するファイルの最小・最大サイズ
minimum_object_size 0 KB
maximum_object_size 32 MB
# ログのフォーマットを標準的な形式にする
access_log daemon:/var/log/squid/access.log squid
# プロキシの存在を隠す(セキュリティを高めるアノニマス設定)
forwarded_for off
request_header_access X-Forwarded-For deny all
--------------------------------------------------
構文にエラーがないかチェック
# squid -k check
キャッシュディレクトリの初期化(必須)
※少し時間がかかる場合がありますが、プロンプトが戻ってくるまで待ってください。
# squid -z
起動設定
# systemctl enable squid
# systemctl start squid
ポートオープン
# firewall-cmd --zone=internal --add-service=squid --permanent
# firewall-cmd --reload
# firewall-cmd --list-all --zone=internal
proxyの自動設定
androidや、ipad等でも可能な限り使用したいので設定を追加
BIND
プライベートアドレスのCNAMEレコード追加
# vi /var/named/rc.chinaz.org
--------------------------------------------------
wpad IN CNAME ns
--------------------------------------------------
Apache
proxyの定義ファイルをドキュメントルートに作成
ローカルは、直接で、それ以外は、proxy経由
# vi wpad.dat
--------------------------------------------------
function FindProxyForURL(url, host)
{
if (isResolvable(host) ||
dnsDomainIs(host, ".chinaz.org") ||
isInNet(host, "192.168.xxx.0", "255.255.255.0"))
return "DIRECT";
else
return "PROXY proxy.chinaz.org:3128";
}
--------------------------------------------------
wpad.datのアクセスをプライベートアドレスのみアクセス許可
# vi .htaccess
--------------------------------------------------
<Files "wpad.dat">
# MIMEタイプを明示的に指定
AddType application/x-ns-proxy-autoconfig .dat
Require ip 192.168.xxx.0/24
</Files>
--------------------------------------------------
cachemgr.cgi
cache_objectにmanagerの権限を付与
ログオン用のアカウントとパスワードを設定
# vi /etc/squid/squid.conf
--------------------------------------------------
# 【修正】"acl manager proto cache_object" は削除しました (Squid 5では不要)
# 内蔵の manager ACL を使用して localhost のみ許可します
http_access allow localhost manager
http_access deny manager
# 【修正】管理者のメールアドレスとパスワード設定
cache_mgr hoge@chinaz.org
cachemgr_passwd (パスワード) all
--------------------------------------------------
squidに指定したポートと同じポートを指定
# vi /etc/squid/cachemgr.conf
--------------------------------------------------
localhost:3128
--------------------------------------------------
cgiのアクセス権を設定
# vi /etc/httpd/conf.d/squid.conf
--------------------------------------------------
ScriptAlias /status/cachemgr.cgi /usr/lib64/squid/cachemgr.cgi
<Location /status/cachemgr.cgi>
Options ExecCGI
Require all denied
Require ip 192.168.xxx.
</Location>
--------------------------------------------------
動作確認
設定がすべて完了したら、Linux サーバー側で Squid のアクセスログをリアルタイム監視しながら、Android スマホで Web サイト(HTTP/HTTPS)を開いてみてください。
tail -f /var/log/squid/access.log
