インターネット向け通信をAWS Network Firewallで検査する際のルーティング設定(単一VPC版)

記事タイトルとURLをコピーする

クラウドインテグレーション部技術2課の山下です。

今回は、単一VPC構成で、インターネット向け通信をAWS Network Firewall(以下、FW)で検査する際のルーティング設定を解説します。

はじめに結論

以下構成図のようなルーティング設定、リソース配置となります。

f:id:swx-yuki-yamashita:20220228114420p:plain


ポイントはNAT Gatewayを配置するサブネットのルーティングです。 インターネットからの戻りの通信もFirewall endpoint経由にするために、Destinationに送信元(今回はEC2)のサブネットを指定し、TargetをFirewall endpointにします。

Destination Target
0.0.0.0 Internet Gateway
10.0.0.0/24 local
10.0.0.64/28 Firewall endpoint

Destinationにサブネットを指定しない場合

Destinationにサブネットを指定しないとlocalのルートが適用されてしまい、戻りの通信がFirewall endpointを経由せずに、直接送信元に戻ってしまいます。

f:id:swx-yuki-yamashita:20220228114443p:plain


Destinationにサブネットを指定することで、ロンゲストマッチの経路が優先されるようになり、NAT Gatewayからの戻り通信がFirewall endpointを経由するようになります。


(補足)2021年8月31日以前のルーティング設定について

以前は、サブネットルートテーブルでは、VPC CIDR範囲より詳細なルートを書くことができませんでした。

2021年8月31日のアップデートで制限が撤廃され、詳細ルートが書けるようになりました。(下記リンク参照)

aws.amazon.com

そのため、アップデート以前は、下図のようにInternet Gateway用のIngressルートテーブルを作成して対応していました。(IngressルートテーブルのDestinationには、NAT Gatewayのサブネットを指定します。)

f:id:swx-yuki-yamashita:20220228114503p:plain


ただし、上図の構成ではEC2とFirewall endpointの間にNAT Gatewayが配置されるため、FWで検査されるパケットのIPが、EC2ではなくNAT GatewayのIPになってしまいます。(以下はFWのAlertログの一例です。)

f:id:swx-yuki-yamashita:20220228113357p:plain
FWのAlertログ


そのため、FWログを見ても、実際の送信元を確認することができませんでした。
VPC内で詳細ルートが書けるようになったことで、送信元IPアドレスを確認することができるようになりました。

おわりに

以上、単一VPC構成で、インターネット向け通信をAWS Network Firewall(以下、FW)で検査する際のルーティング設定の解説でした。

2021年8月31日以前に書かれた記事やドキュメントでは、上記補足で説明した構成のものがあるかと思いますが、送信元IPが確認できないため、現在では避ける事を推奨します。

この記事が少しでも参考になれば幸いです。