togatttiのエンジニアメモ

過度な期待はしないでください。旧麹町で働くエンジニアのメモ帳です。

外部サーバにSquid3でプロキシを立てる

プロキシを設定したときの走り書きです。

環境は、Ubuntu14.04.3 LTSです。

インストール

# apt-get install -y squid3

設定ファイル

/etc/squid3/squid.confをコピーして使う。特定のACLからの80と443ポートへのアクセスをフォワードするように 最低限の設定をする。

acl localnet src  ***.***.***.***/23
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow localnet
http_access deny all
http_port 3128
cache_dir ufs /var/spool/squid3 600 16 256
coredump_dir /var/spool/squid3
refresh_pattern .       0   20% 4320
access_log /var/log/squid3/access.log common

再起動する。

# restart squid3

curlで、動作確認する。

ACLで許可したサーバからプロキシ経由でアクセスした場合

$ curl -I -x proxy.example.com:3128 -L blog.hatena.ne.jp
HTTP/1.1 302 Moved Temporarily
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Sun, 08 Jan 2017 04:25:05 GMT
Location: https://www.hatena.ne.jp/login?location=http%3A%2F%2Fblog.hatena.ne.jp%2F
P3P: CP="OTI CUR OUR BUS STA"
Server: nginx
Set-Cookie: b=$1$hgANMQcX$tV164HRhox4dVoyOz9eGh1; expires=Sat, 03-Jan-2037 04:25:05 GMT; domain=hatena.ne.jp; path=/
Set-Cookie: sk=99c1e798a67850410e453590e89a8cc9025ffb7f; path=/
Vary: Accept-Language, Cookie
X-Content-Type-Options: nosniff
X-Dispatch: Hatena::Epic::Admin::Index#default
X-Frame-Options: DENY
X-Revision: 81eb8b22d9cef6ded0b861732d7ed075
X-Runtime: 0.007440
X-XSS-Protection: 1
X-Cache: MISS from ***********
X-Cache-Lookup: MISS from ***********:3128
Via: 1.1 **********(squid/3.3.8)
Connection: keep-alive

HTTP/1.1 200 Connection established

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 08 Jan 2017 04:25:06 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 8393
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Language,Accept-Encoding,User-Agent
X-Frame-Options: SAMEORIGIN
X-Framework: Ridge/0.11 Plack/0.9982
X-Ridge-Dispatch: Hatena::WWW::Engine::Login#default
X-Runtime: 79ms
X-View-Runtime: 54ms
Set-Cookie: b=$1$nniOFGW0$4HjT61d1E1yqllw58ss1o/; path=/; expires=Sat, 03-Jan-37 04:25:05 GMT; domain=.hatena.ne.jp

ACLで許可しないサーバからプロキシ経由でアクセスした場合

$ curl -I -x proxy.example.com:3128 -L blog.hatena.ne.jp
HTTP/1.1 403 Forbidden
Server: squid/3.3.8
Mime-Version: 1.0
Date: Sun, 08 Jan 2017 04:31:45 GMT
Content-Type: text/html
Content-Length: 3186
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from ******
X-Cache-Lookup: NONE from ******:3128
Via: 1.1 ****** (squid/3.3.8)
Connection: keep-alive