AWSのVPCと自宅NWとの間でIPsec VPNを構築する(NATトラバーサル使用)

クラウド

はじめに

AWSには12か月間の無料枠があります。今回は無料枠を活用して、AWSのVPCと自宅ネットワークをIPsec VPNで接続し、自宅からAWSのVPC内に設置されたEC2インスタンスへ接続することを実施します。

ただし、AWSでVPN接続を利用することは無料枠の対象外となりますので、実践される方は費用が発生することを認識したうえで実施するようお願いします。費用感としては、東京リージョンの場合はサイト間 VPN 接続1時間ごとに 0.048 USDです。また、VPN接続を利用した通信のデータ転送料も追加で発生するようです。

料金 - AWS VPN | AWS
AWSClientVPNおよびAWSサイト間VPN料金の詳細と、一般的なユースケースの料金例。

また、無料枠といってもインスタンスを起動させたままにしてしまうと無料期間終了後に費用が発生することになるようなので、一通り遊び終わったらAWS上で作成したインスタンスは停止または削除するか、AWSのアカウントを削除することを忘れないようにしてください。

参考までに、AWSの無料枠でできること一覧については以下ページをご確認ください。

AWS クラウド無料利用枠 | AWS
AWS無料利用枠を使用すると、AWSのプラットフォーム、製品、およびサービスを無料でお試しいただけます。各製品ごとの無料利用枠の詳細やご利用開始方法についてご紹介します。

構築するネットワークの構成

以下のようなネットワークを構築します。

環境は以下の通りです。

  • 自宅側インターネット環境
    • WiMax (NAT機能あり)
      • あらかじめグローバルIPを取得しておく
  • 自宅側VPNルータ
    • WiMax配下に設置
    • 機種:FortiGate 60E
      • ファームウェアバージョン v6.0.6
      • NATトラバーサル利用

IPsec VPNの構築

AWS側の環境構築

AWS側で設定する項目は以下の通りです。

  • AWSアカウントの作成
  • リージョンの選択
  • VPCの作成
  • サブネットの作成
  • カスタマーゲートウェイの作成
  • 仮想プライベートゲートウェイの作成
  • VPN接続の作成
  • ルートテーブルの編集
  • EC2インスタンスの起動

項目が多いように見えますが、一つ一つの設定はすぐ終わるので安心してください。

AWSアカウントの作成

AWSアカウントの作成は以下ページから実施できます。

AWS Console - Signup

作成手順については以下の公式ページに説明がありますので参考にしつつ作成してください。

AWS アカウント作成の流れ【AWS 公式】
日本のお客様にAWSアカウント作成の手順をステップバイステップでご紹介します。アカウントを作成すると、AmazonEC2やAmazonS3をはじめとした100以上のAWS製品を無料でお試しいただけます。また、AWSの世界中のリージョンで提供されるすべてのサービスを始めることができます。

アカウントが作成できたらAWSマネジメントコンソールにログインしてください。

リージョンの選択

まずはリージョンを選択します。
リージョンとは、AWSのサーバが設置されているデータセンターのロケーションと考えておけば良いと思います。詳しくは以下を参照下さい。

リージョンとゾーン - Amazon Elastic Compute Cloud
インスタンスをホストできる世界中のリージョン、アベイラビリティーゾーン、LocalZones、Outpost、WavelengthZonesについて説明します。

以下の画像の通り選択し、リージョンを「アジアパシフィック (東京)」としてください。

VPCの作成

次にVPCを作成します。
VPCとは Virtual Private Cloud の略で、AWS上の自分用のプライベートネットワークと考えておけばよいと思います。詳しくは以下を参照ください。

Amazon VPC とは? - Amazon Virtual Private Cloud
AmazonVPCを使用すると、AWSクラウドの論理的に分離されたセクションである仮想ネットワーク内にAWSリソースを起動できます。

まずは、コンソール画面から以下のようにVPCを選択します。

