Squid の簡単な設定例
[履歴] [最終更新] (2021/10/10 00:32:05)
最近の投稿
注目の記事

概要

HTTP Proxy として利用される squid について、設定例を記載します。

localnet の定義

127.0.0.1 に対しては localhost および to_localhost という組み込みの名称のキーワードが利用できます。その他のプライベートIP に対するキーワードは独自に定義する必要があります。

acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8     # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10      # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16     # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12      # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16     # RFC 1918 local private network (LAN)
acl localnet src fc00::/7           # RFC 4193 local private network range
acl localnet src fe80::/10          # RFC 4291 link-local (directly plugged) machines

acl to_localnet dst 0.0.0.1-0.255.255.255
acl to_localnet dst 10.0.0.0/8
acl to_localnet dst 100.64.0.0/10
acl to_localnet dst 169.254.0.0/16
acl to_localnet dst 172.16.0.0/12
acl to_localnet dst 192.168.0.0/16
acl to_localnet dst fc00::/7
acl to_localnet dst fe80::/10

許可するポートの定義

Squid は HTTP Proxy です。Proxy 先となるサーバが待ち受ける TCP ポート番号を定義します。

補足: SSH や FTP のクライアントは、それぞれのアプリケーション用の通信を HTTP 上で行なうことができます。

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 SSL_ports port 443
acl CONNECT method CONNECT

http_access

http_access は上から順番に評価されていきます。合致するルールが発生するまで評価されていきます。

ポートおよびメソッドによる制限

# 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
  • Safe_ports で定義されていない TCP PORT に対する HTTP リクエストの proxy を deny します。
  • 以下の二つの条件を AND で満たすような HTTP リクエストの proxy を deny します。

補足: CONNECT は HTTP Proxy を介して SSL 通信を開始するためのメソッドです。

localhost および localnet

プライベートIP に対する HTTP リクエストの proxy を deny します。

http_access deny to_localnet
http_access deny to_localhost

プライベートIP からの HTTP リクエストの proxy を allow します。

http_access allow localnet
http_access allow localhost

既定値の設定

http_access は上から順番に評価されていきますが、合致するルールが存在しない場合に deny するように指定しておきます。

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

動作確認の例

HTTP 200

curl -sS --proxy http://localhost:3128 http://www.example.com:80

HTTP 403

curl -sS --proxy http://localhost:3128 http://127.0.0.1:80
curl -sS --proxy http://localhost:3128 http://10.0.2.15:80

to_localnet および to_localhost をコメントアウトして reload すると、以下のようにすべて HTTP 200 となります。http_access allow localhost のルールが適用されるためです。

HTTP 200

#http_access deny to_localnet
#http_access deny to_localhost

curl -sS --proxy http://localhost:3128 http://www.example.com:80
curl -sS --proxy http://localhost:3128 http://127.0.0.1:80
curl -sS --proxy http://localhost:3128 http://10.0.2.15:80
関連ページ
    概要 Squid は HTTP Proxy です。加えて、FTP over HTTP や SSH over HTTP といった技術を併用することで、FTP や SSH プロキシとしても機能します。本ページでは、 すべて HTTP 通信で GCP Cloud Source Repositories にアクセスする方法と、