通話アプリをCEN経由で使用してみる
今回はLINEやSkypeなどのスマホの通話アプリを、CEN経由で使用する方法について検証してみましたので、ご紹介します。
検証のきっかけ
先日とあるお客様から、「インドネシアからスマホアプリのSkype接続が遅延したり切れてしまう。安定して通話させる方法はないか。」と、ご相談がありました。
このような海外からのアクセス遅延に対してご相談があった際は、海外リージョンからCENを使用して日本リージョンに抜け、日本リージョンに構築したHTTPプロキシーを経由させるという構成を提案するケースがよくありました。 以下のような構成です。
ところが、SkypeはUDPを使用するため、HTTPプロキシー経由での接続はできず、別の方法を検討する必要があることがわかりました。
そこで、UDPをフォワードするための方法として、オープンソースのSoftEtherを使用した構成で、Skype接続を検証することになりました。
構築の流れ
今回検証した環境の構築手順を簡単に説明していきます。
以下の環境を構築します。
1.ECS、CEN環境の構築
まずはクラウド側の環境構築を行います。
インドネシアリージョン、東京リージョンにVPC、Vswitchを構築しCENで接続します。
2.SoftEtherのインストール・設定
SoftEtherVPNserverのインストール
ECSをデプロイしたあと、SoftEtherVPNserverをインストールします。 (インドネシア、東京リージョンのECS共ににインストールします)
# cd /usr/local/# wget http://jp.softether-download.com/files/softether/v4.29-9680-rtm-2019.02.28-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz# tar zxvf Intel_x64_or_AMD64/softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz# cd vpnserver/# make
※モジュールは「softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz」を使用しました。
ECS上でVPNサーバープロセスを常駐化させるため、Systemdでサービス化します。
# vi /etc/systemd/system/vpnserver.service[Unit]Description=SoftEther VPN ServerAfter=network.target[Service]Type=forkingExecStart=/usr/local/vpnserver/vpnserver startExecStop=/usr/local/vpnserver/vpnserver stop[Install]WantedBy=multi-user.target
VPNサーバーを起動します。VPNサーバーを自動起動させる場合、systemctl enableを実行します。
# systemctl start vpnserver# systemctl status vpnserver# systemctl enable vpnserver
SoftEtherVPNServerMangerのインストール
続いて、GUIでSoftEtherの設定ができるように、SoftEther公式ダウンロードページから、SoftEther VPN Server Managerをダウンロード・インストールします。
インストール後、VPN Server Managerを立ち上げ、ECSにインストールしたSoftEtherに接続します。
仮想HUBの作成
初期状態で作成されている仮想HUBを削除し、新規に仮想HUB
を作成します。 (インドネシアリージョン、東京リージョンのSoftEther共に作成します)
ユーザーの作成
ユーザーを作成します。 (インドネシアリージョン、東京リージョンのSoftEther共に作成します)
ローカルブリッジ設定
ローカルブリッジを設定します。 (インドネシアリージョンのSoftEtherのみ設定します)
セキュリティNAT設定
セキュリティNAT設定を行います。 (東京リージョンのSoftEtherのみ設定します)
カスケード接続設定
カスケード接続設定を行います。 (インドネシアリージョンのSoftEtherのみ設定します)
OpenVPN用コンフィグファイル作成
コンフィグファイルをダウンロードします。 (インドネシアリージョンのSoftEtherのみ作成します)
3.iPhoneへのOpenVPNのインストール・設定
OpenVPNのインストール
ここからはスマホ側の設定です。
インドネシアリージョンのSoftEtherとVPN接続させるため、スマホ(今回はiPhoneを使用しました)にOpenVPNをインストールします。
インストール後、VPN接続用のConfigファイル(SoftEtherからダウンロードしたConfigファイル)をiPhoneにコピーします。
itunesを使うと簡単にコピーできます。
VPN接続設定
コピーしたConfigファイルを使用し、VPNの接続設定を行います。
ユーザー名、パスワードはインドネシアリージョンのSoftEtherの仮想HUBユーザー名、パスワードを使用します。
4.動作確認
OpenVPNでVPN接続を行ったあと、Skypeアプリを起動し通話してみます。
東京リージョンのECS上でtcpdumpコマンドを実行すると、Skype宛のパケットが流れていることを確認することができます。
# tcpdump port 3478tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes10:33:48.147540 IP iZ6we2j2t9k18vbesp7sjlZ.65100 > 203.140.30.195.stun: UDP, length 14810:33:48.151182 IP 203.140.30.195.stun > iZ6we2j2t9k18vbesp7sjlZ.65100: UDP, length 15110:33:48.208178 IP iZ6we2j2t9k18vbesp7sjlZ.65100 > 203.140.30.198.stun: UDP, length 148
おわりに
今回はSoftEtherとCENを使用して、海外リージョンからSkype等のUDPアクセスする方法について記載しました。
この構成はUDPだけでなくTCPももちろんフォワードできますし、いろいろな用途に流用できると思います。
構築は非常に簡単なのでぜひ試してみてください。