続いて以下のように「VPCの作成」を選択します。

VPCの作成画面になりますので以下のように各項目を指定し「作成」をクリックします。

以下の画面となります。「閉じる」をクリックします。

VPCが作成できていることを確認します。

サブネットの作成

続いてVPCを細分化するサブネットを作成します。
今回はVPC 10.0.0.0/16 の中にEC2インスタンス用のサブネット 10.0.1.0/24 を作成します。
コンソール画面で以下のように「サブネットの作成」を選択します。

サブネットの作成画面となりますので、以下のように指定し「作成」をクリックします。

以下の画面となります。「閉じる」をクリックします。

サブネットが作成できていることを確認します。

カスタマーゲートウェイの作成

カスタマーゲートウェイを作成します。
カスタマーゲートウェイとは、リモート側のVPNルータの情報と考えておけばよいと思います。
詳細は以下を参照ください。

カスタマーゲートウェイデバイス - AWS Site-to-Site VPN
カスタマーゲートウェイデバイスは、オンプレミスネットワーク(Site-to-SiteVPN接続のユーザー側)で所有または管理している物理アプライアンスまたはソフトウェアアプライアンスです。ユーザーまたはネットワーク管理者は、Site-to-SiteVPN接続で動作するようにデバイスを設定する必要があります。

コンソール画面で以下のように「カスタマーゲートウェイの作成」を選択します。

カスタマーゲートウェイの作成画面となりますので、以下のように指定し「カスタマーゲートウェイの作成」をクリックします。

以下の画面となります。「閉じる」をクリックします。

カスタマーゲートウェイが作成できていることを確認します。

仮想プライベートゲートウェイの作成

続いて仮想プライベートゲートウェイを作成します。
仮想プライベートゲートウェイとは、VPC側のVPNルータのようなものと考えておけばよいと思います。
以下のページが参考になると思います。

AWS Site-to-Site VPN の概要 - AWS Site-to-Site VPN
仮想プライベートゲートウェイを関連付け、カスタムルートテーブルを作成して、セキュリティグループルールを更新することで、VPCからお客様のネットワークへのアクセスを可能にします。

コンソール画面で以下のように「仮想プライベートゲートウェイの作成」を選択します。

仮想プライベートゲートウェイの作成画面となりますので、以下のように指定し「仮想プライベートゲートウェイの作成」をクリックします。

以下の画面となります。「閉じる」をクリックします。

仮想プライベートゲートウェイが作成できていることを確認します。
作成した仮想プライベートゲートウェイはどのVPCにも関連付いていない状態となっています。
そのため、作成した仮想プライベートゲートウェイを上で作成したVPCに関連付ける(アタッチ)設定をします。

リストの中の作成した仮想プライベートゲートウェイ上で右クリックし「VPCにアタッチ」を選択します。

VPCにアタッチの画面となります。以下のように選択し「はい、アタッチします」を選択します。

仮想プライベートゲートウェイをVPCにアタッチできたことを確認します。

VPN接続の作成

続いてVPN接続を作成します。
上で作成したカスタマーゲートウェイと仮想プライベートゲートウェイを材料にして作成されるのがVPN接続となります。

コンソール画面で以下のように「VPN接続の作成」を選択します。

※以下の設定後VPN接続の費用が発生しますのでご注意ください

VPN接続の作成画面となりますので、以下のように指定し「VPN接続の作成」をクリックします。

以下の画面となります。「閉じる」をクリックします。

VPN接続が作成されたことを確認します。以下画面でグローバルIPなどが確認できます。

対象のVPN接続を選択した状態で「設定のダウンロード」をクリックすると、対向VPNルータ(リモート側ルータ)に設定する必要のあるコンフィグファイルをダウンロードすることができます。

ただし、環境によってはダウンロードしたコンフィグそのままではVPN接続できない場合がありますので注意してください。

ルートテーブルの編集

