JavaScriptヘッダ定義

広告

2016年1月6日水曜日

AWSの無料利用枠で中国旅行用のVPNを用意する

Great Firewall

皆さんご存知かと思いますが、中国本土ではインターネットの接続制限があり、一部のサイトにアクセスできません。金盾やGreat Firewallなどと呼ばれています(wikipedia)。接続できないサイトとしては、Google, Facebook, Twitterなどがあり、旅行や出張などの際に非常に不便です。

VPN

そこで、一般に中国によく出張に行く人はどうしているかというと、VPNという仕組みを使っています。プロキシのプロトコルを問わなくなったもののようなもので、一度接続してしまえばブラウザでもアプリケーションでも、VPNサーバを経由して通信を行うようになるので、Great Firewallを回避できるというものです。詳しくはwikipediaへ。VPNへはセキュアな通信路ができるので、セキュリティを高める目的で利用されることもあります。
今回は、AWSの無料枠を使ってVPNサーバを用意して、中国からの通信に備えようと思います。

AWSの設定

アカウントは普通に作ってください。カード情報が必要ですが、無料枠のみを使っている限りは請求されません。
アカウントができたら、インスタンスを作ります。右上からどのリージョンで作業するかを選べますが、基本的には地理的に近い場所を選んでおくとレイテンシが低くて良いです。今回はなんとなくシンガポールにしてみました。
リージョンを選んだらインスタンスを作成します。今回はAMIとして「Ubuntu Server 14.04 LTS (HVM), SSD Volume Type」というものを選びました。インスタンスタイプは無料利用可能なものを選びます。
この後いろいろなスペックなどを選択できますが、今回必要な設定は「セキュリティグループの設定」のみです。インバウンドに以下のように設定します。

タイプ
プロトコル
ポート範囲
送信元
SSH
TCP
22
0.0.0.0/0
カスタム TCP ルール
TCP
1723
0.0.0.0/0
カスタムプロトコル
GRE (47)
すべて
0.0.0.0/0

TCPの1723やGREプロトコルは今回設定するPPTPというプロトコルで必要になります。
上記の設定が終わるとインスタンスを作成できます。数分設定に時間がかかり、その後グローバルIPが確定します。独自ドメインなどを設定する場合は、反映に時間がかかるので以下のUbuntuより先に設定しましょう。

Ubuntuの設定

基本的にはこれに倣って行いました。基本的にと言うかこれをやっただけです。
まずはpptpdのインストール。以下ubuntuユーザでsudo実行します。
sudo apt-get install pptpd
/etc/pptpd.conf はVPN接続したクライアントに付与されるローカルIPの範囲を指定します。AWSだとサーバが直接グローバルIPを持ちますが、これらのローカルIPはVPN接続クライアント間での通信に使えるのだという理解です。/etc/pptpd.conf で、次のような部分がサンプルとしてコメントアウトしてあるので、以下のように修正して指定します。
localip 192.168.200.2 
remoteip 192.168.200.128-191
/etc/ppp/pptpd-options ではDNSを指定します。イントラネット内のVPNの場合はここにイントラネットのDNSを指定して、ローカルなサーバの名前解決に利用します。今回はグローバルの解決のみできればいいので、GoogleのパブリックDNSを使用します。同じくサンプルがコメントアウトしてあるので、それを参考に以下のように修正します。
ms-dns 8.8.8.8
ms-dns 8.8.4.4
/etc/ppp/chap-secrets には認証用のユーザ名とパスワードを設定します。以下の様な形式で追加します。
username pptpd password *
/etc/sysctl.conf ではIPv4 forwardを有効化します。以下のコメントアウトを外します。
net.ipv4.ip_forward=1
この設定は再起動後に有効になりますが、今回再起動しないのであれば sudo sysctl -p を実行して設定を強制的に再読込させます。
/etc/rc.local に、iptablesの設定をします。まず/etc/rc.local の exit 0 の前に次のコマンドを追加します。
sudo iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE
この設定も再起動後に有効になりますが、今回再起動しないのであれば一度上記コマンドを直接実行しておきます。
最後に、pptpdを再起動して、サーバを起動します。
sudo /etc/init.d/pptpd restart

接続してみる

これだけで、サーバは動いているはずなので、適当なクライアントから接続してみます。VPNといってもいろいろありますが、PPTPというものを選んでください。サーバ名(IPアドレスもしくはドメイン)、ユーザ名、パスワードの3つを入力するだけで接続できるはずです。

あとがき

作ったあとに知ったのですが、中国本土からだとAWSにも繋がらないことがよくあるようです。また、今回使ったPPTPというプロトコル自体もブロックされてしまうことがあるようです(これは中国に限らずルータの設定によってブロックしていることがよくあります)。
ということで、結局うまくいくのかわからないので、実際に上海に行ってためしてみることにします。実際に行ってから全く使えないといろいろ困るので、このような
【中国聯通香港】「 中国 本土31省と 香港 7日間 1GB 上網 Data通信 専用 プリペイド / SIMカード 」
SIMを買っておきました。香港経由で通信するのでGreat Firewallの問題などはないようです。容量が少なめで通話もつかないですが、必要に応じて現地でチャージして使うつもりです。

0 件のコメント :

コメントを投稿

広告