皆さんお疲れ様です!椎名です。
皆さんは検証や構築時にどのようにプライベートなEC2インスタンスにアクセスしていますか?
私はよくパブリックサブネットに踏み台サーバーを立てるか、SSMを使ってアクセスすることが多いです。
作業が慣れてくるとそこまで時間はかかりませんが、やはりいちいち追加設定するのは面倒くさく感じますよね。
こんな時に、手元(オンプレミス)の環境とAWS側と接続を確立できると便利です。
1. はじめに
AWSと接続する方法
オンプレミス環境とAWS VPC間で接続を確立するには、主に
- Client VPN
- Direct Connect
- Site to site VPN
の三つがあります。
- Client VPNは、オンプレミスのデバイス一台のみをVPCに接続します。
- Direct Connectは、オンプレミスとAWS間で閉域網での双方向な接続ができますが、接続プロバイダーパートナーを通して契約する必要があります。
- Site to site VPNは、オンプレミスとAWS間でインターネット網での双方向な接続ができます。
それぞれに特徴はありますが、
- オンプレミス全体をAWSと接続をしたい
- インターネット回線に十分な帯域幅があります。
- 簡単で、価格重視で接続したい
の三つ条件を満たしていれば、Site to site VPNが適しています。
前提条件
- オンプレミスとVPCのCIDRが重複しないこと
上記三つの接続方法のどれも該当しますので、CIDRの変更が難しい場合は、先日ご紹介したPrivatelinkも検討してください。 - VPN(IPsec)対応のルーターを導入していること
オンプレミス環境であれば業務用レベルのルーターが導入されていると思いますが、VPN(IPsec)対応であれば市販の安価なルーターでも設定可能です。検証ではYAHAMA RTX830を使用しています。 - 固定Public IPを有していること
必ずしも必須ではありませんが、固定Public IPがあれば環境構築が容易にできます。
構成イメージ
- 最終目標は、オンプレミス環境のWindowsPCとWindowsEC2インスタンスを相互にリモートデスクトップで接続を行います。(リモートデスクトップがない場合、pingコマンドでテストする)
- 複数のVPCと接続したい場合はトランジットゲートウェイを用いますが、検証のため仮想プライベートゲートウェイで単一VPCと接続を行います。
2. AWS側の事前準備
VPCの作成
プライベートサブネットが含まれるVPCを作成します。CIDRはオンプレミス環境と重複しないようにしてください。ルートテーブルを作成し、ルーと伝播を有効化し、プライベートサブネットと関連付けます。
WindowsEC2インスタンスの作成
プライベートサブネット内にWindowsEC2インスタンスを作成します。(ami-00f0eb749082a6552)
検証のため、セキュリティグループにすべてのトラフィックを許可するルールを追加します。
EC2ファイアウォールルールの追加(pingテスト用)
リモートデスクトップ利用可能な場合はこのステップが省略可能です。
AWSコンソールのEC2インスタンス画面で作成したEC2を選択し、接続をクリックします。
Fleet Managerで接続し、ローカルにあるキーペアで認証します。
ファイアウォール設定を開き、インバンドに新規ルールを追加します。
「Rule Type」をカスタム、「Protocol and Ports」の「protocol type」をICMPv4に変更して、その他はデフォルトのままで作成します。
同じ手順でオンプレミスPCにも設定をしておきます。
ここでオンプレミスPCからEC2のプライベートipアドレスにpingを送ってみても、当然通りません。
3. Site-to-Site VPNの構築
カスタマーゲートウェイの作成
VPCの画面でカスタマーゲートウェイを作成します。
BPGASNはデフォルトの65000、IPアドレスにオンプレミス環境のルーターのPublic IPを入れます。
証明書は今回使用しませんので、このまま作成します。
仮想プライベートゲートウェイの作成
同じくVPCの画面で仮想プライベートゲートウェイを作成します。
こちらもデフォルトのASNを使います。
作成が完了したら、アクションボタンをクリックし、ステップ3で作成したVPCにアタッチします。
VPN接続の作成
最後に、VPCの画面でVPN接続を作成します。
基本的に今回作成したものを選択していく感じです。CIDRに関して適宜制限しても大丈夫です。
カスタマーゲートウェイデバイス(ルーター)の設定
ルーターごとに設定する方法が異なります。
YAHAMA RTX83の場合はGUIで設定できるため、IAMユーザーのアクセスキーなどを入れるだけで簡単に設定できました。
ルーター側のVPN接続の設定をしてからしばらく待つと、ルーターのGUIとAWSコンソール画面で二つのトンネルが確立し、VPNの状態が利用可能に変わったことを確認できます。
GUIで設定できず、ルーターにSSH接続して設定ファイルをいじる必要がある場合は、VPN接続画面で「設定をダウンロードする」をクリックし、ダウンロードしたファイルを参照しながら設定を行ってください。
4. 接続のテスト
オンプレミスPCからEC2へ
EC2インスタンス接続画面でRDPクライアント用のパスワードを取得します。
オンプレミスのPCで「リモートデスクトップ接続」を検索し、EC2インスタンスのプライベートIPアドレス、アカウント名、パスワードを入れて接続を行います。
証明書に関する警告が出ますが、はいを押してください。
無事EC2側のデスクトップ画面が表示されたら成功です。
EC2からオンプレミスPCへ
そのままリモートデスクトップでEC2を操作します。
現在操作中のPCとは別のPCにリモートアクセスするのが理想的ですが、難しい場合このまま「リモートデスクトップ接続」で操作中のPCのプライベートIPにアクセスします。
証明書の画面まで進められましたら成功です。はいをクリックしてしまうと、オンプレミスPCのユーザーログイン画面に戻り、リモートデスクトップ接続が中断されます。
pingテスト
Windows10homeなどのバージョンでは、EC2からオンプレミスPCへのリモートデスクトップ接続ができないため、pingコマンドで疎通をテストします。
オンプレミスPCのIPアドレスに対してpingコマンドを実行します。
ちゃんとpingが返ってきましたら成功です。おめでとうございます!
5. 最後に
ちょうど先日に、「AWS Direct Connect Dive Deep セミナー – Direct Connect HandsOn Advance Transit VIF Migration シナリオ」に参加いたしました。
Direct Connectに触れる貴重な機会で、実際に接続を行ってみて、様々な設定がSite-to-Site VPNと似ているなと感じながらも、改めて大規模なワークロードでないと導入しにくいと実感しました。
特に検証段階ではSite-to-Site VPNが結構便利なので、皆さんもぜひ活用してみてください。
今回のご紹介は以上となります。
では皆さん、よいクラウドライフを!