AWS CloudFront・WAF・S3 で IP 制限する際の注意点

AWS CloudFront・WAF・S3 環境において、クライアントから Web サーバーへ接続時に WAF で許可した IPv4 からの接続にもかかわらず、つながらない事象に遭遇しました。
調査した結果、クライアントが IPv4 ではなく、IPv6 で接続していることに起因していました。

原因の詳細

  1. クライアント端末(Windows 10)で Web サーバー(www.example.com)に対して IPv4 と IPv6 を問い合わせ
  2. リクエストをうけた Route53 が CNAME で CloudFront へ転送
  3. CloudFront が最適なエッジサーバーの IPv4 と IPv6 を応答
  4. クライアント端末(Windows 10)が IPv6 で接続
  5. WAF が IPv4 しか許可していないため、通信をブロック
※Windows 10 は、IPv6 を優先して使用する仕様となっているため。

対策

CloudFront で IPv6 を無効化して、IPv4 のみ応答するように設定します。
具体的には CloudFront の管理コンソールで「Enable IPv6」のチェックをはずします。

以上

参考書籍