ハイブリッド NAT

Private NAT の一種であるハイブリッド NAT を使用すると、Virtual Private Cloud(VPC)ネットワークとオンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークの間でネットワーク アドレス変換(NAT)を実行できます。Google Cloud 以外のネットワークは、Cloud Interconnect または Cloud VPN のような Google Cloud の Network Connectivity プロダクトを使用して、VPC ネットワークに接続する必要があります。

仕様

一般的な Private NAT 仕様に加えて、ハイブリッド NAT には次の仕様があります。

  • ハイブリッド NAT を使用すると、通信ネットワークのサブネット IP アドレス範囲が重複している場合でも、VPC ネットワークはオンプレミス ネットワークや他のクラウド プロバイダ ネットワークと通信できます。type=PRIVATE の NAT 構成を使用すると、VPC ネットワークの重複のあるサブネットと重複しないサブネットの両方のリソースが、Google Cloud のネットワーク外の重複しないサブネットのリソースに接続できます。
  • ハイブリッド NAT を有効にするには、Google Cloud 以外のネットワークが動的ルートをアドバタイズして、VPC ネットワークがルートを学習して使用できるようにする必要があります。Cloud Router は、Cloud Interconnect、HA VPN、動的ルーティングが構成された Classic VPN などの Google Cloud の Network Connectivity プロダクトからこれらの動的ルートを学習します。これらの動的ルートの宛先は VPC ネットワーク外の IP アドレス範囲です。

    同様に、戻りトラフィックの場合、VPC ネットワークは、Cloud Router を使用して Private NAT サブネット ルートをアドバタイズする必要があります。このサブネット ルートは、接続されたネットワークの既存のサブネットと重複しないようにする必要があります。

  • ハイブリッド NAT は、VPC ネットワークから発するオンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークへのトラフィックに対して NAT を実行します。ネットワークは、Cloud Interconnect または Cloud VPN によって接続されている必要があります。

  • ハイブリッド NAT は、動的ルーティングが有効になっている場合にのみ、既存の Classic VPN トンネルをサポートします。

  • 一致式 nexthop.is_hybrid を使用してカスタム NAT ルールを作成する必要があります。NAT ルールは、VPC ネットワーク内のリソースが他のネットワークとの通信に使用できる、目的が PRIVATE_NAT のサブネット内の NAT IP アドレス範囲を指定します。

  • Hybrid NAT を構成する Cloud Router は、VPC ネットワークと同じリージョンに存在する必要があります。

  • ハイブリッド NAT を構成する Cloud Router に、他の NAT 構成を含めることはできません。

基本的なハイブリッド NAT の構成とワークフロー

次の図は、基本的なハイブリッド NAT 構成を示しています。

ハイブリッド NAT 変換の例。
ハイブリッド NAT 変換の例(クリックして拡大)。

この例では、ハイブリッド NAT が次のように設定されています。

  • pvt-nat-gw ゲートウェイは、us-east1 リージョンの subnet-a のすべての IP アドレス範囲に適用されるように vpc-a で構成されています。
  • Cloud Router と、オンプレミスまたは他のクラウド プロバイダのルーターは、次のサブネット ルートを交換します。
    • Cloud Router は 10.1.2.0/29 を外部ルーターにアドバタイズします。
    • 外部ルーターは 192.168.2.0/24 を Cloud Router にアドバタイズします。
  • pvt-nat-gw の NAT IP アドレス範囲を使用することで、vpc-asubnet-a にある仮想マシン(VM)インスタンスは、vpc-asubnet-a が Google Cloud 以外のネットワーク内の別のサブネットと重複していても、オンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークの subnet-b にある VM にトラフィックを送信できます。

ハイブリッド NAT ワークフローの例

上の図では、vpc-asubnet-a 内の内部 IP アドレス 192.168.1.2 を持つ vm-a は、オンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークの subnet-b 内の IP アドレス 192.168.2.2 を持つ vm-b から更新をダウンロードする必要があります。Cloud Interconnect は、VPC ネットワークをオンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークに接続します。Google Cloud 以外のネットワークに、vpc-a のサブネットと重複する別のサブネット 192.168.1.0/24 が存在するとします。vpc-asubnet-a が Google Cloud 以外のネットワークの subnet-b と通信するには、vpc-a で Private NAT ゲートウェイ pvt-nat-gw を構成する必要があります。次のように指定します。

  • 目的が PRIVATE_NAT の Private NAT サブネットを指定します(例: 10.1.2.0/29)。Private NAT ゲートウェイを構成する前に、このサブネットを作成します。このサブネットが、接続されたどのネットワークでも既存のサブネットと重複しないようにしてください。
  • match='nexthop.is_hybrid' で NAT ルールを作成します。
  • subnet-a のすべての IP アドレス範囲に適用するように Private NAT ゲートウェイを構成します。

ハイブリッド NAT は、ポート予約手順に沿って、ネットワーク内の各 VM に NAT の送信元 IP アドレスと送信元ポートのタプルを予約します。たとえば、Private NAT ゲートウェイは、vm-a 用に 64 の送信元ポート(10.1.2.2:34000 から 10.1.2.2:34063)を予約します。

VM が TCP プロトコルを使用して、宛先ポート 80 で更新サーバー 192.168.2.2 にパケットを送信すると、次のようになります。

  1. VM が次の属性のリクエスト パケットを送信します。

    • 送信元 IP アドレス: 192.168.1.2、VM の内部 IP アドレス
    • 送信元ポート: 24000、VM のオペレーティング システムによって選択されたエフェメラル送信元ポート
    • 宛先アドレス: 192.168.2.2、更新サーバーの IP アドレス
    • 宛先ポート: 80、更新サーバーへの HTTP トラフィックの宛先ポート
    • プロトコル: TCP
  2. pvt-nat-gw ゲートウェイは、下り(外向き)で送信元ネットワーク アドレス変換(SNAT または送信元 NAT)を実行し、リクエスト パケットの NAT 送信元 IP アドレスと送信元ポートを書き換えます。

    • NAT 送信元 IP アドレス: 10.1.2.2、VM の予約済み NAT 送信元 IP アドレスと送信元ポートのタプルの 1 つ
    • 送信元ポート: 34022、VM の予約済み送信元ポートタプルの未使用の送信元ポート
    • 宛先アドレス: 192.168.2.2、変更なし
    • 宛先ポート: 80、変更なし
    • プロトコル: TCP、変更なし
  3. 更新サーバーは、次の属性の pvt-nat-gw ゲートウェイに到着するレスポンス パケットを送信します。

    • 送信元 IP アドレス: 192.168.2.2、更新サーバーの内部 IP アドレス
    • 送信元ポート: 80、更新サーバーからの HTTP レスポンス
    • 宛先アドレス: 10.1.2.2、リクエスト パケットの元の NAT 送信元 IP アドレスと一致
    • 宛先ポート: 34022、リクエスト パケットの送信元ポートと一致
    • プロトコル: TCP、変更なし
  4. pvt-nat-gw ゲートウェイは、レスポンス パケットに宛先ネットワーク アドレス変換(DNAT)を実行し、パケットが次の属性を使用して更新をリクエストした VM に配信されるように、レスポンス パケットの宛先アドレスと宛先ポートを書き換えます。

    • 送信元 IP アドレス: 192.168.2.2、変更なし
    • 送信元ポート: 80、変更なし
    • 宛先アドレス: 192.168.1.2、VM の内部 IP アドレス
    • 宛先ポート: 24000、リクエスト パケットの元のエフェメラル送信元ポートと一致
    • プロトコル: TCP、変更なし

次のステップ