Loading
BLOG 開発者ブログ
  • ホーム>
  • 開発者ブログ>
  • 【AWS】ルートテーブルでよく使われる設定を分かりやすくざっと解説【中級の壁】...

2022年2月28日

【AWS】ルートテーブルでよく使われる設定を分かりやすくざっと解説【中級の壁】

今回はVPCサービスであまり目立たないものの重要な役割を担うルートテーブルについてよく使われる設定を中心に解説します。

目立たないからこそ苦手意識を持つ人も多いのではないでしょうか。

目次

 

はじめに

こんにちは。
クラウドソリューショングループのyoshikawa.kです。

早速ですがルートテーブルに苦手意識を持っている方って意外と多いのではないでしょうか?

AWSはVPC作成時にサブネットも自動的に作成できる機能があり(VPCウィザードを起動)、
そのせいか、プライベートとパブリックサブネットの違いさえ正しく把握していない方もいると思います。

今回はそういった苦手意識を無くすべく、
独断と偏見で選んだ業務でよく使用するルートテーブルの設定を中心にいくつか紹介します。

これらを抑えておけばいきなり明日からネットワークの設定を任されても大丈夫でしょう!

 

インターネットゲートウェイ

インターネットゲートウェイは「VPCという閉じられた世界」から「膨大なインターネットの世界へ」とつなぐ門としての役割を担っています。

デフォルトのルートテーブルでは以下の画像のように、VPC内しかルーティングが向いていません。

プライベートサブネット用のルートテーブル

しかし以下は、VPCにアタッチされたインターネットゲートウェイに向かえるように設定し、インターネットと直接接続できる状態になっています。

パブリックサブネット用のルートテーブル

この設定の異なるルートテーブルをサブネットに紐づけることによって、上の図のルートテーブルの場合は「プライベートサブネット」、下の図のルートテーブルの場合が「パブリックサブネット」と呼ばれています。

ルートテーブルにインターネットゲートウェイ向きの設定がされているか、いないかによって「パブリックサブネット」と「プライベートサブネット」が決定されています。

決してサブネット側で設定されるものではありません。

 

サブネットによくある勘違いポイント

皆さんは「プライベートサブネット」と「パブリックサブネット」の違いを詳しく知ってますでしょうか?

「インターネットと通信できるのがパブリックサブネットなんじゃないの?」という理解の方も多いと思いますし、間違っておりません。ですが何度も述べますがそれはルートテーブルによって決められていることまで知っておく必要があります。

AWSでは、VPC作成時に「VPCウィザードを起動」という項目があり、EC2を立てるのに最低限必要な環境を簡単に用意できることから各種ハンズオンにてよく利用されます。

「VPCウィザードを起動」からVPCを作成すると、サブネット名と配置場所のみの設定でパブリックサブネットが作成できてしまい、インターネットゲートウェイとルートテーブルを一から作成する機会がなくなってしまいます。

この親切(以下画面)により初心者が「プライベートサブネット」と「パブリックサブネット」の理解を妨げる最大の原因となっているように感じています。

つまりサブネットの性質はルートテーブルによって決められるということです。

実際にサブネットを作成すると分かりますが、以下画面のように設定としてはサブネット名と配置場所しか行いません。

 

NAT ゲートウェイ

さてお次はNATゲートウェイ。

詳細な説明は省きますが、インターネットからの通信を防ぐためインスタンスをプライベートサブネット(ルートテーブルがインターネットゲートウェイに向いていないサブネット)に配置しつつ、インスタンスからインターネットへアクセスしたいときに用いられます(その代わり月額5~6000円くらいかかります)。

主にパッケージのダウンロードをしたい際に用いられることとなります。

インターネットゲートウェイと同じように、送信先を「0.0.0.0/0」としVPC外の宛先に対してはNAT ゲートウェイに向かうように設定します。

 

ゲートウェイ型エンドポイント

プライベートサブネットに配置されたインスタンスがS3やDynamoDBとインターネットを介さずに通信したいときに用いられます。

NAT ゲートウェイと異なりゲートウェイ型エンドポイントには設置料金はかかりません。

補足ですがゲートウェイ型エンドポイントはその性質上、インターネットを経由せずセキュアな通信を行いたいときに用いられます。

逆に言うとセキュアな通信である必要がないときはインターネットゲートウェイ経由で通信すればいいです。そしてこれは他のゲートウェイにも当てはまります。

ちなみにルートテーブルには、エンドポイント作成時に指定したルートテーブルに以下の画像のように自動的に設定が追加されます。

送信先が「pl-xxxxxxxx」みたいな感じでよく分からないと思いますが、これは「マネージドプレフィックスリスト」と呼ばれ、恐らくですがAWSアカウント内のS3バケットのIPアドレスをまとめたものかと思われます。

 

他のネットワークとの接続

他にも“インターネットを経由せず”に他のVPCやローカルネットワークに接続したい場合は、専用のゲートウェイ(用途により色々種類があります)を設置しルートテーブルを設定する必要があります。

設定方法はそこまで難しくなく、例えば接続したいVPCのCIDRが「10.1.0.0/16」とかだったら送信先を「10.1.0.0/16」でターゲットを専用のゲートウェイに設定すれば済みます(もちろん接続先のVPCでも同様の設定が必要です)。

 

まとめ

目立たないけど重要な役割を担うルートテーブル。

目立たないゆえに苦手意識を持っている方もいると思いますが、実はそこまで難しくなく。

  • インターネットと接続したい(しても)いい場合は、ルートテーブルをインターネットゲートウェイに向かう設定を行い「パブリックサブネット化」する
  • インターネットと接続しない(したくない)場合は、ルートテーブルをインターネットゲートウェイに向かう設定を行わず、目的に合った各種設定を行い通信をセキュアに保つ

上記のことさえ覚えておけばルートテーブルの基本は把握していると考えてよいでしょう。