このエントリは2023/03/20現在の情報に基づいています。将来の機能追加や変更により、記載内容からの乖離が発生する可能性があります。
先日以下のようなPublic Previewがこっそり発表されていた。
フロントエンド ポートを関連付けます。 既存のポートを選択するか、新しいポートを作成できます。 許可されているポート範囲から任意の値を選択します。 80 や 443 などの一般的なポートだけではなく、許可されている適切なカスタム ポートを使用できます。 パブリック リスナーとプライベート リスナーに同じポートを使用できます (プレビュー機能)。
フロントエンド ポート / Frontend Port
Associate a frontend port. You can select an existing port or create a new one. Choose any value from the allowed range of ports. You can use not only well-known ports, such as 80 and 443, but any allowed custom port that’s suitable. The same port can be used for public and private listeners (Preview feature).
https://learn.microsoft.com/azure/application-gateway/configuration-listeners#frontend-port
ということで、簡単に動作確認してみる。用意するのはこちら。
- Application gateway (v2)
- 付随するりソースとして以下を利用
- Public IP
- 付随するりソースとして以下を利用
- App Service
- 今回は動作確認が目的なので、B1を使う
- Private Endpoint、VNet Integrationを構成
- Public Accessは禁止しておく
- 今回は特に何もデプロイせず、IISが返すページの表示をもってアクセスを確認する。
- VNet
- Subnetは以下の4個 (Bastionを使うなら5個)
- Application Gateway用のSubnet
- VNet Integration用のSubnet
- Private Endpoint用のSubnet
- 動作確認用VMのSubnet
- Subnetは以下の4個 (Bastionを使うなら5個)
- VM
- ただのPrivate IPからの動作確認用。SKUは何でもよい。
Listenerは通常と同様、Application gatewayをふつうに構成する。Listenerは以下のように、同じポートに対してPrivate/Public両方で構成できる。

動作確認
まず、Public IPからの動作確認。
App Serviceへの直接アクセスは、Public Accessを抑止しているので、当然403が返る。

Application Gatewayを経由すれば閲覧できる。ここまでは特に何も問題ない。

続いてPrivate IPからのアクセス。
Application Gatewayを経由する場合だと、当然ながらアクセスできる。

同一VNetでPrivate Endpointを構成しているので、 (Private DNS ZoneやhostsでFQDNとPrivate IPを関連付けていれば) App ServiceのFQDNでもアクセスできる。

VMが存在するVNetからのアクセスをApplication Gateway経由のみに制限したい、ということなら、一つの方法としてVNetを分離し、Private LinkでApplication gatewayに接続する、ということもできる。なお、これもPublic Preview。
Application Gateway Private Link (プレビュー) / Application Gateway Private Link (preview)
https://learn.microsoft.com/ja-jp/azure/application-gateway/private-link
Azure Application Gateway の Private Link を構成する (プレビュー) / Configure Azure Application Gateway Private Link (preview)
https://learn.microsoft.com/azure/application-gateway/private-link-configure
トポロジーはこちら。明記不要なものは排除しているが、Private Link Serviceの作成 (Frontend IPはPrivate IPを利用) と、作成したPrivate Link Serviceを指すようにPrivate Endpointを構成するぐらいである。

これで、VM側のPrivate IPでアクセスできる。

もし、Private DNS Zoneを構成していれば、当然ながらFQDNでアクセスすることもできる。

まとめ
ようやくPrivate/Publicで共通のポートを利用できるようになった(次はPrivateだけでもPublic IPが必要になる制約がなくなることを期待しましょう)。