Direct Connect Gatewayでリージョン間VPCのプライベート接続が可能になりました!
ウィスキー、シガー、パイプをこよなく愛する大栗です。
本日リージョン間のVPCでアクセスが可能になるDirect Connect Gatewayという機能がリリースされました。本来Direct Connectをリージョン間で共有する機能なのですが、リージョン間のVPCのプライベート接続もできるようになりましたので検証してみました。
- New – AWS Direct Connect Gateway – Inter-Region VPC Access
- AWS Direct Connect Enables Global Access
- Direct Connect Gateways
Direct Connect Gateway
Direct Connect Gatewayとはリージョン間でDirect Connectを共有する機能となります。Direct Connect GatewayはDirect ConnectとVPCの間に配置されて専用線接続を各VPCへ配分します。今まではDirect Connectの専用接続であれば同一リージョンの複数VPCへ接続できましたが、これがリージョン間でも接続できるイメージです。
今までは以下のような構成でした。
引用:https://aws.amazon.com/jp/blogs/aws/new-aws-direct-connect-gateway-inter-region-vpc-access/
Direct Connect Gatewayを使うと各リージョンの接続を集約できます。
引用:https://aws.amazon.com/jp/blogs/aws/new-aws-direct-connect-gateway-inter-region-vpc-access/
注意事項
- Direct Connect Gatewayを使用して、中国(北京)リージョンのVPCへ接続できません。
- Direct Connect Gatewayの作成および使用には制限があります。(2017年11月2日現在)
- アカウントごとのダイレクトコネクトゲートウェイの数:200(この制限は、リクエストで増やすことができます)
- ダイレクトコネクトゲートウェイごとの仮想プライベートゲートウェイ:30(この制限は、リクエストで増やすことができます)
- Direct Connect Gatewayごとの仮想インターフェイス:30(この制限は、リクエストで増やすことができます)
- Direct Connect Gateway経由で接続するVPCは、重複するCIDRブロックを持つことはできません。
- Direct Connect Gatewayへのパブリック仮想インターフェイスを作成することはできません。
- Direct Connect Gatewayは、接続されたプライベート仮想インターフェイスと関連する仮想プライベートゲートウェイ間の通信だけをサポートします。次のトラフィックフローはサポートされていません。
- Direct Connect Gatewayに関連付けられているVPC間の直接通信。
- Direct Connect Gatewayに接続されている仮想インターフェイス間の直接通信。
- Direct Connect Gatewayに接続された仮想インターフェイスと、同じDirect Connect Gatewayに関連付けられている仮想プライベートゲートウェイ上のVPN接続との間の直接通信。
- 仮想プライベートゲートウェイを複数のDirect Connect Gatewayに関連付けることはできず、プライベート仮想インターフェイスを複数のDirect Connect Gatewayに接続することはできません。
- Direct Connect Gatewayに関連付ける仮想プライベートゲートウェイは、VPCに接続する必要があります。
- Direct Connect Gatewayにタグは付けられません。
試してみる
Direct Connectの検証環境がないため、リージョン間VPCの接続について検証します。
やりたい事
以下のように東京リージョンとソウルリージョンをDirect Connect Gatewayで接続してEC2間の通信を行います。
前提
以下のVPCを各々のリージョンに作成済みとします。
東京リージョン
- VPC(tokyo-vpc-1):10.1.0.0/16
- サブネット(tokyo-vpc-1a):10.1.0.0/24
- サブネット(tokyo-vpc-1c):10.1.1.0/24
ソウルリージョン
- VPC(seoul-vpc-1):10.101.0.0/16
- サブネット(seoul-vpc-1a):10.101.0.0/24
- サブネット(seoul-vpc-1c):10.101.1.0/24
リージョン間接続を設定する
まず東京リージョンで仮想プライベートゲートウェイを作成します。
東京リージョンのVPCコンソールで仮想プライベートゲートウェイ
メニューから仮想プライベートゲートウェイの作成
をクリックします。
名前はvgw-tokyo-1
として、ASNはカスタムで4200000100
を設定しました。以後出てくるASNは重複しないように設定していきます。
作成した仮想プライベートゲートウェイを選択してVPC にアタッチ
をクリックします。
tokyo-vpc-1のVPCを選択してアタッチします。
次は同様にソウルリージョンで仮想プライベートゲートウェイを作成してアタッチします。
仮想プライベートゲートウェイの設定内容は名前はvgw-seoul-1
として、ASNはカスタムで4200000200
を設定しました。
この仮想プライベートゲートウェイをseoul-vpc-1にアタッチします。
東京リージョンのDirect ConnectコンソールでDirect Connect Gateway
メニュー増えています。このメニューでDirect Connect Gateway の作成
をクリックします。
Direct Connect Gatewayの設定内容は名前はtokyo-seoul-1
として、Amazon 側の ASNは4200000000
を設定しました。
作成したDirect Connect Gatewayを選択してアクションメニューから仮想プライベートゲートウェイの関連付け
をクリックします。
仮想プライベートゲートウェイの一覧からtokyo-vpc-1にアタッチしているものを選択します。
次にソウルリージョンのDirect Connectコンソールに移動します。東京で作成したDirect Connect Gatewayがソウルリージョンでも見えています。これを選択してアクションメニューから仮想プライベートゲートウェイの関連付け
をクリックします。
仮想プライベートゲートウェイの一覧からseoul-vpc-1にアタッチしているものを選択します。
Direct Connect Gatewayの仮想ゲートウェイの関連付け
タブを見ると東京リージョン(ap-northeast-1)とソウルリージョン(ap-northeast-2)の仮想プライベートゲートウェイが関連付けられていることが分かります。
次に書くVPCのルートテーブルを設定します。
東京リージョンのVPCコンソールでルートテーブル
メニューからtokyo-vpc-1のルートテーブルを選択して、ルート
で編集
をクリックします。
ソウル側のVPC(seoul-vpc-1)のCIDRである10.101.0.0/16をアタッチしている仮想プライベートゲートウェイに向けて保存します。
ソウルリージョンでも同様にseoul-vpc-1のルートテーブルを編集します。東京側のVPC(tokyo-vpc-1)のCIDRである10.1.0.0/16をアタッチしている仮想プライベートゲートウェイに向けて保存します。
後は各VPCでEC2を起動して、セキュリティグループ相手のVPCのCIDRのアクセスを許可します。
リージョン間でプライベート接続してみる
東京リージョンのEC2にログインしている状態とします。
1 2 | [ec2-user@ip-10-1-0-61 ~]$ curl http: //169 .254.169.254 /latest/meta-data/placement/availability-zone ap-northeast-1a |
ソウルリージョンのEC2のプライベートIPでSSHしてみると普通にログインできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ ssh 10.101.0.189 The authenticity of host '10.101.0.189 (10.101.0.189)' can't be established. ECDSA key fingerprint is SHA256:ABCDEFGH12345678IJKLMNOP12345678QRSTUV12345. ECDSA key fingerprint is MD5:1a:2b:3c:4d:5e:6f:7g:8h:9i:0j:1k:2l:3m:4n:5o:6p. Are you sure you want to continue connecting ( yes /no )? yesy Warning: Permanently added '10.101.0.189' (ECDSA) to the list of known hosts. Last login: Thu Nov 2 01:44:40 2017 from 203.0.113.70 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https: //aws .amazon.com /amazon-linux-ami/2017 .09-release-notes/ 1 package(s) needed for security, out of 6 available Run "sudo yum update" to apply all updates. [ec2-user@ip-10-101-0-189 ~]$ |
AZを確認するとap-northeast-2a
となっており、ソウルリージョンであることが確認できます。
1 2 | [ec2-user@ip-10-101-0-189 ~]$ curl http: //169 .254.169.254 /latest/meta-data/placement/availability-zone ap-northeast-2a |
これでリージョン間のVPCでプライベート接続ができました!
補足
気になったので同一リージョンのVPC間でDirect Connect Gatewayを使ってプライベート通信ができるか確認してみました。しかし、以下のようになって通信が行えませんでした。同一リージョン間のVPC通信は普通にVPC Peeringで接続しましょう。
1 2 | [ec2-user@ip-192-0-2-1 ~]$ ssh 198.51.100.1 ssh : connect to host 198.51.100.1 port 22: Network is unreachable |
さいごに
リージョン間で同一のネットワークが必要になるケースは多くないかもしれません。しかし高い可用性を求めるためにリージョン間フェイルオーバーなどを円滑に行うためには必須の機能です。re:Invent 2017でJames Hamilton氏がリージョン間は100Gbpsの専用光ファイバーで相互接続していると話していましたが、その専用光ファイバー網でリージョン間のVPCを接続しているのでしょう。
今まで以上に柔軟にアーキテクチャ構成を組めるのではないでしょうか?