目次
モバイルアプリを開発中。趣味でIoTガジェットも作っています。
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 します。
- HTTP リクエストのメソッド が CONNECT である。
SSL_ports
で定義されていない TCP PORT に対する通信である。
補足: 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
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- GCP Cloud Source Repositories に squid 経由でアクセスする設定例Squid は HTTP Proxy です。加えて、FTP over HTTP や SSH over HTTP といった技術を併用することで、FTP や SSH プロキシとしても機能します。本ページでは、 すべて HTTP 通信で GCP Cloud Source Repositories にアクセスする方法と、 SSH over HTTP を併用することで GCP Cloud Source Re...
- HTTP とは?簡単なまとめHTTP (Hypertext Transfer Protocol) はTCP/IPにおけるアプリケーション層プロトコルのひとつです。大まかにはリクエストとレスポンスの二種類によるやりとり方法を定めています。 リクエスト 代表的なリクエストメソッドはGETとPOSTですが、他にもPUTやDELETEなどがあります。いずれもリクエストラインが一行目にきて、空白区切りで「リクエストメソッド、リクエスト...
- Android における非同期 HTTP 通信Android で利用される HTTP クライアントには Volley や OkHttp がありますが、ここでは Android プラットフォームに標準で導入されている [HttpsURLConnection](https://developer.android.com/reference/javax/net/ssl/Https
- Scala HTTP 通信ビルドツールの設定 Dispatch を利用します。 pom.xml (maven) <dependency> <groupId>net.databinder.dispatch</groupId> <artifactId>dispatch-core</artifactId> <version>0.11.2</...
- HTTP 経由でファイルシステムをマウント (WebDAV、davfs2)HTTP の拡張である WebDAV を利用すると、サーバ上のファイルシステムを HTTP で外部に公開できます。Debian9 を利用した設定例を記載します。HTTP サーバとしては Apache を利用します。 Apache の設定 必要なパッケージをインストールします。 sudo apt install apache2 公開するディレクトリを用意します。 sudo mkdir -p /dat...