VPN接続を介してリモートネットワークに接続するためのルートテーブルの編集を行います。
ルートテーブルとは、ルータのルーティングテーブルのようなものです。
詳細は以下ページを参照してください。

ルートテーブルを設定する - Amazon Virtual Private Cloud
ルートテーブルを設定して、ネットワークトラフィックの経路をコントロールします。

コンソール画面で以下のように「ルートの編集」を選択します。

ルートの編集画面となるので、以下のように設定し「ルートの保存」をクリックしてください。

以下の画面となりますので、「閉じる」をクリックします。

EC2インスタンスの起動

VPN接続時の通信試験で使用するEC2インスタンス(仮想マシン)を起動させます。

コンソール画面にて以下のようにEC2を選択します。

EC2の管理画面になりますので、以下のように「インスタンスの作成」を選択します。

以下のようにインスタンスウィザードが表示されます。画像の通り複数のOSが用意されていて、無料枠でも主要なOSが選択できます。
今回はpingで疎通確認するだけなのでとりあえず一番上のAmazon Linuxを選択します。

続いてインスタンスタイプの選択ですが、無料枠では選択の余地はないためそのまま次のステップに進みます。

続いてインスタンスの詳細設定となります。以下の通り設定し次のステップに進みます。

続いてストレージの追加となりますが、そのまま次のステップへ進みます。

続いてタグの追加となります。適当にキーと値を追加しておきます。

続いてセキュリティグループの設定となります。
セキュリティグループとはファイアウォールのポリシーみたいなものと考えればよいと思います。
ここでは以下の通りセキュリティグループを新規作成します。

最後に確認画面となります。問題なければ「起動」をクリックします。

以下のSSH用のキーペア作成の画面になります。
EC2インスタンスにSSH接続する際に必要なキーペアとなりますので、ダウンロードして無くさないように保管しておきます。キーペアをダウンロードしたら「インスタンスの作成」をクリックします。

以下の画面となりますので、「インスタンスの表示」をクリックします。

EC2インスタンス画面で作成したインスタンスのプライベートIPを確認してください。

以上でAWS側の環境構築は完了です。

自宅側の環境構築

続いて自宅側のVPNルータ(FortiGate 60E)の設定をしていきます。
AWSのVPN接続の画面からダウンロードしたコンフィグファイルを参考に設定していきます。
一部環境に合わせて設定を調整しました。

以下、トンネル1用の設定のみ掲載します。トンネル2用も同様に設定すればOKです。

IPsecトンネルの作成

以下の画像の通り設定します。

インターフェースの設定

以下の画像の通り設定します。

スタティックルートの設定

以下の画像の通り設定します。

ポリシーの設定

以下の画像の通り設定します。
AWS01がトンネルインターフェース、VLAN10が内部用のインターフェースです。
※送信元、送信先、サービスは厳密に設定したほうが良いのですが、今回はVPN接続の試験が目的なのでとりあえずALLにしています

IPsecトンネルのステータス確認

以下画面でステータスがアップになっていることを確認します。

AWS側でもステータス確認します。アップになっていることが確認できます。

EC2インスタンスとの疎通試験

自宅のクライアントPC (10.1.10.4) からVPC内のEC2インスタンス (10.0.1.129) へ ping が通ることを確認します。

ちなみに tracert の結果は以下の通りです。

おわりに

AWS 側の使用しなくなった VPC 各リソースの削除、EC2 インスタンスの停止、VPN 接続の削除を忘れずに!

おまけ

AWSの課金に関する良い記事をQiitaで見つけたためリンクを貼っておきます。

AWS初学者が「うっかり課金」されがちなポイントとその対策まとめ - Qiita
#はじめにはじめまして!!DMMWEBCAMPでメンターをしている@Yuji-Ishibashiと申します。僭越ながらDMMWEBCAMPAdventCalendarのトップバッター…

―――――――――――――――――

FortiGate 学習ロードマップ <<完>>

―――――――――――――――――

タイトルとURLをコピーしました