Gatewayが多過ぎて何がなんなのかわからない?AWSのGateway全種類解説!ーその1

記事タイトルとURLをコピーする

はじめに

こんにちは。孔子の80代目子孫兼技術5課の孔です。お寿司屋のような酢飯が作れる幻の液体があると噂を聞き、昨日早速購入して昼魚丼を作ってみました。結果は大失敗でした。お酢の匂いがめっちゃ臭い…団扇などであおぎながら作らないといけないらしいですね。暑いご飯をそのまま酢飯にすると熱で匂いがより強くなってしまうので、気をつけないといけないです。

ということで、本日のお話しテーマは「Gateway」です。AWSコンソールにログインし、VPCを選択するとなんと!Gatewayがついた名前のサービスが6つもあります。以下その一覧となります。

  • Internet Gateway
  • NAT Gateway
  • Egress-only Internet Gateway
  • Customer Gateway
  • Virtual Private Gateway
  • Transit Gateway

いっぱいありすぎて、それぞれのGatewayがどのような用途で使われるものなのか全然わからない!紛らわしい!と思う方もいらっしゃるのかと思います。そこで、こちらの6種類のGatewayの違いとそれぞれの用途について解説したいと思います。それでは早速いってみましょう!

※ API Gateway, Storage Gatewayは今回対象外となります。VPCサービス内で使うGatewayのみが対象となります。

※ シリーズとなります。この記事は第一編となり、紹介するサービスはInternet Gateway, Egress-only Internet Gateway, NAT Gatewayとなります。

その前にちょっと待って、そもそもGatewayって何?

6つの種類のGatewayがありますが、こちらのサービスたちには共通点が一つあります。それは「データ通信が出入りする際に、どこを経由して出入りするか」のどこに該当するものである、とのことです。Gatewayは元々関門という意味のものとなりますが、関門は避けて通れない場所を指していますね。Gatewayサービスたちも同じく、「このような通信をしたいのであればこのGatewayを通って行きなさい!」という概念となります。

これを留意しつつ、これからの話を読めばもう少し理解しやすいのではないかと思います。それでは、本題の6つのGatewayをこれから紹介します。

インターネットに繋がりたい!Internet Gateway

まずは、最も使うのであろうと思われる、Internet Gatewayとなります。Internet GatewayはVPC内からインターネットと通信したいときに作成します。以下の図のような通信経路となります。

f:id:swx-kong:20200817171735p:plain

実際Internet Gatewayを設定した後、VPCからインターネットに出るにはルートテーブルも設定する必要があります。図の右上に「Custom Route Table」というものがあり、0.0.0.0/0の場合「igw-id」に向けると書いてますね。igwがInternet Gatewayを指しており、idはInternet GatewayのIDを指しています。実際ルートテーブルの設定画面を見てみましょう。

f:id:swx-kong:20200817172159p:plain

経路を入力し、TargetでInternet Gatewayを選択すると

f:id:swx-kong:20200817172328p:plain

このように使用できるInternet Gatewayが出力されます。これを選択してルートテーブルをアップデートするとVPC内から0.0.0.0/0行きの通信は全てInternet Gatewayを経由してインターネットと通信するようになります。また、0.0.0.0/0から発生した通信も全てこのInternet Gatewayを経由してVPC内に入るようになります。

(TargetにInternet Gateway以外にもこれから説明するNAT GatewayやEgress-only Internet Gatewayなどもプルダウンの項目の中にあることがわかるかと思います。基本的にルートとGatewayを紐付ける設定は上記の方法と同じ方法で行いますので、以後ルートテーブルからの設定は省略します)

プライベートサブネットからインターネットに繋がりたい!NAT Gateway

VPC内からインターネットにつなげる必要がある、しかしインターネットから通信が入るのは困る!のときにはInternet Gatewayは使用することができません。Internet Gatewayは外から内部への通信も通してしまうからです。そこで使うのがNAT Gatewayとなります。

VPCの中は複数のサブネットに分かれており、それぞれのサブネットはルートテーブルを持ちます。先ほど説明したInternet Gatewayですが、0.0.0.0/0経路の通信をInternet Gatewayに送る、という設定がルートテーブルになければいくらVPCにInternet Gatewayをつけてもサブネットからからインターネットに出ることができません。

このように、ルートテーブルにインターネットと通信経路を記載した設定がないサブネットのことをプライベートサブネットと言いますが、このようにインターネットと通信が困るサブネットに置かれたサーバであってもインターネットと通信が必要なケースはあります。よくあるのが、DBサーバはインターネットからアクセスを防ぐ必要があるけど、OSなどのアップデートをするときにはインターネットにつながらなければならない、といったケースです。

このようなときにNAT Gatewayを置いて、0.0.0.0/0通信をNAT Gateway経由で送ると、外からの通信は入らず、中からの通信はインターネットにつなげることができます。また、NAT Gatewayはステートフルなため、戻ってくる通信は中からのリクエストであることが保証されています。

構成は以下のような図となります。

f:id:swx-kong:20200817173546p:plain

IPv6を使ってインターネットに繋がりたい!Egress-only Internet Gateway

Egress-only Internet GatewayはIPv6を使用してインターネットに出たいときに使用するものとなります。しかし、名前にあるEgress-onlyから分かる通り、外部に出ることかできません。NAT GatewayのIPv6版だと思えばいいのではないかと思います。

f:id:swx-kong:20200817172828p:plain

IPv6通信を行うには、サブネットとサーバ(EC2インスタンスなど)もIPv6のIPアドレスを持つ必要があります。また、NAT Gateway同様、Egress-only Internet Gatewayもステートフルとなります。

最後に

いかがでしょうか。今回紹介した3つのサービスは、全部VPCからインターネットにつなげるときに必要なGatewayとなります。それぞれの特徴を一言でまとめますと

  • 普通にインターネットにつなげるのであればInternet Gateway
  • 外からの通信は受け入れたくないが、内側からインターネットにつなげたい & IPv4はNAT Gateway
  • 外からの通信は受け入れたくないが、内側からインターネットにつなげたい & IPv6はEgress-only Internet Gateway

となります。

しかしVPCから通信したいものってインターネットだけじゃないですね。オンプレミス環境と通信したい、もしくは他のVPCと通信したいなど、用件はもっともっとたくさんあります。そのようなケースはどのGatewayを使えばいいのか?を次回の記事で紹介したいと思います。

次回の記事:

Gatewayが多過ぎて何がなんなのかわからない?AWSのGateway全種類解説!ーその2 - サーバーワークスエンジニアブログ