Yodeee's Tech Diary

日々の開発や勉強したことをつれづれなるままに

【VPC ルートテーブル】送信先とターゲットとは?ルートテーブルを噛み砕いて解説します

始めに

Amazon VPCのルートテーブルの送信先とターゲット。この2つの用語は意味合いが似ていて、混乱することはないでしょうか。

私も頻繁にわからなくなり、その度に調べ直すことがありました。

今回は自身の備忘のためにも、VPCのルートテーブルが何であるかを解説しつつ、「送信先」と「ターゲット」の意味について解説したいと思います。

忙しい人向けに結論

送信先とターゲットはそれぞれ以下の意味となります。

ルートテーブルの役割

VPCには論理的なルータが内部的に存在しています。
このルータは物理的なハードウェアではなく、VPC内のサブネット間での通信のルーティングを担当する仮想的な存在です。

このルータはVPC内部および外部との通信において適切な経路を決定するためにルートテーブル情報が必要です。

f:id:mister_yoda:20210620162903p:plain


次にルートテーブルの役割を説明する上での例として、VPCにパブリック用とプライベート用のサブネットが作成されていることとします。

f:id:mister_yoda:20210620163336p:plain

 

さて、この状態で通信パターンを考えてみましょう。

まず同じサブネット内の通信ですが、この場合は同じネットワークセグメント内の通信であるため、ルータを経由する必要がありません。

次に送信元の所属するサブネット外との通信ですが、こちらは逆にルータを経由しての通信が必要となり、このときにルータはサブネットに紐付けられたルートテーブルを参照してルーティングを行います。

実はサブネットを作成すると、下の図のようにVPC作成時に作られるデフォルトルートテーブルが自動で紐付けられます。
加えて、このルートテーブルにはローカルルートと呼ばれるルート情報がデフォルトで含まれています。

f:id:mister_yoda:20210620165016p:plain

上図のデフォルトルートテーブルのローカルルート情報を見ていきましょう。

ここでようやく送信先とターゲットというキーワードが出てきました。

それぞれ下記のような意味を持ちます。

つまり、上記のデフォルトルートテーブルの意味は、 VPC内のネットワークを経由(ターゲット)して、同じVPCである[10.0.0.0/16] 宛(送信先)にトラフィックを送信するということになります。

[補足]インターネットと通信をするためには?

上記ではサブネット間での通信を題材に紹介しましたが、
サブネットからインターネットに出るためのルートテーブルの設定も見ていきたいと思います。

下記のようにパブリックサブネットからインターネットにアクセスしたい要件があったとします。

先に紹介した通り、インターネットとアクセスさせるためには、ルートテーブルに経路を追加する必要があります。

今回、既存のルートテーブルを編集してしまうと、同一のルートテーブルが紐づいているプライベートサブネットも外部インターネットに通信できるようになってしまうため、新規のルートテーブルを作成します。

次に、新しいルートテーブルを作成し、パブリックサブネットに関連付けます。

作成したルートテーブルには以下のルート情報を追加します。

  • 送信先・・・すべてのIPv4の宛先(0.0.0.0/0)
  • ターゲット・・・事前に作成したインターネットゲートウェイ(igw-xxxxxx)
    ※あらかじめ、インターネットゲートウェイを作成しておく必要があります

追加した場合の構成は下記のようになります。

f:id:mister_yoda:20210620171440p:plain


この状態で、パブリックサブネットからインターネットにアクセスをしようとすると、ルータはルートテーブルの送信先エントリの中から、トラフィックの宛先IPアドレスに一致するものを探します。

今回追加したルートの0.0.0.0/0はすべてのIPv4のアドレスを意味するCIDRブロックですので、他に一致するブロックがない場合はこのルートが選択されます。

0.0.0.0/0のターゲットがインターネットゲートウェイに設定されているので、トラフィックはこのゲートウェイを経由してインターネットに接続します。

以上がインターネットに接続するためのルートテーブルの設定についてです。

まとめ

今回、VPCのルートテーブルにおける「送信先」と「ターゲット」の役割を詳しく見てきました。特に、VPC内の通信をスムーズに行う「local」ターゲットや、サブネットとの関連付けについてのポイントを紹介しました。これが皆さんのAWS内の通信の流れや仕組みについての理解の一助となれば幸いです。