0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Application Gateway:Public/Privateリスナーを同一ポートで利用する際のNSG要件と罠

0
Posted at

Application Gateway:Public/Privateリスナーを同一ポートで利用する際のNSG要件と罠

Application Gateway v2を運用している環境で、既存のパブリックリスナーに加えてプライベートリスナーを追加しようとした際、以下のようなエラーに遭遇することがあります。

Failed to save application gateway changes
Application Gateway とネットワーク セキュリティ グループの構成が競合しているため、変更を保存できませんでした。

このエラーは、次のようにパブリックとプライベートのフロントエンドIPで同じポート(例: 80/TCP)を共有している構成で頻発します。

  • Public Frontend IP: 20.1.1.1 (Port 80)
  • Private Frontend IP: 10.0.0.10 (Port 80)

本記事では、なぜこのエラーが発生するのか、そしてNSGにどのような設定が必要になるのかを分かりやすく解説します。


1. 従来のNSG設定(これまでの前提)

一般的なApplication GatewayのNSG設定では、サブネット全体を宛先とする次のような「受信許可ルール」を構成するのが主流です。

方向 ソース 宛先 (Destination) ポート アクション
Inbound Any Application Gateway Subnet (例: 10.0.1.0/24) 80, 443 Allow

この構成では、NSGは「Application Gatewayが配置されているサブネット宛ての通信」を一括で許可しています。


2. なぜNSGの競合エラーが発生するのか?

Public ListenerとPrivate Listenerが同じポートを共有した場合、Application Gatewayの受信トラフィックの評価方法が変わります。

例えば、どちらのリスナーもポート 80 を使用している場合、Application Gatewayは以下の2つを厳密に区別してリスナーを選択する必要があります。

  • 20.1.1.1:80 (Public)
  • 10.0.0.10:80 (Private)

そのため、Azureは受信トラフィックの宛先を従来の 「Application Gateway Subnet」 ではなく、「各フロントエンド IP (Frontend IP)」 ベースで評価するよう仕様が変化します。

Microsoft公式の見解
アクティブなパブリックおよびプライベート リスナーを同じポート番号で構成すると、Application Gateway は受信フローの宛先をフロントエンド IP として扱います。

結果として、サブネット宛ての許可ルールだけではAzure側の検証をパスできず、前述のエラーが発生してしまいます。


3. 必要となる具体的なNSGルール

上記仕様変更に伴い、NSGにはサブネット宛てとは別に、個別のフロントエンドIP宛ての許可ルールを追加する必要があります。

例として、以下のIP・ポートを使用している場合の追加設定を示します。

  • Public Frontend: 20.1.1.1
  • Private Frontend: 10.0.0.10
  • 共通ポート: 80

① Public Frontend 用のルール

項目 設定値
Direction Inbound
Source Any
Destination 20.1.1.1 (パブリックIP)
Protocol TCP
Port 80
Action Allow

② Private Frontend 用のルール

項目 設定値
Direction Inbound
Source Any
Destination 10.0.0.10 (プライベートIP)
Protocol TCP
Port 80
Action Allow

4. よくある誤解と注意点

💡 注意点1:従来の「サブネット宛てルール」は削除してもいいのか?

答えは No です。
既存の Destination = Application Gateway Subnet のルールは削除せず、そのまま残しておく必要があります。今回必要になるのは、既存ルールの代替ではなく「追加要件」です。

💡 注意点2:「ポートを共有していないリスナー」への影響

もう一つハマりやすいポイントとして、一部のポート(例: 80)だけでPublic/Privateの共有を行っていたとしても、同じApp Gateway内に一度でも「Public + Private + 同一ポート」の組み合わせが存在するだけで、App Gateway全体がフロントエンドIPベースでの検証に切り替わります。

そのため、80番ポートを共有したことで、共有していない他のポート(例: 443など)についても、Frontend IP宛ての許可ルールを求められるケースがあるため注意してください。


まとめ

Application GatewayでPublic ListenerとPrivate Listenerに同じポート番号を使用する場合のチェックリストです。

  1. 現象: 構成変更時に Failed to save application gateway changes エラーが発生する。
  2. 原因: 同一ポートの共有により、NSGの宛先評価が「サブネット」から「各フロントエンドIP」に変わるため。
  3. 対策: NSGに Destination = Public Frontend IP および Destination = Private Frontend IP の受信許可ルールを追加する。

App Gatewayの設計やスケール変更時にNSGの競合エラーが出たら、まずはNSGの宛先がサブネット単位になっていないか、フロントエンドIP単位のルールが必要になっていないかを確認しましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?