Azure Load Balancer 仕様について

構成

①クライアント → ②Azure LB(内部) → ③ WEBサーバ(複数台)

Azure LBで①②の間のTCPセッションは終端するか

Azure Load Balancer は TCP セッションを終端しません。
下記公開文書にも記載されています。。

(参考)
Azure Load Balancer のアルゴリズム | Microsoft Learn
https://learn.microsoft.com/ja-jp/azure/load-balancer/concepts
————————————-
(抜粋)
Azure Load Balancer は任意の TCP/UDP アプリケーション シナリオをサポートしており、フローを閉じたり、開始したりはしません。 
ロード バランサーはまた、どのフローのペイロードとも対話しません。 アプリケーション ペイロードはロード バランサーに対して透過的です。 
————————————-

②→③のタイミングで、②にてAzure LBのIPにソースNAT変換されるか

変換されません。

Azure Load Balancer はフロントエンド IP に受信した通信をバックエンドプールに送信する際、ソース NAT 変換はされません。また、(設定などによって)ソースNAT変換するようにすることもできません。

③→①への戻り通信について

②→③のタイミングでAzure LBのIPにソースNAT変換されないのであれば、③→①への戻り通信が、(ルーティング設定によっては)Azure LBを経由しないケースも出てくるのではないでしょうか。

疑問に思ったので確認してみました。

必ず②を経由する

Azure ロードバランサーは SDN 機能を用いてトラフィック分散とアドレス変換が実現されています。実際Azureロードバランサーを利用する上で意識する必要はありませんが、Azureロードバランサーは双方向の通信をチェックしてセッションを維持しています。

特別な設定しなくても、戻り通信はロードバランサー( 処理を行うホスト上の SDN 機能 )を経由します。

では、③のサブネットにAzure LBを経由しないようなUDRを設定した場合でも、Azure LBを経由するのか

たとえば、②と③のサブネットが別の場合で、③のサブネットにUDR(①向けの通信のネクストホップをGWに向けるような内容)が設定されていた場合、通常(オンプレ)のルーティングの考えで行くと、戻り通信については、②Azure LBを経由しなくなると思いますが、Azure の場合はどうなるのでしょうか? MSサポートに確認してみました。

以下が、MSサポート回答となりますが、戻り通信がAzure LBを経由するという明確な記載はありませんでしたが、通信自体は問題なく成立するとのことでした(クライアントに到達する戻りパケットの送信元アドレスもAzure LBの仮想IPアドレス(クライアントからの行きの通信で、宛先アドレスにセットされているアドレス)がセットされるようです)

(MSサポート回答)

———————————————————————————————

今回、下記の構成をご想定と理解しております。

ご想定構成

Client — (ER) — MSEE — ERGW — NVA — ILB( 内部ロードバランサー ) — VMs( サーバ )

今回、VM が存在するサブネットにクライアント向け経路のネクストホップ NVA としたユーザ定義ルートを設定した場合に、サーバ → クライアントへの戻り通信が正常に到達するかについてのご質問と理解しております。

この設定でも問題なく client — NVA — ILB — VM の通信は成立いたします。

ご懸念の戻り通信でございますが、VM から送信するパケットは送信元アドレスにILB 仮想 IP アドレスがセットされて NVA に到達します。

そのため、ILB とUDR を組み合わせた構成であっても通信は可能でございます。

———————————————————————————————