はじめに
クラウド間で接続して相互に接続し、データのやり取り、移行を行う機会が増えてくるでしょう。
そこで、AzureとAWSをセキュアに、そして簡単に相互接続する方法を紹介します。
VPNを利用するには
クラウド間を結ぶ場合、Vyatta、OpenVPNなど利用して接続する場合があります。
しかし、Azureは便利なもので、Azure仮想ネットーワークとWindowsServerの「ルーティングとリモートアクセスサービス(RRAS)」を利用して簡単に接続することができます。接続形式はIPSec(IKEv2)になります。では、接続方法を紹介していきます。
参考: 仮想ネットワーク | Windows Azure のテクニカル ドキュメント ライブラリ
今回の構成する環境はAzure側を 192.168.2.0/24 のセグメントとし、AWS側を 192.168.1.0/24 としています。
AWSの準備
Windows Serverのインスタンスを立ち上げる
Azure仮想ネットワークに接続を行うため、AWS側にWindowsServerを準備します。
仮想ネットワークで利用できるOSはWindows Server 2012/2012R2になります。
そのため用意するインスタンス立ち上げる際には、以下のAMIを利用します。
- Windows_Server-2012-R2_RTM-Japanese-64Bit-Base-201x.xx.xx
- Windows_Server-2012_RTM-Japanese-64Bit-Base-201x.xx.xx
特に問題がなければWindow Server 2012R2を利用します。
セキュリティグループは、この時点ではRDPのみ設定します。
インスタンスを立ち上げ後は、ログインできることは確認しておきましょう。
また、構成図のようにEIPを割り当てます。今回の振り当てるEIP:54.64.124.53となっています。
Azureの準備
仮想ネットワークを設定する
仮想ネットワークの設定方法を順番に見ていきます。新規
→ 仮想ネットワーク
→ カスタム作成
名前
には適当に仮想ネットーワークに名前をつけます。
場所は 日本(東)
を選択します。仮想ネットーワークが作成される場所であり、基本的にはどこでも問題ないです。
(fomってなんだよw)
DNSの設定を行いますが、自前で持っていないのでGoogleのパブリックDNSを利用します。サイト間VPNの構成
にチェックを入れます。ローカルエリアネットワーク
は 新しいローカルネットワークを指定する
にを選択します。
新しいローカルエリアを作成します。
今回は 名前
には AWS
と名前を付けます。
AWS側の 192.168.1.0/24
を指定し、VPNデバイスのIPアドレス
にはWindowsインスタンスのEIP: 54.64.124.53
を指定します。
Azure仮想ネットワーク側のIPアドレスを指定します。
今回は 192.168.2.0/24
を指定します。またsubnetには 192.168.2.0/26
とし、ゲートウェイを 192.168.2.64/29
としました。
以上で仮想ネットーワークの作成は完了です。
仮想ネットワーク作成完了後、ゲートウェイの作成を行う必要があります。AWSと接続が行うためです。
ゲートウェイの作成
をクリックし、動的ルーティング
を選択します。
ゲートウェイが作成が完了すると ゲートウェイIPアドレス
が表示されます。
ゲートウェイIPアドレスは、後でAWS側のセキュリティグループを設定に利用します。
AWS側にWindows Serverで利用するデバイス構成スクリプトをダウンロードします。
ダッシュボードの概要から、 VPNデバイススクリプトのダウンロード
をクリックします。
ダウンロードするスクリプトを選択します。ベンダー
で Microsoft Corporation を選択します。プラットフォーム
で RRAS
を選択します。オペレーティングシステム
で Windows Server 2012 R2
を選択します。VpnDeviceScript.cfg
がダウンロードされます。
これで、Azure側の準備は完了です。
AWS側でRRASを構築する
次にAWS側でRRASの構築を行います。
接続するためにセキュリティグループのポリシーを設定します。
Azure側へポートを解放します。
もっと参考:AWS Developer Forums: VPC with Windows RRAS
事前に立ち上げたWindowsインスタンスにログインします。
ログイン後、WindowsUpdateおよび、ファイヤーウォールを無効にしておきます。
ダウンロードした VpnDeviceScript.cfg
を実行することでRRASが構築されVPN接続可能な構成になります。
VpnDeviceScript.cfg
はPowershellスクリプトです。
コピーした後に、拡張子cfgをps1に変更します。
PowerShellを起動します。
最初に実行セキュリティポリシーを変更します。
PS C:\Users\Administrator> Set-ExecutionPolicy RemoteSigned 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
コピーした VpnDeviceScript.cfg
を実行します。が最後にこけます。
PS C:\Users\Administrator> C:\Users\Administrator\Desktop\VpnDeviceScript.ps1 Success Restart Needed Exit Code Feature Result
TrueNo Success{リモート アクセス} TrueNo Success{RAS 接続マネージャー管理キット (CMAK), Di... 警告: IPv6 が有効になっていません。IPv6 を有効にするには、Set-VpnIpAddressAssignment コマンドレットで IPv6Prefix パラメーターに有効なプレフィックスか FE80::/64 を指定してください。 警告: リモート アクセス サービスの再起動後に構成パラメーターが変更されます。 警告: サービス 'Routing and Remote Access (RemoteAccess)' の停止を待っています... 警告: サービス 'Routing and Remote Access (RemoteAccess)' の停止を待っています... 警告: サービス 'Routing and Remote Access (RemoteAccess)' の停止を待っています... Connect-VpnS2SInterface : ルーティングおよびリモート アクセス サーバーは構成されていないか、実行されていません。 発生場所 C:\Users\Administrator\Desktop\VpnDeviceScript.ps1:92 文字:1 + Connect-VpnS2SInterface -Name 104.41.184.35 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (PS_VpnS2SInterface:root/Microsoft/...VpnS2SInterface) [Connect-VpnS2SInterface], CimException + FullyQualifiedErrorId : HRESULT 800703bc,Connect-VpnS2SInterface
こけても、問題はありません。最後にVPN接続を行う時に失敗しエラーになります。
スクリプト内の最後の行に Connect-VpnS2SInterface
が発行されますが、 Restart-Service RemoteAccess
によるリスタートが終わらずこの問題が発生しています。 Restart-Service RemoteAccess
の後に Start-Sleep -s 10
など10秒程度スリーブすると問題なく終了できます。
~~~~省略~~~~Restart the RRAS service
Restart-Service RemoteAccessStart Sleep 10s
Start-Sleep -s 10Dial-in to Azure gateway
Connect-VpnS2SInterface -Name 104.41.184.35
スクリプト発行後にルーティングとリモートアクセスを立ち上げます。
設定を確認してみます。
Azure側のIPアドレス 104.41.184.35
の名前が付いたインターフェースがあり状態が 有効
、接続状態 接続
になっていることが確認できます。
Azure側のゲートウェイへPingを打ち疎通確認を行います。
ゲートウェイIPアドレスは 192.168.2.64/29
の範囲で設定されます。
また、Azure側でも接続も確認します。
以上でAzureとの接続設定は完了です。
Azureへのルーティングを設定
AWS VPC内( 192.168.1.0/24
)からAzure( 192.168.2.0/24
)への通信を行えるようルーティングの設定を行います。
また、 Source/Destination Check
を Disabled
にします。
AWS側でデモ用のインスタンスを立ち上げます。
セキュリティグループはRRASと通信できるようそれぞれをdefaultグループに所属させます。
AWS側デモ用インスタンスからゲートウェイIPアドレスへPingを打ち疎通できることを確認します。
Azure側でもデモ用仮想マシンを立ち上げ確認を行います。
それぞれのインスタンス同士が疎通できることを確認します。
Windowsファイヤーウォールは切っておきましょう。
以上で、ルーティングの設定は完了です。
スループットを計測する
仮想ネットーワークのスループットは100Mbpsと制限があります。ご注意ください。
ExpressRoute と Virtual Network VPN の使い分け – Microsoft Azure Japan Team Blog (ブログ) – Site Home – MSDN Blogs
そこで、AzureとAWS(RRAS)で最適なインスタンスサイズを検証した結果
- Azure側→A2インスタンス以上
- AWS(RRAS)側→t2.smallインスタンス以上
もし安定しない場合はAWS側のインスタンスサイズを上げましょう。
まとめ
今回はAzureとAWSを繋げ、スループットを確認しました。まぁまぁVPNでこれくらい出ればいいかな。
次は、さくらのクラウドなんかとマルチサイトで繋げてみよう・・・かな。
元記事はこちらです。
「AzureとAWSを接続してみようと思うけどどうやるの?」