Squidで中間Proxyを立てる

実験環境なんかで、プライベートなネットワーク組むことがよくあるのですが、その際外部ネットワークに HTTP だけは通したいことがよくあります。
OSのパッケージインストールとか、Mavenビルドとかね。
そういうときには Proxy を立てますが、いっつも忘れるのでメモ。
構成的には、プライベートネットワーク内のマシンは、ここで立てるProxyサーバを通して社内ネットワークに接続。
社内ネットワークには、インターネットに出るための社内Proxyサーバが別途立っていて、そこを通らないと Firewall が越えられない前提。
さらに、社内ネットワークのマシン群には、社内Proxyを通さずにHTTPする必要がある。
微妙に、特殊かもしれませんが。

使うのは定番のSquidです。
Ubuntu だと、

# sudo apt-get install squid

で、/etc/squid/squid.conf を以下のように。

#1
http_access allow CONNECT SSL_ports
#2
cache_peer parent.proxy-server parent 3128 7 no-query
#3
acl local-servers dstdomain my.internal.domain
always_direct allow local-servers
#4
never_direct allow CONNECT
#5
forwarded_for off

#1 で SSLポート(デフォルトで定義がある)への接続を許可。
#2 で 社内Proxy(parent.proxy-server)を親Proxyとして設定。これで、外へのアクセスは、社内Proxyへパス。
#3 で 社内ネットワーク(my.internal.domain) へのアクセスは社内Proxyにパスせず直接接続。
#4 で 社外ネットワークに接続する場合のSSL接続は、社内Proxyへパス(SSLはデフォルトで直接接続しようとする)
#5 で 一応IP隠す。

という感じ。
設定は、順番で動作が変わるのでその辺はまることがある。