AWS Transit VPCソリューションを使って 手軽に マルチリージョン間 VPN環境を構築してみる

# Transit VPC とは

AWS の VPC 間 VPN 接続を自動化するソリューションです。
高度なネットワークの知識がなくても、超カンタンに、世界中の リージョンにまたがる VPC を接続するネットワークを構築することができます。

# 概要

![](http://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/images/transit-vpc-overview.png)
ある VPC を転送専用の VPN HUB(Transit VPC)として作成することで、他のVPCからのVPN接続を終端し、スター型のトポロジを自動作成します。
利用している AWSのアカウントに紐づいた VPC で VGW を作成すれば、HUBルーターに自動的に設定が投入され、VPNの接続が完了します。

予めテンプレートが用意されているので、ルーターの細かい設定を行う必要がありません。

また、高度な設定が必要な場合も、Cisco CSR1000V を利用しているので、Cisco IOS の機能は自由に利用することも可能です。

Adobe社では、大規模なネットワークを、AWS上の CSR1000V で構築しています。
https://blogs.cisco.com/enterprise/adobe-uses-cisco-and-aws-to-help-deliver-rich-digital-experiences

## 仕組み
* AWS CloudFormation を使って、Transit VPC の CSR1000v のプロビジョニングが非常に簡単に行えるようになっています。

![] (http://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/images/connecting-spoke-vpcs.png)

1. VGW Poller という Lambda ファンクションが用意されており、Amazon CloudWatch を使って、Transit VPC に接続すべき VGW が存在するかを常に確認しています。
2. VGWが存在する場合、VGW Poller が必要な設定を行い、設定情報を Amazon S3 bucket に格納します
3. Cisco Configurator という名前の Lambda ファンクションが用意されており、格納した設定情報から、CSR1000v 用の設定を作成します
4. Cisco Configurator が Transit VPC の CSR1000v へ SSH でログインし設定を流し込みます。
5. VPN接続が完了します。

詳細については、下記、ご参照ください。
- AWS ソリューション – Transit VPC
  https://aws.amazon.com/jp/blogs/news/aws-solution-transit-vpc/
- Transit Network VPC (Cisco CSR)
  https://docs.aws.amazon.com/solutions/latest/cisco-based-transit-vpc/welcome.html


# Transit VPC 構築方法

基本は、Wizard に従い、3(+1)ステップで設定が可能です。

## 事前準備 - CSR1000V用 Key Pair の作成

CSR1000V へログインする際に使う、Key Pair を EC2 で一つ作っておきましょう。
EC2 > Network & Security > Key Pairs から作成できます。名前はなんでもいいです。

.pem ファイルが手に入るので、後ほど、CSR1000V へログインする際にはこれを使います。

## Step 1.　Cisco CSR1000v ソフトウェア利用条件に同意

AWS マーケットプレイスの下記のページから、リージョンごとの値段が確認できます。

https://aws.amazon.com/marketplace/pp/B01IAFXXVO

* For Region で 好きなリージョンを選択
* Delivery Method で Transit Network VPC with the CSR 1000v を選択

その後 Continue

- [x] Manual Launch タブが選択されていること
- [x] Region / Deployment Options が先に設定したものとなっていること

上記を確認し、Accept Software Terms をクリックします。


<!--
2種類のライセンス購入方法があります。BYOL(Bring your own License) もしくは、 License Included.

* CSR1000v のライセンスについて、Cisco から購入したものを使う場合は、BYOL を選択します。
* ライセンス費用も利用料に含まれた利用形式が良ければ、License included version を選択します。

License Included は、EC2のインスタンス利用料に、ライセンス料が上乗せされる形なので、値段が違います。
30日間のフリートライアルもあるので、検証であれば、BYOLでいいかと思います。

60日間有効の CSR1000V 検証ライセンスが無料で取得できるので、BYOL を選択し、検証ライセンス利用すれば、
EC2インスタンス起動分の費用のみで、動作確認できます。（詳細は後述)
Manual Launch をクリックします。
http://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/step1.html
-->

## Step 2.　Transit VPC スタックの起動

下記のページより、Transit VPC 用の CloudFormation を起動することで、Transit VPC に必要な CSR1000v をセットアップすることができます。

http://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/step2.html

上記ページから Launch Solution をクリックします。
CloudFormation のページが立ち上がるので、まず、VPN HUB を 設置するリージョンになっているか確認します。
このソリューションは、Lambda を使うので、Transit VPC を設置できるのは、Lambda が使えるリージョンに限ります。東京は対応してます。
Lambda 対応リージョンは、こちらで確認できます。
https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

正しいリージョンになっていたら、設定を進めます。

### 2-1. Select Template

テンプレートがすでに選択された状態になっていると思うので、特に設定の必要なし

Next をクリック

### 2-2. Specify Details

幾つかのパラメーターがありますが、最低限下記を変更すれば、動作します。

- Specify Details
  - [x] Stack name を設定します。

- Parameters
  -　Cisco CSR Configuration
  - [x] SSH Key to access CSR で、事前準備で作成した key を選択します。
  - [x] License Modelで、BYOL (Bring Your Own License) もしくは License Included を選択します。

> CSR1000v のライセンスについて、Cisco から購入したものを使う場合は、BYOL を選択します。
> ライセンス費用も利用料に含まれた利用形式が良ければ、License included version を選択します。
> 検証ライセンスがあるので、テストの場合は、BYOL で良いかと思います

入力が完了したら、 Next

### 2-3. Options

特に設定の必要なし　Next をクリック

### 2-4. Review

- [x] 設定を確認して、一番下の acknowledge のチェックボックスをクリック

その後、Create　で CSR1000V のインスタンス作成・セットアップが始まります

5分ほどすると、CSR1000V が 2インスタンス 立ち上がります。

### 事後設定(オプション)

起動した CSR1000V は　デフォルトで、Lambda ファンクションからのログインのみを許可する設定になっているので、ssh で CLI にアクセスしたい場合は、Security Group の設定を変更します。

EC2 のダッシュボードから CSR1000V を選択し、Security Group の設定で SSH を許可します。
すべてのPCからSSHを受ける場合は、ソースアドレスとして 0.0.0.0/0 を指定します。

設定後、ssh でログインするには、事前準備で作成した キーペアで取得した .pem ファイルのパーミッションを変更します。

```
chmod 400 <キーペア名>.pem
```

これを使って、下記のコマンドで CSR1000V にログインできます

```
ssh -i <キーペア名>.pem <CSR1000V のパブリックIP>
```

ログインすれば、CSR1000v であることがわかると思います。

```
ip-XXX-XXX-XXX-XXX #sh ver
Cisco IOS XE Software, Version 16.03.01a
Cisco IOS Software [Denali], CSR1000V Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 16.3.1a, RELEASE SOFTWARE (fc4)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2016 by Cisco Systems, Inc.
Compiled Fri 30-Sep-16 02:53 by mcpre

<省略>

```

<!--
CSR1000v の検証用ライセンスは cisco.com/go/license へ行き、(Get Other Licenses > Demo and Evaluation > Router&Switches > Cisco Cloud Service Router 1000V) と辿れば取得できます。
-->

## Step 3.　スポーク VPC のタグ付け

上記、CSR1000V が立ち上がれば、あとは、Spoke VPC の VGW でタグを付けるだけで、CSR1000V　への VPN 接続が完了します。

### 3-1. Spoke VPC の作成

新たに Spoke VPC を作成する場合は、下記の手順で作ります。

* 好きなリージョンに、VPC を作成します。
  - [x] VPC Dashboard > Virtual Private Cloud > Your VPC > Create VPC で作成します。
* Virtual Private Gateway（VPG) を作成します。
  - [x] VPC Dashboard > VPN Connection > Virtual Private Gateways > Create Virtual Private Gateway　で作成します。
