はじめに
「AWS WAF で特定の IP アドレス(IPv4)のみ許可する設定入れた」 「自分のグローバル IP を確認し、間違いなく許可リスト(IP Set)に登録した」
よし、これで接続できるはず……とブラウザを叩いた瞬間、返ってきたのは非情な 403 Forbidden
「えっ、なんで? IP 合ってるよね?」
何度設定を見直してもミスはない。でも繋がらない。 そんな謎のトラブルに遭遇したことありませんか?
調査の結果、犯人は WAF の設定ミスではなく、「IPv6」 と 「Windows の仕様」 の組み合わせにありました。
この記事では、なぜ「IPv4 を許可しているのにブロックされるのか」というメカニズムと、CloudFront 環境でこの問題を解決する(IPv6 を無効化する)手順について解説します。
- WAF の IP 制限がすり抜けてしまう原因(IPv6 優先の罠)
- Windows クライアントの通信仕様について
- CloudFront で IPv6 を無効化して、強制的に IPv4 で接続させる方法
原因: Windowsは「IPv6」を優先して使いに行く
トラブルの原因は、「CloudFront の仕様」 と 「Windows の仕様」 が組み合わさった結果、意図せず IPv6 通信が発生していた ことにありました。
トラブル発生のメカニズム
一連の流れは以下のようになります。
CloudFront ディストリビューションを作成すると、初期設定で IPv6 が有効(Enable)になっています。 そのため、DNS 名前解決を行うと、IPv4 アドレス(Aレコード)だけでなく、IPv6 アドレス(AAAA レコード) も応答します。
最近のインターネット回線(IPoE/v6プラスなど)や、テザリング環境では、PC に IPv6 アドレスが割り当てられていることが一般的です。
ここが最大のポイントです。Windows 10 や 11 などの現代的な OS は、「通信相手が IPv6 に対応しているなら、IPv4 よりも IPv6 を優先して使う」 という仕様(RFC 3484/6724)になっています。

つまり、あなたがブラウザに URL を打ち込んだ瞬間、Windows は裏側で「おっ、IPv6 で行けるやん! じゃあ新しい方の IPv6 で行こう!」と勝手に判断していたのです。
WAF の穴
ここで WAF の設定との不整合(穴)が生じます
- あなたの設定
-
WAF の許可リスト(IP Set)には、自分の IPv4 アドレス だけを登録している。
- 実際の通信
-
PC は IPv6 でアクセスしてくる。
WAF から見ると、やってきた通信の送信元 IP は「登録されていない IPv6 アドレス」です。 当然、許可リストにはマッチしないため、WAF ルールに従って通信は ブロック(Block) されてしまいます。
これが、「IPv4 は許可しているのに繋がらない」現象の正体です。


具体的な通信フロー


対処法: CloudFront で IPv6 を無効化する
原因が「勝手に IPv6 で接続してしまうこと」であれば、対策はシンプルです。 接続先である CloudFront 側で IPv6 を無効化 してしまえばよいのです。
サーバー側が IPv6 に対応していなければ、クライアント(OS)は諦めて、大人しく IPv4 で接続しに来てくれます。
設定手順
設定は AWS マネジメントコンソールから数クリックで行えます。
- CloudFront コンソールを開き、対象のディストリビューションを選択します。
- 「General」 タブを開き、「Edit」 をクリックします。
- 設定項目の中にある 「Enable IPv6」 のチェックを 外します(OFF にする)
- 最下部の 「Save changes」 をクリックして保存します。


保存後、CloudFront のステータスが Deploying から Deployed に変われば反映完了です。 これで、DNS の応答から AAAA レコード(IPv6 アドレス)が消え、クライアントは必ず IPv4 で接続するようになります。
補足: WAF で IPv6 を許可する方法は?
「IPv6 を無効化せずに、WAF 側で IPv6 アドレスを許可すればいいのでは?」と思われるかもしれません。 もちろん技術的には可能ですが、企業ユースの IP 制限(社内からのアクセスのみ許可など)では、IPv6 の許可は運用難易度が高い ケースが多いです。
- IP アドレスが変動しやすい
-
家庭用回線やスマートフォンの IPv6 アドレスは、プロバイダの割り当てによって頻繁に変わることがあります。
- アドレスが長くて管理が大変
-
IPv4 に比べて桁数が多く、範囲指定(CIDR)の計算も複雑になりがちです。



そのため、「固定のグローバル IPv4 アドレス」を持っている環境であれば、今回のように 「あえて IPv6 を無効化して、IPv4 に一本化する」 のが、最も確実で管理しやすい解決策となります。
まとめ
本記事では、AWS WAF で「許可された IPv4 から接続しているのにブロックされる」事象について解説しました。
- 原因
-
Windows などの OS は、IPv6 が使える環境では IPv6 を優先 して使おうとする。
- WAF の穴
-
WAF の許可リストに IPv4 しか書いていないと、IPv6 で来た通信は「許可外」として弾かれる。
- 対策
-
CloudFront の 「Enable IPv6」 を無効化し、強制的に IPv4 で通信させる。
最近は、意図しなくてもクライアント側が IPv6 対応(デュアルスタック)になっていることが当たり前になってきました。 「IP 制限がなぜか効かない!」という時は、設定ミスを疑う前に 「プロトコル(v4/v6)の違い」 を疑ってみてください。
以上、最後までお読みいただきありがとうございました。



