アマゾンウェブサービスにサブネット172.31.0.0/16の単一のVPCがあります。このサブネットにEC2インスタンスを作成し、パブリックElastic IPを与えました。このVPCにはインターネットゲートウェイがあります。したがって、私のルートテーブルは次のようになります。
172.31.0.0/16 local
0.0.0.0/0 igw-b4ac67d0
私が制御していない外部サービスでのIPアクセスの問題を回避するために、NATゲートウェイをこのVPCに追加して、単一の外部アドレス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.D
はまだEC2インスタンスのElastic IPから送信されているようです。
ルートテーブルGOALを取得するにはどうすればよいですか?
注:外部サービスでは、アクセスを許可するsingle IPアドレスを追加できます。 EC2インスタンスが1つしかない場合は、EC2インスタンスのElastic IPアドレスを簡単に指定できます。しかし、同じ方法で設定したEC2インスタンスをさらにいくつか追加したいと思います。したがって、NATゲートウェイです。また、EC2インスタンスのサービスが必要であるため、インターネットゲートウェイを省略してNATゲートウェイのみを使用することはできません。外の世界からアクセスできます。
このルートテーブルはばかげているようです
はい、あなたの解釈では...しかしあなたの解釈は正しくありません。 VPCのルートテーブルエントリには実際には順序がありません。
最も具体的なルートが常に選択されます。
テーブル内の各ルートは、宛先CIDRとターゲットを指定します(たとえば、外部企業ネットワーク172.16.0.0/12宛てのトラフィックは、仮想プライベートゲートウェイをターゲットとしています)。トラフィックに一致する最も具体的なルートを使用して、トラフィックのルーティング方法を決定します。
http://docs.aws.Amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html
ただし、NATゲートウェイが実際にこのルートテーブルを使用するサブネット上にある場合、構成は機能しません。NATゲートウェイはルートテーブルにanyルートがないサブネットNATゲートウェイ-それ以外の場合、それはルーティングですループ。インターネットに向けて、NATゲートウェイは、インターネットゲートウェイにアクセスするために、実際に接続されているサブネットのVPCルートテーブルを使用します。そのため、別のこの/32
ルートは、NAT Gatewayからのアウトバウンドトラフィックに影響を与える場所に配置できないため、それを使用するインスタンスを持つサブネットからのサブネットです。
これは、VPCネットワークがルーターを備えた従来のイーサネットネットワークではないことを理解していない人には直感的ではありません。 NATを使用する1つのサブネット上のEC2インスタンスの場合のように、ネットワーク全体が物理的にではなくソフトウェアで定義されているため、トラフィックがアベイラビリティゾーン内のサブネット境界を通過するときにパフォーマンスが低下することはありません。 =別のサブネット上のゲートウェイ(またはNATインスタンス)、または別のサブネット上のEC2インスタンスに接続する1つのサブネット上のElastic Load Balancer。実際、これらの1つのサブネットから別のサブネットへのトラフィックケースは標準構成であり、NATゲートウェイとELBをパブリックサブネット(デフォルトルートはIGW)に配置し、EC2インスタンスをプライベートサブネット(デフォルトルートはNATデバイス)に配置します)。
さらに、あなたが試みている設定はアウトバウンドを許可しますが、A.B.C.D
アドレスからこのサブネット上の何かへの(外部から開始された)インバウンド接続は決して許可しないことに注意してください。戻りルートはNATゲートウェイ。