squid

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

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です