さくらVPSでProxyサーバを立ててみる 2012年08月24日

今年、さくらインターネットがVPSのサービスをオープンさせた。

VPSというのは大きなハードウェアを用意してXenやVMwareなどの仮想化システムで仮想的に切り出したサーバをまるごと貸し出すレンタルサーバのサービス。ウェブから申し込みが出来て、クレジットカード払い、申し込んだ後すぐに使用が可能。さらにメモリ1G、HDD1Gの構成で初期費用無しの使用料が月々980円という低価格が魅力で以前から使ってみたくていろいろアイデアを考えていた。

その中で、ちょっと必要があり、プロキシを立てる用事が出来たので実際に契約、squidをインストールしてみた。

契約は必要な項目をさくらインターネットのサイトで入力して行って、最後にクレジットカードの入力。タイに居てるとよく体験する事だが海外(タイから見て)のサイトでタイで発行されたクレジットカードが通らないことがよくある。バンコク銀行のものとか、イオンのクレジットカードとか、カシコン銀行のものとか試したけどダメで結局楽天銀行のデビットカードを使った。使ったことある人に聞くとKTCのJCBカードは使えたらしい。

契約するとグローバルで固定のIPを付与したVPSサーバをあてがわれる。ウェブの管理画面からはサーバの起動、停止、再起動などの操作が可能。また、シリアルコンソールも用意されてるので、もしなんらかsshがつながらなくなった場合はここから操作ができる。またサーバのCPU/Network/Disk I/Oなどのリソース消費状況も簡単なグラフで表示されている。VPSなのでサーバのリセット、OS再インストールなどはめちゃ早い。2,3分で初期状態に。

標準でsshが使えるようになっていて、申し込み完了時に届くメールに書いてあるパスワードで接続が可能。管理画面のシリアルコンソールは重いので基本はこちらを使う事になるだろう。さて、実際にインストール作業。さくらのVPSサーバにはsquidは標準でインストールされていないので

yum install squid

でインストールする。今回はADSL環境から接続する必要があるのでIPアドレス制限をせずにユーザー名、パスワードでのBasic認証でユーザーを制限したい。ベーシック認証のパスワードを保持するファイルの作成が必要で、そのツールが標準でsquidには付属しない。Apacheをインストールする必要がある。

yum install httpd

これでインストールされるモジュールの中でhtpasswdというコマンドを使用する。

htpasswd -c -m /etc/squid/passwd user01

の書式にて/etc/squid/passwdのファイルをhtpasswdに作成させてそこにuser01を登録。htpasswdは標準ではパスワードを8文字までしか受け付けられないので必ず-mをつけること。もしつけずに8文字以上入力すると自動的に8文字以降はカットしてパスワード登録してしまう。

パスワードを”1234567890″で登録すると、-mなしの場合”12345678″としか登録されない。

二人目以降のユーザを登録する際には

htpasswd -m /etc/squid/passwd user02

-cはファイルの作成オプションなのでこれをつけたままにするとファイルを上書きしてしまう。それまで登録したユーザ情報が消えてしまうので-cを取って追記させるようにする。

さらにパスワードを保持するファイルを作ってもそれを利用できるモジュールがyumでインストールしたsquidには付属しないのでソースからコンパイルして利用する。

squid : Optimising Web Delivery

wget http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.1.tar.gz

でVPSのコマンドラインからTarBallを取得。/rootなどのディレクトリで

tar xvzf squid-3.2.1.tar.gz
cd squid-3.2.1.tar.gz
./configure
make
cd auth_modules
cd NCSA
make install

とすることでsquidのベーシック認証のモジュールのみをインストールすることができる。

これで必要なモジュールは揃ったので/etc/squid/squid.confを編集して上記のモジュールを使用できるようにする。以下を追記。


auth_param basic program /usr/local/squid/libexec/basic_ncsa_auth /etc/squid/passwd
acl password proxy_auth REQUIRED
http_access allow password

これでProxy接続時にユーザ名、パスワードの認証を聞いてくるようになる。また、以下は完全匿名Proxy設定。クライアントPC側のIPアドレス情報をWebサーバ側に返さないようにする設定。


visible_hostname unkown
forwarded_for off
request_header_access X-FORWARDED-FOR deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

こちらも追記。これで一応完了。