インターネットゲートウェイと NAT ゲートウェイの両方を備えた AWS VPC ルーティングテーブル

インターネットゲートウェイと NAT ゲートウェイの両方を備えた AWS VPC ルーティングテーブル

Amazon Web Services にサブネット 172.31.0.0/16 を持つ単一の VPC があります。このサブネットに EC2 インスタンスを作成し、パブリック Elastic IP を割り当てました。この VPC にはインターネット ゲートウェイがあります。したがって、ルート テーブルは次のようになります。

172.31.0.0/16   local
0.0.0.0/0       igw-b4ac67d0    

私が管理していない外部サービスでの IP アクセスの問題を回避するために、この VPC に NAT ゲートウェイを追加し、単一の外部アドレス ABCD へのすべてのトラフィックが NAT ゲートウェイを経由してルーティングされるようにしました。つまり、ルート テーブルは次のようになります。

# GOAL
172.31.0.0/16   local
A.B.C.D/32      nat-451b3be9
0.0.0.0/0       igw-b4ac67d0    

しかし、私がどんなに頑張っても、AWSインターフェースは「保存」をクリックすると順序を入れ替えてしまうので、いつも

# What AWS gives me
172.31.0.0/16   local
0.0.0.0/0       igw-b4ac67d0    
A.B.C.D/32      nat-451b3be9

このルート テーブルはおかしいようです。NAT ゲートウェイは決して使用されず、トラフィックは依然としてA.B.C.DEC2 インスタンスの Elastic IP から送信されているように見えます。

ルートテーブル GOAL を取得するにはどうすればよいですか?

注: 外部サービスでは、シングルアクセスを許可する IP アドレス。EC2 インスタンスが 1 つしかない場合は、EC2 インスタンスの Elastic IP アドレスを付与するだけで済みます。ただし、同じ方法でセットアップされた EC2 インスタンスをさらにいくつか追加する必要があります。そのため、NAT ゲートウェイが必要です。また、EC2 インスタンスのサービスに外部からアクセスできるようにする必要があるため、インターネット ゲートウェイを単純に省略して NAT ゲートウェイのみを使用することはできません。

答え1

このルートテーブルは馬鹿げているようだ

はい、あなたの解釈ではそうです...しかし、あなたの解釈は正しくありません。VPC のルート テーブル エントリには、実際には順序がありません。

最も具体的なルートが常に選択されます。

テーブル内の各ルートは、宛先 CIDR とターゲットを指定します (たとえば、外部企業ネットワーク 172.16.0.0/12 宛てのトラフィックは、仮想プライベート ゲートウェイをターゲットとします)。トラフィックに一致する最も具体的なルートを使用して、トラフィックのルーティング方法を決定します。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html

ただし、NATゲートウェイがこのルートテーブルを使用するサブネット上に配置されている場合、この構成は機能しません。NATゲートウェイは、ルートテーブルに次のものがないサブネット上に配置されている必要があります。どれでもNAT ゲートウェイに戻るルート -- そうでない場合、ルーティング ループになります。インターネットに対して、NAT ゲートウェイは、インターネット ゲートウェイにアクセスするために、実際に接続されているサブネットの VPC ルート テーブルを使用します... そのため、この/32ルートは、NAT ゲートウェイからの送信トラフィックに影響を与える場所に配置できないため、NAT ゲートウェイは、それを使用するインスタンスがあるサブネットとは異なるサブネット上に存在する必要があります。

これは、VPC ネットワークがルーターを備えた従来のイーサネット ネットワークではないことを理解していない人にとっては直感に反するものです。ネットワーク全体がソフトウェア定義であり、物理的ではないため、トラフィックがアベイラビリティ ゾーン内のサブネット境界を越えてもパフォーマンスの低下はありません。たとえば、あるサブネット上の EC2 インスタンスが別のサブネット上の NAT ゲートウェイ (または NAT インスタンス) を使用する場合や、あるサブネット上の Elastic Load Balancer が別のサブネット上の EC2 インスタンスに接続する場合などです。実際、このような場合のサブネット間のトラフィックの交差は標準的な構成であり、NAT ゲートウェイと ELB はパブリック サブネット (デフォルト ルートは IGW) に配置され、EC2 インスタンスはプライベート サブネット (デフォルト ルートは NAT デバイス) に配置されます。

さらに、試行している構成では、送信は許可されますが、A.B.C.D戻りルートが NAT ゲートウェイを介した非対称であるため、アドレスからこのサブネット上の任意のものへの受信接続 (外部から開始) は許可されないことに注意してください。

関連情報