Virtual Network NAT

このエントリは2020/03/13現在の情報に基づいています。将来の機能追加・変更に伴い、記載内容との乖離が発生する可能性があります。

AzureでVirtual Network NATが一般提供された。Azure全リージョンで利用可能。

基本的な内容は以下のドキュメントに記載されている通り。

Virtual Network NATとは / What is Virtual Network NAT?
https://docs.microsoft.com/azure/virtual-network/nat-overview
NAT ゲートウェイ リソースを使用した仮想ネットワークの設計 / Designing virtual networks with NAT gateway resources
https://docs.microsoft.com/azure/virtual-network/nat-gateway-resource

特長

  • フルマネージドで自動的にスケールアウト
  • 複数の障害ドメインを常に有する
  • リージョナルサービス
    • 可用性ゾーン (Availability Zones) を利用する場合、NATを特定のゾーンに分離できる(ゾーンへのデプロイメント)。
  • SLAはNAT のデータ パスの可用性が 99.9% 以上
Azure PortalのNATゲートウェイの設定画面
  • Azure Monitorで公開される以下の多次元メトリックを使ってNATを監視できる
    • Bytes
    • Packets
    • Dropped Packets
    • Total SNAT connections
    • SNAT connection state transitions per interval
  • 以下のリソースと組み合わせて利用できる(いずれもStandard SKUのみ)
    • Load Balancer
    • Public IP
    • Public IP Prefix

ユースケース

以下のユースケースが考えられる。

  • 静的なIPアドレスを使ったアウトバウンド接続
  • 複数のIPアドレスを使ってスケールできるオンデマンドSNAT
  • インバウンド、アウトバウンドの共存(下図)
    • インバウンドはLoad Balancer
    • アウトバウンドはNAT

NAT設計時に注意すべきこと

コストの最適化

コストの最適化 / Cost optimization
https://docs.microsoft.com/azure/virtual-network/nat-gateway-resource#cost-optimization

NATを使わない条件下では、コスト最適化のためにサービスエンドポイントもしくはプライベートリンクを利用するという選択肢がある。以下の点を考慮して利用を検討すべき。

  • 共通すること
    • NATではサービスエンドポイントもしくはプライベートリンクへのトラフィックを処理しない
  • サービスエンドポイント
    • AzureサービスとVNetを接続し、Azureサービスへのアクセスを管理
    • 無償
  • プライベートリンク
    • Azure PaaSサービスやプライベートリンクを使ってホストされている他のサービスをVNet内のプライベートエンドポイントとして公開
    • 期間、処理データ量に応じて課金

可用性ゾーン

可用性ゾーン / Availability zones
https://docs.microsoft.com/azure/virtual-network/nat-gateway-resource#availability-zones

  • 可用性ゾーンにNATを構成する場合、ゾーンに配置したNAT Gatewayには当該ゾーンのIPアドレスが必要(異なるゾーンのIPアドレスやIPアドレスなしの構成はサポート外)
  • VNetやサブネットはリージョナルサービスであってゾーンと一致しない。アウトバウンド接続をゾーンで限定する場合、VMはNAT Gatewayが存在するゾーンになければならない。
  • ゾーン分離は可用性ゾーンごとにゾーンスタックを作成して実現する
  • ゾーンに配置したNAT Gatewayのゾーンを横断する、もしくはリージョナルNAT GatewayをゾーンVMとともに利用する場合、アウトバウンド接続のゾーンごとのプロミスは存在しない。
  • VMSSをデプロイしてNATとともに利用する場合
    • 1個のゾーンに配置したVMSSを独自のサブネットにデプロイし、同じゾーンのNAT Gatewayをそのサブネットにアタッチする。
    • ゾーンを跨ぐVMSSを使う場合、NAT Gatewayはゾーン冗長をサポートしていないためリージョナルもしくはゾーン分離されたもののみの利用がサポートされる(下図)
  • ゾーンのプロパティはImmutable
    • 意図したリージョンやゾーンに合わせてNAT Gatewayをデプロイする必要がある。
    • 間違えた場合は削除の上再デプロイ。
  • IPアドレスとゾーン指定の関係
    • ゾーン指定されていない場合、IPアドレスはゾーン冗長ではない
    • Standard Load Balancerの場合、NATとは異なり、IPアドレスが特定ゾーンに作成されていない場合にはゾーン冗長(NATはゾーン分離もしくはリージョナルのみサポート対象)

その他の注意点

ドキュメントに記載の通り、以下の点に注意が必要。

  • Basic SKUのPublic IP、Public IP Prefix、Load BalancerはNATと組み合わせて利用できない。
  • IPv4アドレスファミリーのみサポート(IPv6はサポート外)
  • サブネットやNICのNSG (Network Security Gateway) は、NATを使うPublic endpointへのアウトバウンドフローで使用されない。
  • NAT利用時、NSGフローのロギングはサポートされない
  • 複数仮想ネットワーク (VNet) にまたがるNATは構成できない
  • アイドルタイムアウトはデフォルトで4分(最大120分まで設定可能)。
  • SNATポートリリースにあたって以下のタイマーを利用する(今後の変更の可能性あり)
    • TCP FIN : 60秒
    • TCP RST : 10秒
    • TCP half open : 30秒

チュートリアルなど

チュートリアル通りに実施すると、Source側でheyを実行した結果は以下のようになるはず。

対して、Destination側でnetstat -natを実行すると、Source IPがNAT Gatewayに割り当てたIP(Address、Prefix)であることを確認できる。

なお前述の通り、チュートリアルを東日本リージョンで実施するときは、可用性ゾーンに注意が必要。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中