* 作成した VPG を、先程作成した VPCにアタッチします。
  - [x] VPC Dashboard > VPN Connection > Virtual Private Gateways > Attach to VPC 　から、VPCへVGWをアタッチします。

### 3-2. VGW のタグ付け

* 先程作成した VGW を選択し、下部の Tags タブを選択します。
  - [x] Edit をクリックし Tag を追加します。

  >デフォルトの設定では、下記のタグを利用する設定になっていますので、下記タグを追加します
  >   Key = transitvpc:spoke
  >   Value = true

上記の設定が完了すると、VGWと Step2. で作成した、2台の CSR1000Vの間で自動的に VPN 接続が確立します。


http://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/step3.html


## Step 4. 他の AWS アカウントからの接続設定 (オプション)


http://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/step4.html


# まとめ

AWS の Transit VPC を使えば、世界中 にまたがる AWS の 各リージョンのVPCを簡単に VPN　接続できます。

また、VPN HUB ルーターは Cisco CSR1000v なので、企業内のシスコルーターと VPN 接続すれば、DC を AWS にして、世界中にまたがる VPN ネットワークを構築することができます。
ダイレクトコネクトとも連携可能です。

# 参考

On board AWS TransitVPC with Cisco CSR1000v （英語ですが、手順がわかりやすいです）
[![](http://img.youtube.com/vi/7ZB_luipmBA/0.jpg)](http://www.youtube.com/watch?v=7ZB_luipmBA)



Cisco CSR 1000v: Securely Extend your Apps to the Cloud
https://www.slideshare.net/AmazonWebServices/cisco-csr-1000v-securely-extend-your-apps-to-the-cloud