なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Squidでプロキシサーバ構築

EDIT 元の記事は2013年に更新したものですが、squid 3.5.20を改めて試してみました。

パッケージを導入

Centosのバージョンを確認

# uname -a
Linux freestylewiki.xyz 2.6.32-042stab138.1 #1 SMP Wed May 15 09:33:10 MSK 2019 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

サクッとパッケージを入れる

# yum install squid
# squid -v
Squid Cache: Version 3.5.20

パッケージが入ったらオラオラで設定ファイルを新規作成(バックアップは忘れずに)

 # vim /etc/squid/squid.conf

最小構成としてはこんな感じで動いた

# /etc/squid/squid.conf
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl localnet src x.x.x.x/32  # my home

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
acl CONNECT method CONNECT

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 3128

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid

#
# Add any of your own refresh_pattern entries above these.
#
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

# 以下の設定はおそらく --enable-http-violations オプションをつけてコンパイルしたsquidでないと使えないかも
# プロキシサーバーを使用している端末のローカルIPアドレスを隠蔽化
forwarded_for off

# プロキシ経由でアクセスしていることをアクセス先に知られないようにする
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

テスト

wgetをプロキシ通して実行、127.0.0.1に問い合わせしに行ってるログが見えるはず。見えたらプロキシサーバ構築完了です。

 $ http_proxy=http://localhost:3128 wget http://www.gnu.org/licenses/gpl-3.0.txt