ハイブリッド NAT

Private NAT の一種であるハイブリッド NAT を使用すると、Virtual Private Cloud(VPC)ネットワークとオンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークとの間でネットワーク アドレス変換(NAT)を実行できます。Google Cloud 以外のネットワークは、 Google Cloudの Cloud InterconnectCloud VPN などの 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 アドレス範囲を指定します。

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

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

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

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

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

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

  • vpc-apvt-nat-gw ゲートウェイは、us-east1 リージョンの subnet-a のすべての IP アドレス範囲に適用されるように構成されています。
  • 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 から更新をダウンロードする必要があります。VPC ネットワークは、Cloud Interconnect を介してオンプレミス ネットワークまたは他のクラウド プロバイダ ネットワークに接続しています。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 ルールを作成します。
  • この Private NAT ゲートウェイを、subnet-a のすべての IP アドレス範囲に適用されるように構成します。

ハイブリッド 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、変更なし

次のステップ