Load Balancer Outbound Rulesを理解するための前提
Outbound ruleはpublic Standard Load Balancer frontend IPを使ってbackend poolのoutbound SNATを明示定義する機能。 現在のMicrosoft guidanceではproduction-grade outboundの第一選択はNAT Gateway。LB outbound ruleは利用可能だが大規模SNATには第一候補ではない。
NAT Gatewayをsubnetへ関連付けるとLB outbound rule等よりoutbound precedenceが高く、新規flowはNAT Gatewayを使う。 outbound ruleはTCP/UDPを扱い、1 frontend IPあたり利用可能ephemeral port上限は64,000。SNAT port exhaustionをcapacityとして設計する。
inbound load-balancing ruleのautomatic outbound SNATをoutbound ruleで制御する場合、disableOutboundSnatを明示する。 internal Standard Load Balancer単体はInternet egressを自動提供しない。NAT Gatewayや別public LB outbound等のexplicit egressが必要。
Control plane / Data plane / Observability
VIP→backendのload-balancing rule。
backend→InternetのSNAT。inbound successとは独立。
大規模/新規productionはNAT Gatewayを先に比較する。
Client-to-backend path
- backend VMがInternet destinationへnew outbound flowを開始する。
- Azureがsubnet/NICのexplicit outbound method precedenceを評価する。
- NAT Gatewayがあれば通常それが優先される。なければLB outbound rule等を評価する。
- LB outbound ruleではfrontend public IPとallocated SNAT portへsourceを変換する。
- Internet responseをstateful mappingでbackend private IP/portへ戻す。
- idle timeout/port reuse/flow volumeによりSNAT capacityが消費・解放される。
仕組みを分解する
LBがinboundで正常だからegressも正常、という推論は成立しません。outboundではSNAT port allocationとexplicit outbound methodが中心です。connection timeoutが増えた場合はDNSやNSGだけでなく、SNAT port usage、destinationごとのconnection churn、idle timeout、NAT Gateway有無を確認します。
運用時はresource configurationだけで完了判定せず、実clientからの名前解決、TCP/TLS handshake、HTTP status、backend側のsource IP/Host/header、health telemetryを同じtimestampで揃えます。load balancer/proxyがhealthyでもapplication dependencyが壊れている場合があり、逆にbackend applicationが正常でもhealth probe条件やrouting ruleが不整合ならtrafficは到達しません。
設計判断
| 判断軸 | 設計方針 |
|---|---|
| 新規production | NAT Gatewayを基準点にする。LB outbound ruleを選ぶなら理由とSNAT capacityを記録する。 |
| Public IP allowlist | 固定egress IPが必要ならNAT Gateway public IP/prefixまたはLB frontendを明示し、変更手順を管理する。 |
| SNAT ports | backend最大台数と同時connection数からports per instanceを設計し、scale-out時の取り分を確認する。 |
| Idle timeout | 長時間connectionはkeepalive/retry behaviorと合わせる。 |
確認手順
Read-only verification
- backend subnetにNAT Gatewayが付いていないか最初に確認する。
- LB outbound ruleのfrontend/backend pool/protocol/idle timeout/port allocationを確認する。
- backendから外部echo service等へ接続し、実際のsource public IPを記録する。
- SNAT関連metrics/logとapplication timeout率を同時間帯で相関する。
Evidence to keep
- resource ID / subscription / region / frontend / backend targetを保存し、同名resource取り違えを防ぐ。
- DNS answer、source IP、destination IP/port、Host/SNI、health status、timestampを同じincident recordへ残す。
- 変更前後で同じclient journeyをnew connectionとして再実行する。
- Portal表示だけでなくCLI/PowerShell/APIまたはlogsを併用し、観測面の一時差を識別する。
az network lb outbound-rule list -g <rg> --lb-name <lb> -o jsonc
az network nat gateway list -g <rg> -o table
az network vnet subnet show -g <rg> --vnet-name <vnet> -n <subnet> --query "{nat:natGateway.id,defaultOutbound:defaultOutboundAccess}" -o jsonc(Get-AzLoadBalancer -ResourceGroupName <rg> -Name <lb>).OutboundRules | Format-List *
Get-AzNatGateway -ResourceGroupName <rg>
障害切り分け
| 症状 | 第一候補 | 証拠 | 次の確認 |
|---|---|---|---|
| Internetへ出られない | explicit egressなし | subnet/NIC outbound config | NAT Gateway等を確認 |
| 断続timeout | SNAT port exhaustion | SNAT metrics/connection count | NAT Gateway/port allocation見直し |
| 想定外public IP | method precedence | NAT Gateway/ILPIP/LB rule | actual egress IP照合 |
| outbound rule作成失敗 | automatic SNAT競合 | disableOutboundSnat | inbound rule設定確認 |
| 一部protocolのみ失敗 | protocol設定 | outbound rule protocol | All/TCP/UDPを要件確認 |
変更時の確認と rollback
- egress public IP/prefixとallowlist影響を記録してから変更する。
- NAT Gateway追加時は既存flowが旧pathを継続し、新規flowが新pathになる点を踏まえて検証する。
- port allocation変更前後のconnection数/timeout率を保存する。
- rollbackはsource public IPとnew outbound flowの両方で確認する。
Current notes — 2026-09-11
2026年のMicrosoft guidanceはNAT Gatewayをoutbound connectivityの推奨方式として最上位に置いている。2026-03-31以降、新規VNetはprivate subnet既定でdefault outbound accessを前提にしない。
Related articles
Official sources
動作、retirement、feature availability、health/TLS behaviorはMicrosoft Learnのcurrent documentationを基準に確認しています。production変更時は対象subscription/region/SKUの最新documentationとresource provider stateを再確認してください。