はじめに
サポートの方にきいてみた
Web App からのアウトバウンド通信の送信元 IP を固定化する方法について
NATゲートウェイを使用する以外に方法があるのでしょうか?
公式のおすすめ
NAT Gatewayを利用してアウトバウンドIPを固定化
仮想ネットワーク NAT ゲートウェイを使用して、静的パブリック IP アドレス経由でトラフィックを送信すると、アプリからの送信トラフィックの IP アドレスを制御できます。 リージョン VNet 統合は、Standard、Premium、PremiumV2 および PremiumV3 App Service プランのみで使用できます。 このセットアップの詳細については、NAT ゲートウェイの統合に関するページを参照してください。
やり方を適当に説明
用意するリソース
- AppServiceプラン(VNet統合できる、Standard、Premium、PremiumV2 および PremiumV3のいずれか)
- AppService
- NAT Gateway
- PublicIP
- VNet
- 1つのサブネット
- NAT GatewayにPublicIPを紐づける
- サブネットにNAT Gatewayを紐づける
- AppServiceをVNet統合する
- 用意したサブネットに紐づける
- この時、必ず「ルート全て」設定をONにする(参考: アプリケーション ルーティング)
- じゃないとアウトバウンド通信全てがSNATされず、IP固定化できない通信が発生する
一応他の方法もあるらしい
理論上は NAT Gateway の代わりに NVA (仮想ネットワークアプライアンス) で SNAT を実施することで、送信元 IP を固定できるらしい。
(構成例)
App Service ---> VNet ---> NVA ---> Internet
現時点(2022/12)で上記構成は公開されている情報はなく、Azureサポートもおすすめはしてないみたい。
「特別な理由がない限りは、NAT Gateway と組み合わせて送信元 IP を固定化する方法をご検討いただければと存じます。」ですって。
公式で明言されていない以上、動作確認や性能テストは自分達で全て担保する必要があるので、やるメリットは少なそう。
NAT Gatewayを使うデメリット
ゾーン冗長化できない
NAT Gatewayはゾーン冗長に対応しておらず、特定アベイラビリティゾーンへのデプロイとなってしまう。
しかし、サブネットに紐づけられるNAT Gatewayは1つだけ。
つまり、NAT Gatewayをデプロイしたアベイラビリティゾーンで障害が発生した場合、AppServiceプランがゾーン冗長化されていようとも、もろとも影響を受けてしまう。
フィードバックも上がってるみたいなので、いずれ改善されるかもしれません。望み薄。
ちなみにPublicIPも冗長化に対応してる。あとはNAT Gatewayだけ。