はじめに
こんにちは。孔子の80代目子孫兼技術5課の孔です。先日、ホラー映画の超名作と呼ばれるShiningという映画をみました。ホラー映画は苦手なのですが、昔から興味のあった映画であり、やっと勇気を出してみてみましたが、あの有名なシーン(ポスターにもなっている主人公がドアの隙間から中を覗くシーン)でなぜか笑ってしまいました。ホラー映画みてて笑うのはとても新鮮な経験でした。
と、ドアの話も出たので、本日お話しする内容は前回に引き続きGatewayの話をやります。前回の記事では以下の三つのGatewayについてみてみました。
- Internet Gateway
- NAT Gateway
- Egress-only Internet Gateway
前回の記事のURLはこちらとなります。
Gatewayが多過ぎて何がなんなのかわからない?AWSのGateway全種類解説!ーその1 - サーバーワークスエンジニアブログ
前回の話を簡単にまとめますと、こちらの三つのGatewayたちはVPCとインターネットをつなげたいときに使用するGateway、という話をしました。
それぞれの違いとしては
- 特に要件がなく、VPCとインターネットを出入りしたいとのであればInternet Gateway
- IPv4を使ってVPCからインターネットに出るだけならNAT Gateway
- IPv6を使ってVPCからインターネットに出るだけならEgress-only Internet Gateway
と話しましたね。
本日は以下の三つの種類のGatewayについてみてみようと思います。
- Virtual Private Gateway
- Customer Gateway
- Transit Gateway
こちらの三つのGatewayは、前回のブログの「最後に」でも少し触れましたが、VPCとインターネットでない何かとつなげたいときに使うGatewayとなります。VPCと何をつなげるときに使うものなのか?をこれから説明します。それでは始めましょう!
まずはこちら、オンプレミス環境とAWS環境を繋ぐケースをみてみよう
AWSを使っていると、オンプレミス環境とVPCをつなげたいときがあります。例えば、ある会社で物理サーバでDBサーバをおくのがスケーリングも難しく、管理も大変なのでVPC上にDBサーバをおくことになったとします。となると、機密情報が入ったDBサーバはインターネットとつながってはいけないのでVPCにプライベートなネットワークを作成し(プライベートサブネットですね!)そこにDBサーバをおくことになります。
しかし、こうなるとAWS環境とオンプレミス環境と疎通がインターネット経由ではできないですね。そこで、VPNのような仮想専用線もしくはDirect Connectといった物理専用線を使ってAWS環境とオンプレミス環境をつなげることで両者間の疎通問題を解決します。(Direct Connectに関してはこちらのリンクをご参照ください)図で表すとこのような図になります。
このように、特定の拠点とAWSをつなげた通信は、インターネットとつながってはないですね。このような通信が通るGatewayがこれから紹介するVirtual Private GatewayとCustomer Gatewayとなります。
オンプレミス環境と接続をする際にAWS側の出入り口を作りたい!Virtual Private Gateway
先ほどの図をもう一度みてみましょう。
AWS側のVPCの右側に、南京錠のアイコンがあって下にVirtual Private Gatewayと書かれていますね。このように、Virtual Private Gatewayはオンプレミス環境とDirect ConnectもしくはVPNでつなげるときに、VPC側の出入り口となります。大きな違いはないですが、VPNだとこのような図になります。
Virtual Private Gatewayを作成し、VPCにアタッチして、このVirtual Private GatewayにDirect Connectインターフェース(専用線に導いてくれるためのインターフェース)もしくはVPNコネクションをつけると、サブネットに設定されたルートテーブルをみてVirtual Private Gateway向きの通信がDirect ConnectやVPNを経由してオンプレミス環境まで通信が届くようになります。
オンプレミス環境と接続をする際に自分のルーター情報を登録したい!Customer Gateway
Virtual Private Gatewayの説明を聞いて、Direct Connectは物理的な専用線を使っているので、先方のオンプレミス環境がどこにあるかは自明であることがわかります。しかし、VPNだとそうもいきません。オンプレミス環境にまでちゃんと通信を届けるにはオンプレミス環境のルーターのIPが必要です。
突然のクイズですが、Virtual Private Gatewayでみた二つの図を見て、片方にはあって片方にはないものを探してみましょう。
お気づきになられましたでしょうか?VPN接続をするときには、オンプレミス環境にCustomer Gatewayが置かれていることに気づけたら100点です。
このように、VPNコネクションをAWS環境に作るときにAWS側ではどこ宛に通信を送ればいいのかがわからないので、AWS環境上にCustomer Gatewayというリソースを作成し、VPNコネクションを作るときに「このVirtual Private GatewayはこのCustomer Gatewayとつなげて〜」と設定しておけば、あとはAWS側で二つの環境をつなげてくれます。
理解に役立つかと思いまして、実際の設定画面を持ってきました。
この画面でVPNの設定を行います。まずVirtual Private Gatewayを設定し、そのVirtual Private GatewayとどのCustomer Gatewayをつなげるかを選択することで、両者のVPN通信が確立します。この画面ではCustomer Gatewayで「New」を選択しているので新しく作ることになり、オンプレミス環境のルーターのIPやAS番号、暗号化のための証明書を記入する画面が出ていますが、既存のCustomer Gatewayがあるのであれば「existing」を選択して既存のものをそのままお使いできます。
複数のコネクションをまとめたい!Transit Gateway
今までのGatewayたちを束ねるのがこちらの方、Transit Gatewayとなります。今までの話でネットワークとしてVPCとオンプレミスが登場しましたね。Transit Gatewayは複数のVPCと複数のオンプレミス環境同士の連結を束ねる中央ネットワークハブのような役割を果たしています。図で表すとこのようになります。
このような状況を考えてみましょう。ある会社の事業がうまくいき、どんどんリソースがスケールしていくと、ネットワーク数もそれに伴って拡大していきます。もしTransit Gatewayがなかったら拡大したネットワークの通信はどうなるでしょう。例えば、拡大したネットワーク環境として、オンプレミスAとオンプレミスB、そしてVPC1、VPC2、VPC3というネットワークがあったとします。オンプレミスAとVPC1はVPNでつながっているが、VPC2と3とはつながってないとします。VPC2とVPC3がオンプレミスAと繋がるためには、VPC1とVPCピアリングをしてオンプレミスAにつなげるか、それぞれのVPCとオンプレミスAとVPNコネクションを作るしかないですね(もう混乱してきました…)オンプレミスBまで参入してくるともっと大変なことになります。それを表した図が下の図になります。
最初の図と比べてみると、みるだけでも頭が痛くなります。Transit Gatewayのメリットがぱっとみて伝わるかと思います。
このように、Transit Gatewayは複数のVPCと複数のオンプレミス環境をつなげるためのネットワークハブの役割を果たしてくれます。Transit(乗り継ぎ)Gateway(関門)という、まさに名前通りのサービスですね!
弊社のブログの中にTransit Gatewayのルーティングについて解説している記事があります。こちらの記事を読んでみるとTransit Gatewayがどのようなものなのかより鮮明なイメージができるかと思いますので、ご紹介します。
Transit Gatewayのルーティング仕様を分かりやすく解説してみる - サーバーワークスエンジニアブログ
最後に
だいぶ長くなりましたが、これでVPCサービスで登場するGateway6種類の解説が終わりました。いかがでしょう。名前が似ていて紛らわしく、何がなんなのか全然わからない!と思っていても、実際一つ一つ違いをみてみるとそれぞれのGatewayが全然違う用途で使用されて、みんな個性豊かな子達だなーというのが伝わったのではないかと思います。
私はネットワークの知識があまり豊富でなく、基本的なところだけ抑えている程度のものですが、ルーターの設定やVPNの設定などが全くできなくてもAWS上ではGatewayの種類と使い方さえ抑えておけば簡単にネットワークをつなげることができたり、ルーティングができたりするところがとても楽でいいなと思います。このような、専門知識がなくても簡単にいろいろな環境構築ができるところでAWSの魅力を感じてますね。
それでは、また「これ、難しくね?」と思ったAWSに関する知識があればお届けしたいと思います。またお会いしましょう、お元気で!