AWS の仮想的なネットワークの中核となるルートテーブル(Route Table)について解説します。
以下、関連する記事も参考にしてください。
【AWS】VPC(Virtual Private Cloud)の基本から解説
【AWS】VPC(Virtual Private Cloud)の各オプションについて
ルートテーブルとは
ルートテーブルの設定でネットワークの経路が決まります。
どのサブネットとどのサブネットを通信させるのかを設定します。
同サブネット内の通信(例えば、)サブネットの外に出る通信(例えば、192.168.11.0/24 のサブネット A から 192.168.12.0/24 のサブネット B への通信等)が発生する場合は、ルートテーブルの設定が必要になります。
当然、ルートテーブルで設定がなければ通信はできませんが、メインルートテーブルで両方のサブネットがデフォルトで割り当てられていれば、通信が可能になります。
ルートテーブルには下図のようにルート設定のセットが格納されています。
【例】
ルートテーブル(rtb-xxxxxx)には 2つのルートの設定があります。
インターネットに出ていくための手順(IGW 経由)
VPC を作成して IGW(インターネットゲートウェイ、Internet Gateway)を割り当てても、インターネットと通信はできません。
例として下図の設定を確認します。
■VPC の設定
■ルートテーブルの設定
- VPC のネットワークは 172.31.0.0/16 で作成しています。
- VPC で作成した 172.31.0.0/16 宛の通信は、インターネットに出て行かずにローカルでルーティングされます。
- デフォルトで VPC 内のルートの設定(送信先:172.31.0.0/16、ターゲット:local)がされています。
- 172.31.0.0/16 以外のサブネット宛の通信は IGW を経由してインターネットに出ていきます。
NAT 経由でインターネットにアクセスする場合
プライベートサブネット内の EC2 インスタンスは、「NAT ゲートウェイ」もしくは「NAT デバイス」を経由してもインターネットにアクセスが可能です。
その場合は、新規で「NAT ゲートウェイ」もしくは「NAT デバイス」を作成し、対象のサブネットが所属するルートテーブルに「NAT ゲートウェイ」もしくは「NAT デバイス」を関連付けます。
メインルートテーブルとは
VPC を作成すると自動的に「メインルートテーブル」が作成されます。
サブネットを作成したらルートテーブルに関連付ける必要がありますが、作成したサブネットを特定のルートテーブルに関連付けない場合は、そのサブネットは、メインルートテーブルに暗示的に(自動的に、デフォルトで)関連付けられます。
メインルートテーブルではなく、追加でカスタマイズした「カスタムルートテーブル」を作成することもできます。
ルートテーブルの設定例
各種ルートテーブルの設定例について記載します。
新規でルートテーブルを作成する場合
新規でルートテーブルを作成します。
「ルートテーブルの作成」ボタンをクリックします。
「名前タグ」を設定し、「VPC」を選択して「作成」ボタンをクリックします。
ルートテーブルの設定
ルートテーブルを作成したら、必要な場合はインターネットゲートウェイ(igw)や NAT の設定を割り当てます。
先ほど作成した対象のルートテーブルを選択して「ルート」タブをクリックし「ルートの編集」ボタンをクリックします。
下図のように必要な場合は、各種ルートの設定を追加します。
追加したら「ルートの保存」ボタンをクリックします。
■ターゲットに選択できる設定
- Egress Only Internet Gateway
- Instance
- Internet Gateway
- NAT Gateway
- Network Interface
- Peering Connection ← VPC ピアリング接続を設定する場合
- Transit Gateway
- Virtual Private Gateway
ルートテーブルの各ルートには送信先 CIDR とターゲットを指定する
ルートテーブルの各ルートには「送信先 CIDR(例:172.31.0.0/16)」と「ターゲット(例:local)」を指定します。
【例】
サブネットには 1 つルートテーブルを設定する
サブネットには 1つのルートテーブルのみ関連付けができます。
仮に 1つのサブネットに複数のルートテーブルを関連付けられることができる場合、各ルートテーブルのルールは異なるためどのような動作になるか分からなくなるからです。
逆に 1つのルートテーブルに対して、複数のサブネットを関連付けることは可能です。
ルーティングの優先度
この構成の場合、以下の優先順位になります。
- 10.0.0.0/16 の同 VPC 内のルーティング
- 172.31.0.0/16 の VPC ピアリング接続(VPC Peer 接続)へのルーティング
- インターネットへのルーティング
サブネットを作成した瞬間にメインルートテーブルに割り当てられるので注意
下図のようにメインルートテーブルに IGW(インターネットゲートウェイ)を割り当てている場合は、セキュリティ上の注意が必要になります。
VPC ピアリング接続用ルートテーブルの設定例
VPC ピアリング接続用のルートテーブルの設定を説明します。
■参考
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Route_Tables.html
VPC ピアリング接続のルートテーブルの設定は /32 の設定も可能
VPC ピアリング接続のルートテーブルの設定は /32 の設定も可能です。
この設定により、余計な通信が VPC 間を通ることを防ぐことができます。
セキュアな VPC ピアリング接続(VPC Peer 接続、VPC ピア接続)の例
VPC ピアリング接続を設定する場合は、新規で「プライベートサブネット」と「ルートテーブル」を作成し、メインルートテーブルには割り当てないようにします。
単純にサブネットを作成するだけだと、デフォルトで自動的に「メインルートテーブル」に割り当てられます。
メインルートテーブルには他にもサブネットが自動的に割り当てられているので、作成するタイミングにより他のサブネットからも VPC ピアリング接続を通して思いもよらない通信が発生するリスクがあります。
そのため、VPC ピアリング接続用のサブネットを新規で作成し、VPC ピアリング接続用のルートテーブルも新規で作成します。
新規サブネットと新規ルーティングテーブルに割り当てることにより、そのサブネットに所属する(もしくはアクセス権のある)リソース(EC2 インスタンスなど)のみ VPC ピアリング接続で対向のサブネット内のリソース(EC2 インスタンスなど)にアクセスできるようになります。
更に、作成した各サブネットに「ネットワーク ACL」を割り当てることによりよりセキュアな環境にすることができます。
その結果、セキュリティを担保出来た状態で、且つ必要なトラフィックのみ VPC ピアリング接続内を通信するようになります。
参考サイト
■公式サイト
ルートテーブル
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Route_Tables.html
コメント