このエントリは2023/05/13現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容からの乖離が発生する可能性があります。
問い合わせ
全くお初の方から、以下のような問い合わせが届いた。
現在Azure Front DoorとApp Serviceを組み合わせて外部公開用Webを作成中である。開発チームからはApp Serviceへの直接アクセスならびにその前段のFront Door経由でもアクセスできるが、別のチームからはApp Serviceにアクセスできる場合とできない場合がある。なお、いずれのチームからもApp ServiceのFQDNの名前解決はできている。
もやっとする説明だったので、ネットワークトポロジーを確認した。どうやら以下のよう。Team-B(青の点線)からはアクセスできない、とのこと。Front DoorからApp Serviceの接続にあたってPrivate Linkを構成していて、Publicアクセスを拒否しているらしい。
【注意】
以前は、Private Endpoint/Linkで接続するとPublicアクセスは自動的に拒否されたのだが、現在では明示的に拒否しない限り、Publicアクセスは許可されたまま残るので注意が必要。

原因
Team-AではDHCPで配布されている社内のDNSを使っていたが、Team-BではパブリックDNSを明示的に指定して使っていたことが原因。どうもTeam-Bの面々はWork from homeが主流ゆえ、DNSの設定を明示的に指定していた。
この結果、インターネット経由と思っていながら、Team-AはPrivate Endpoint経由でApp Serviceにアクセスし、Team-BはパブリックDNSによる名前解決でApp ServiceのPublic IPを引いてしまい、結果としてアクセスができなかった。
これはAzure Networkについてある程度知っていればすぐにわかるかもしれない。

どういうことか?
まずルート広報について。ExpressRouteでオンプレミスと接続している場合、BGP advertisementによりルートを交換する。ただのVPNだと、BGPを有効にしていればルートは交換されるが、P2S接続だと別途、以下のドキュメントにあるような設定が必要。
P2S VPN クライアント用のカスタム ルートをアドバタイズする / Advertise custom routes for P2S VPN clients
https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-p2s-advertise-custom-routes
つづいてDNSについて。この組織では、AzureのPrivate DNSへの名前解決はPrivate DNS Resolverを使って解決するように構成されていた。そのため、Team-Aでは社内のDNSを使いつつ、Azure NetworkのPrivate Endpointの名前解決もできていた。
Azure DNS Private Resolver とは / What is Azure DNS Private Resolver?
https://learn.microsoft.com/azure/dns/dns-private-resolver-overview
対して、Public DNSを使っているTeam-Bでは、App ServiceのFQDNの名前解決をすると、当然ながらPublic IPを返す。そのため、Public AccessをブロックしているApp Serviceにはアクセスできなかった、というわけ。
対処法
原因に書いた通りなので、Team-BのクライアントPCのDNS設定を変更してもらった。その結果、問題なくTeam-Bからもアクセスができるようになった。