NAT ゲートウェイの VPC フローログにインバウンドトラフィックがあります。NAT ゲートウェイがインターネットからのインバウンドトラフィックを受け入れているのでしょうか?
最終更新日: 2019 年 7 月 22 日
パブリック IP からのインバウンドトラフィックに対する Action = ACCEPT が VPC フローログに表示されているのですが、NAT ゲートウェイはインターネットからのトラフィックを受け入れないと理解していました。NAT ゲートウェイがインターネットからのインバウンドトラフィックを受け入れているのでしょうか?
解決方法
AWS が管理する NAT ゲートウェイはインターネットから開始されるトラフィックを受け入れませんが、VPC フローログの情報がインターネットからのインバウンドトラフィックを受け入れているかのように見える理由が 2 つあります。
理由 1: インバウンドインターネットトラフィックがセキュリティグループまたはネットワーク ACL によって許可されている
VPC フローログは、インバウンドインターネットトラフィックがセキュリティグループまたはネットワークアクセスコントロールリスト (ACL) によって許可されている場合に、それが受け入れられていると表示します。NAT ゲートウェイにアタッチされているネットワーク ACL がインターネットからのトラフィックを明示的に拒否しない場合、NAT ゲートウェイへのインターネットトラフィックが受け入れられているかのように見えますが、実際のトラフィックは NAT ゲートウェイに受け入れられず、ドロップされます。これは、以下のように確認します。
1.Amazon CloudWatch コンソールを開きます。
2.ナビゲーションペインで [インサイト] を選択します。
3.ドロップダウンから、NAT ゲートウェイの Elastic Network Interface と専用インスタンスの Elastic Network Interface が含まれるロググループを選択します。
4.以下のクエリを実行します。
filter (dstAddr like 'xxx.xxx' and srcAddr like 'public IP')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| limit 10
注意: 検索フィルタで最初の 2 つのオクテットだけを使用して、VPC 内のすべてのネットワークインターフェイスを分析することができます。上記の例では、xxx.xxx を VPC CIDR の最初の 2 つのオクテットに置き換えてください。また、public IP をVPC フローログエントリに表示されているパブリック IP に置き換えてください。
クエリ結果では、NAT ゲートウェイのプライベート IP にそのパブリック IP からのトラフィックが表示されますが、VPC 内の他のプライベート IP にトラフィックは表示されません。これらの結果により、着信トラフィックが要求されていないものであったことがわかります。しかし、専用インスタンスの IP にトラフィックがある場合は、理由 2 にある手順に従ってください。
理由 2: パブリック IP へのトラフィックが専用インスタンスから開始された
インターネットアクセスに NAT ゲートウェイを使用するインスタンスがある場合、VPC フローログのトラフィックは、パブリック IP からの応答トラフィックを示している可能性があります。パブリック IP へのトラフィックが専用インスタンスから開始されたことを確認するには、以下のクエリを実行します。
注意: クエリを実行する前に、以下を実行するようにしてください。
- VPC フローログでトラフィックを観測した時間に対応する時間枠を選択する。
- VPC に複数のロググループがある場合は、適切なグループを選択する。
filter (dstAddr like 'public IP' and srcAddr like 'xxx.xxx')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| limit 10
注意: 上記の例では、xxx.xxx を VPC CIDR の最初の 2 つのオクテットに置き換えてください。また、public IP をVPC フローログエントリに表示されているパブリック IP に置き換えてください。10 を超える VPC 内のリソースがパブリック IP へのトラフィックを開始した場合は、limit を増やしてください。