Forward Proxy(Squid3)の設置メモ
銀鷹です。
先日、とある事情によりアメリカに居りましたが、
その際に、日本国外からのアクセスを拒否するサービスを使う必要がありました。
その対策として、Forward Proxyを建てた時のメモです。
Forward Proxyとは?
最近はめっきり聞かなくなりましたが、昔の言葉(?)で言うなら串ってやつです。
最近よくある、Nginxで建てて、裏にあるWebアプリにつなぐReverse Proxyとは別物です。
Forward Proxyは、昔回線が細かった頃には、キャッシュとしての意味合いがあったり、
一時(多分90年台くらい)は、自分のグローバルIPを秘匿して
Webサイトにアクセスするときに使われていた様に思います。
(AnonymousなProxyとかがそういう奴でしたね…)
探すと、今でもリストが公開されているようです。
http://www.cybersyndrome.net/pla5.html
今回は、日本国外のIPアドレスからのHTTPリクエストを、
日本国内のForward Proxyサーバを経由することで、
国内からのアクセスに見せかけるために使います。
(基本的に問題無いと思いますが、規約で禁止されてたりしたら辞めてくださいね…)
Forward Proxy Serverの選定
一応、幾つかサーバがあるようですが、
今回はよくあるSquid3を使いました。
最初は、Nginxでも建てれると聞いてやったんですが、
NginxさんはHTTPSに非対応なので辛くて辞めました。
HTTPオンリーで良いならNingxさんはコンフィグも少なくて楽だったのでお勧めです。
Squid3のインストール
参考サイト: http://tejunsho.com/squid/20130319000170.html
環境
- OS: Ubuntu Server 12.04
- グローバルIPアドレスが振られていること (私の場合は、さくらVPSの1Gプラン使ってます。)
インストール方法
以下のコマンドでOK。
sudo apt-get install squid3
Squid3の設定
/etc/squid3/squid.conf
を書き換える。
デフォルトでは、いっぱいコメントがついたファイルがありましたが、
バックアップしたうえで、僕は全部書き換えました。
内容は以下のとおり。
acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 # XXX.XXX.XXX.XXX/XX の部分は、 # Proxyサーバへのアクセスを許可するIPアドレスの範囲です。 acl localnet src XXX.XXX.XXX.XXX/XX acl winupdate dstdomain .microsoft.com .windowsupdate.com acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 443 acl CONNECT method CONNECT # 以下コメントで囲った部分は、Proxyサーバ利用時に、 # BASIC認証を要求するための設定です。 # 必要なければ消してもOK ########################## auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/.passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl password proxy_auth REQUIRED http_access allow password ########################## http_access allow manager localhost http_access allow winupdate http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow localnet http_access deny all # Proxyサーバのポート番号、一般的に8080ですが、変えてもよい。 http_port 8080 cache_dir ufs /var/spool/squid3 600 16 256 coredump_dir /var/spool/squid3 refresh_pattern . 0 20% 4320 forwarded_for off request_header_access Referer deny all request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all access_log /var/log/squid3/access.log common cache_mem 256 MB
Proxyサーバ利用時にBASIC認証を要求する場合
BASIC認証用のファイルを作る必要があります。
作成方法は以下のとおり。
# htpasswdコマンドが必要なのでapache utilsをインストール sudo apt-get install apache2-utils # 実際にファイルの生成 # <USER>は認証時のユーザ名で、<PASS>はパスワードで置き換えること。 sudo htpasswd -c /etc/squid/.passwd <USER> New password: <PASS> Re-type new password: <PASS> sudo chown proxy:proxy /etc/squid3/.passwd
以上で設定は完了。
sudo service squid3 restart
でSquid3を再起動。
建てたForward Proxyを使う
ブラウザのProxy設定部分に、Forward Proxyを建てたサーバのIPアドレスかドメインと設定したポート番号を入れて完了。
BASIC認証を有効化している場合は、初回接続時に認証があります。
後は確認くん(懐かしい)とかで、
ちゃんとIPアドレスがForward Proxyの物になっているかを確認して完了。
あとは、Proxy経由で色んなサービスを使ってください。
まあ、大抵の場合は普通にアクセスするより重くなるので、
必要最低限以外は使わないほうがいいと思います。