Global Accelerator (GA) を使って安定な日中VPN環境を構築する
Global Accelerator (GA) を使って安定な日中VPN環境を構築する
本記事は既存の日中VPN環境を安定させたい、手軽に環境を構築する方法をご紹介いたします。
構成概要
今回は新しく東京リージョンのVPCにVPNサーバを立てますが、Global AcceleratorはAlibaba Cloudの外にあるIPアドレスにもAlibabaのバックボーンを使って国際インターネットの経路を最適化、加速化できますので、オンプレミス等にあるVPNサーバに対してもご利用可能です。
新たに立てるVPNサーバはオープンソースの「Pritunl」の無償版を使います。Pritunlは無償版でもユーザ接続数に制限がなく、2要素認証に対応していて設定もGUIで楽です。
無償版のオープンソースは他にも「SoftEther」が挙げられますし、メーカーサポートが得られる有償版ではプロキシやIPsecなどUTM機能が豊富な「FortiGate VM」がオススメです。FortiGateはマーケットプレイス上にBYOL版、PAYG版がそれぞれあります。
今回テストで使うECSは、1vCPU 2GiBの「ecs.t5-lc1m2.small」を用意し、OSは「CentOS7.8」を使います。
まずは、東京リージョンにECSをCentOSで立ててPritunlをインストールし、後半はGAを作成して紐付け作業を行います。
VPNサーバ(Pritunl)のインストール
Pritunlのインストレーションガイドはこちらです
OSに合わせてPritunlとMongoDBをインストール(今回はCentOS7)
sudo tee /etc/yum.repos.d/mongodb-org-4.2.repo << EOF[mongodb-org-4.2]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.2.ascEOFsudo tee /etc/yum.repos.d/pritunl.repo << EOF[pritunl]name=Pritunl Repositorybaseurl=https://repo.pritunl.com/stable/yum/centos/7/gpgcheck=1enabled=1EOFsudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmgpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292Agpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmpsudo yum -y install pritunl mongodb-orgsudo systemctl start mongod pritunlsudo systemctl enable mongod pritunl
Pritunlの初期設定
ブラウザより https://"ECSのEIP"/ へアクセス
setup-keyを入力しSaveをクリックします。
setupキーはCentOSにて sudo pritunl setup-key で確認できます。
ユーザログイン
デフォルトのユーザ名とパスワードはCentOSにて sudo pritunl default-password で確認できます。
パスワード設定
新しいパスワードを入力してSaveします。
ユーザ名や接続ポート番号も任意のものに変更可能です。
※接続ポートはECSのSecurity Groupで許可が必要です。
SSL-VPNサーバの設定
Servers > Add Server
Name: 任意
Virtual Network: クライアントにアサインするIPレンジ(デフォルト)
Port: 任意 (デフォルト)
Protocol: udp(デフォルト)
Enable Google Authenticator: 任意
※サービスポートはECSのSecurity Groupで許可が必要です。
※今回はGoogle Authenticatorで2要素認証もやってみます。
ユーザ組織の追加
Users > Add Organization >
Name: 任意
ユーザの追加
Users > Add User
Name: 任意
Select an organization: 上記の組織を選択
Email: 任意
Pin: 任意(接続認証時に使います)
ユーザ組織とサーバの紐付け
Servers > Attach Organization
Select an organization: 指定の組織
Select a server: 指定のサーバ
サーバ起動
Servers > Start Server
ユーザの接続方法
クライアントソフトのダウンロード・インストール
Pritunlの専用クライアントソフトを公式ページからダウンロードできます。
対応OSはWindows, Mac, Linuxのみですが、Pritunl自体はOpenVPNとの互換性がありますので、iPhone, AndroidであってもOpenVPNのクライアントソフトを使えばVPN接続が可能です。
ユーザプロファイルのダウンロード
ユーザプロファイルはPritunlサーバのUsersページからダウンロードできます。
また、専用URLを発行しサーバ管理者以外にプロファイルをダウンロードしてもらうこともできます。
今回はプロファイルをダウンロードし、.tarファイルを解凍します。
下の画像赤枠は右から順に
Google Authenticator用のバーコード取得
テンポラリープロファイルURLの取得(ユーザに渡すための)
プロファイルのダウンロード(今回はこちらからダウンロード)
ユーザの無効化・切断
ユーザプロファイルのインポート
Pritunlクライアントを開き、Import Profileで解凍した .ovpnファイルを取り込みます。
右上の三本線をクリックし、Connectをクリックすると、ユーザ設定で指定したPinの入力を求められます。
その次にOTP Code(Google Authenticator)から発行される6桁のワンタイムコードを入力しOkをクリックします。
これで接続が確立されました。
ここまでで、VPNサーバ単体の動きを確認できました。
一般的な確認サイトでグローバルIPを調べるとちゃんとVPNサーバのEIPが出てきます。
AlibabaのIPとも表示されてますね。
まだGAを作成していないため、今は中国から繋いでもパフォーマンスはでません。
Global Accelerator (GA) の設定
おまたせしました、ここからはGAの設定になります。
GAに関するドキュメントはコチラ
https://www.alibabacloud.com/cloud-tech/ja/product/55629.htm
GAの課金項目はインスタンス料金 + 仕様料金 + 帯域幅料金となります。
詳細はドキュメントをご参照ください。
https://www.alibabacloud.com/cloud-tech/ja/doc-detail/153194.htm
1. GAインスタンスの作成
Global Accelerator > インスタンスの作成
テストのため今回はSmall Iを選択
2. 基本帯域プランの購入・バインド
Global Accelerator > 基本帯域幅の購入
こちらテスト用に2Mbpsを選択
3. クロスリージョンの帯域プランを購入・バインド
Global Accelerator > クロスボーダー加速帯域プランの購入
こちらもテスト用に2Mbpsを選択
エリアAが中国本土、エリアBがグローバルになっていることを確認
4. リスナーの追加
Global Accelerator > GAインスタンスをクリック > リスナー > リスナーを追加
リスナー名: 任意
プロトコル: Pritunlサーバで指定したもの(今回はUDP)
ポート番号: Pritunlサーバで指定したもの(今回は12784)
次へ
エンドポイントグループ名: 任意
リージョン: 東京
バックエンドサービス: Alibaba Cloud
バックエンドサービスタイプ: Alibaba CloudパブリックIPアドレス
バックエンドサービス: VPNサーバのEIP
重量: 0〜255で指定(今回は100)
※エンドポイントには計4つのIPアドレスが登録可能で重み付けによる負荷分散に対応しています。
5. リスナーの確認
作成が終わったら状態が有効になっていることを確認し、リスナーIDをクリックします。
表示されるエンドポイントグループIPをメモします。
※1つのリスナーに対して払い出されるエンドポイントグループIPは4つです。
※この4つのIPからの通信に対してエンドポイント(ECSのVPNサーバ)のSecurity Groupで許可する必要があります。
6. アクセラレーションエリアの設定
Global Accelerator > GAインスタンスをクリック > アクセラレーションエリア > アクセラレーションエリアの追加
アクセラレーションエリア: ユーザに近い地域(今回は中国東部)
リージョン: ユーザの最寄りリージョン(今回は上海)
帯域幅: クロスリージョン帯域幅から割当(今回は2Mbps)
OKをクリック
※高速化IPアドレスが表示されますのでメモします。
※このIPが実際にユーザがアクセスするIPとなります。
GA + VPNサーバの接続テスト
それでは接続テストをしてみましょう。
先ほどユーザの接続方法の項目でPritunlのプロファイルをクライアントにインポートして接続を試しましたが、今回は接続先のIPをVPNサーバのEIPからGAのEIPに変更してあげる必要があります。そうでないと、GAを通ることにはなりませんのでご注意ください。
Pritunlクライアント右上の三本線をクリックし、Edit Configをクリックします。
この行でECSのEIPアドレスをGAのEIPアドレスに変更し、Save Profileをクリックします。(上から6行目あたり)
remote "ip xx.xx.xx.xx" "port xxxxx" udp
そしてConnectをクリックしてVPN接続するとServer AddressがGAのEIPになっていますが、正常に接続できていることが確認できます。
グローバルIPを調べると先ほどと同じ東京リージョンにあるVPNサーバのEIPが出てきます。
GA vs Internetの品質(上海〜東京)
Pingでの品質測定を金曜日と土曜日に実施してみたところこのような結果となりました。左がレイテンシー、右がパケットロスです。
【GA + VPNサーバ】
【インターネット】
上海のサーバからyahoo.co.jpまでの結果になります。GAを使うと46msec前後のレイテンシーでパケロスが0%に対し、国際インターネットをそのまま使うと78msec前後のレイテンシーでパケロスが最大9%ありました。パケロスが多い場合でもWeb閲覧はなんとかできるかもしれませんが、データ転送やWeb会議はやはり安定した通信をさせたいものです。
おわりに
このようにGAは特定のWebサービスのIPやドメインに対して海外からのアクセスを加速化させることができます。今回はAlibaba Cloud上のIPを加速化しましたが、なんと言ってもAlibaba Cloud外のIPも加速化できるので、例えば既にオンプレミスにVPNサーバがある場合などは新たにシステムを構築する必要がなくGAと組み合わせるだけで日中接続が快適になります。
ここでは紹介しきれなかったGAを使った冗長構成やIPsec-VPNの加速化などもありますので、是非ドキュメントもご参照ください。
【GAの冗長構成例】
https://www.alibabacloud.com/cloud-tech/ja/doc-detail/170640.htm
【GAを使った国際IPsec-VPNの加速化】
https://www.alibabacloud.com/cloud-tech/ja/doc-detail/160672.htm