好奇心 x 探求心 = やじうまゴコロ

だって気になるんだから仕方ないじゃない!?

【EC2+Softether】無料で使えるVPNサーバを構築すれば中国でもGoogle、Facebook、twitterが使えるはず

f:id:drpoteco:20170923223919j:plain 中国はご存知の通り金盾の影響でGoogle、Facebook、twitterなどのサービスが使えません。
LINEはなんとか使えていたような気がしますが、中国政府の規制が厳しく安定していないことがしばしばありました。

会社の出張で行くときは会社からVPNのアカウントを払い出してもらう人も多いかと思いますが、そんな優しい会社じゃないとかログを残したくないとか色々ありますよね。

以前、無料のVPNサービスも試してみましたが結果はいまいち。

今回はほぼ無料で自分専用のVPNサーバを作ってみました。

AWSの無料利用枠をフル活用

無料で自前のVPNサーバを構築するにあたりAWSを使います。
AWSは始めてアカウントを作った人に対して無料利用枠を設けています。
アカウントを作るにはクレジットカードの登録が必要になりますが、無料利用枠の範囲で使う分には利用料が発生することはありません。

AWSアカウント作成方法は本家で確認してください。
難しいことはありません。

VPNサーバ用のEC2を作成

東京リージョンにEC2インスタンスを構築します。要はサーバを立ち上げます。

インスタンスタイプ:t2.micro
OS:Amazon Linux
ストレージ:8GB

セキュリティグループはインバウンドで下記を許可してください。

TCP:22 (任意のIPを許可)
UDP:500 (0.0.0.0/0)
UDP:4500 (0.0.0.0/0)

外部からのアクセスでIPを固定させるためにElasticIPを付与してください。

SoftEther VPNとは

SoftEther VPNは複数プラットフォーム、複数プロトコルでに対応したオープンソースのVPNソフトウェアで、筑波大学の研究プロジェクトとして開発されています。

SoftEtherのインストール

作業はすべて「root」で行います。

まずはOSのアップデートをしておきます。(これはインスタンスを新たに立ち上げたらやっておくべき

SoftEtherをwgetで取得し、makeします。

makeしたあとにライセンスに同意するか聞いてくるので全て「1」を入力してください。
※3回聞かれます。

/usr/localにインストールしたSoftEtherを移動させ、権限を付与します。

サービスの自動起動設定

/etc/init.dにvpnserverを作成し、

以下のスクリプトを記述します。

自動起動設定

自動起動になっているか確認するには下記のコマンドで得られた結果の2,3,4,5がonになっていればOKです。

vpnserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off

VPNサーバを起動させます。

おまけ
VPNサービスの停止方法と再起動方法

★停止方法

★再起動方法

VPNの構築

仮想HUBの作成

コマンドラインモードに変更します。

「1. Management of VPN Server or VPN Bridge」を選択します。
※1と入力してEnter

IPアドレスとHUBの名前を聞いてきますが、すべて「Enter」

現状の仮想HUBを確認します。

「DEFAULT」という仮想HUBがあることが分かると思います。(あとで「DEFAULT」は消します)

今回は「EC2HUB」を作ります。

もともと存在していた仮想HUBは必要ないので削除しておきましょう。

DEFAULTが削除されて、EC2HUBが作成されていることを確認します。

ユーザの作成

仮想HUBに属するユーザを作成します。
このユーザでVPNにアクセスすることになります。

まずは先ほど作成した仮想HUBをしています。

現状のユーザを確認

※ユーザは空のはずです。

ユーザ「vpnuser1」が作成されたことを確認します。

ユーザのパスワードを設定します。

仮想 NAT および DHCP サーバー機能の有効化

「仮想 NAT および DHCP サーバー機能 (SecureNAT 機能) の有効化」をします。

LT2P/IPSecの設定

以上でVPNの構築は完了です。

クライアント(iPhone、Android)でVPN接続してみます。

iPhoneでVPN接続

ますは設定から。

[設定]→[一般]→[VPN]を開きます。

VPN構成を追加…をタップします。

以下の通り設定して、右上の[完了]をタップします。

タイプ:L2TP
説明:分かりやすい名前(例えばAWS_VPN)
サーバ:EC2で設定したElasticIPのアドレス
アカウント:vpnuser1(作成したユーザ)
RSA SecureID:オフ
パスワード:(設定したユーザのパスワード)
シークレット:
(「LT2P/IPSecの設定」で設定したPre Shared Key for IPsec)
すべての信号を送信:オン
プロキシ:オフ

AndroidでVPN接続

[設定]→無線とネットワーク[もっと見る]→[VPN]→[VPNプロフィールの追加]を開きます。
Androidは使っている端末によって若干表現が違うかもしれないです。(っていうか違います。)

以下の通り設定してください。

名前:分かりやすい名前(例えばAWS_VPN)
タイプ:L2TP/IPSec PSK
サーバアドレス:EC2で設定したElasticIPのアドレス
ユーザー名:vpnuser1(作成したユーザ)
パスワード:(設定したユーザのパスワード)
IPSec事前共有鍵:
(「LT2P/IPSecの設定」で設定したPre Shared Key for IPsec)
PPP暗号化(MPPE):オン

VPNに接続するには[設定]→[VPN]をオンにします。
接続できると画面最上部(時計とかアンテナ状態とかバッテリー状況がひょうじされているところ)に「VPN」と表示されます。

最後に

iPhoneでもAndroidでも、どちらも問題なくVPN接続ができることを確認しました。
まぁ日本国内から繋いでいるからできて当然なんですけどね。
もちろんGoogleもFacebookもtwitterもOK

近々また中国に行くことがあると思うので、その時にVPN接続を確認してきます。
それまではひとまずインスタンス停止。

Copyright© 好奇心 x 探求心 = やじうまゴコロ All Rights Reserved.