エイリアス IP 範囲

Google Cloud のエイリアス IP 範囲を使用すると、仮想マシン(VM)のネットワーク インターフェースに内部 IP アドレスの範囲をエイリアスとして割り当てることができます。VM で複数のサービスを実行している場合、各サービスに異なる IP アドレスを割り当てると便利です。エイリアス IP 範囲は GKE Pod でも動作します。

VM で実行しているサービスが 1 つだけの場合は、インターフェースのプライマリ IP アドレスを使用してそのサービスを参照できます。VM で実行しているサービスが複数ある場合は、サービスごとに異なる内部 IP を割り当てることができます。これにはエイリアス IP 範囲を使用します。

サブネットのプライマリおよびセカンダリ CIDR 範囲

すべてのサブネットにプライマリ CIDR 範囲があります。これは、サブネットを定義する内部 IP アドレスの範囲です。各 VM インスタンスは、この範囲からプライマリ内部 IP アドレスを取得します。プライマリ範囲からエイリアス IP 範囲を割り当てることも、サブネットにセカンダリ範囲を追加して、セカンダリ範囲からエイリアス IP 範囲を割り当てることもできます。エイリアス IP 範囲を使用するうえで、セカンダリ サブネット範囲は必須ではありません。これらのセカンダリ サブネット範囲は編成のためのツールにすぎません。

VM ネットワーク インターフェースに定義されたエイリアス IP 範囲

IP エイリアス設定を使用すると、独立したネットワーク インターフェースを定義せずに、VM にホストされているコンテナまたはアプリケーションを表す複数の内部 IP アドレスを構成できます。VM にエイリアス IP 範囲を割り当てる際は、サブネットのプライマリ範囲またはセカンダリ範囲のいずれかから割り当てます。

エイリアス IP 範囲を構成するでは、セカンダリ範囲を使用してサブネットを設定するコマンドと、エイリアス IP アドレスを VM に割り当てるコマンドを説明します。

以下の図には、基本的なプライマリおよびセカンダリ CIDR 範囲と、VM のプライマリ インターフェースの VM エイリアス IP 範囲が示されています。

プライマリ / セカンダリ CIDR 範囲と VM エイリアス IP 範囲。
プライマリ / セカンダリ CIDR 範囲と VM エイリアス IP 範囲(クリックして拡大)
  • プライマリ CIDR 範囲 10.1.0.0/16 はサブネットの一部として構成されています。
  • セカンダリ CIDR 範囲 10.2.0.0/20 はサブネットの一部として構成されています。
  • VM プライマリ IP 10.1.0.2 はプライマリ CIDR 範囲 10.1.0.0/16 から割り当てられ、エイリアス IP 範囲 10.2.1.0/24 はセカンダリ CIDR 範囲 10.2.0.0/20 から VM に割り当てられています。
  • エイリアス IP 範囲のアドレスは、VM でホストされているコンテナの IP アドレスとして使用されています。

エイリアス IP 範囲の主な利点

エイリアス IP 範囲が構成されると、Google Cloud はプライマリ ネットワーク インターフェースのプライマリ範囲およびエイリアス IP 範囲の Virtual Private Cloud(VPC)ネットワーク ルートを自動的にインストールします。コンテナのオーケストレーターで、これらのルートの VPC ネットワーク接続を指定する必要はありません。これにより、トラフィックのルーティングとコンテナの管理が簡略化されます。構成は、エイリアス IP 範囲の主な特徴で説明されているように、ゲストで行う必要があります。

コンテナ IP アドレスが Google Cloud によって割り当てられるときに、Google Cloud の検証プロセスにより、コンテナ Pod IP アドレスが VM IP アドレスと競合しないことが確認されます。

エイリアス IP アドレスが構成されている場合、トラフィックに対してなりすまし対策チェックが行われ、VM を出るトラフィックが VM IP アドレスと Pod IP アドレスをソースアドレスとして使用していることが確認されます。なりすまし対策チェックでは、VM が任意のソース IP アドレスを使用してトラフィックを送信していないかが検証されます。コンテナ ネットワーキングに静的ルートを使用すると、コンテナホスト VM 上でなりすまし対策チェックを無効にする必要があるため、IP エイリアス設定と比較して安全性が低くなります(IP 転送が有効な場合、なりすまし対策チェックは無効になります)。

エイリアス IP 範囲は、追加のルートを使用しなくても、Google Cloud 仮想ネットワーク内でルーティングできます。IP エイリアスごとにルートを追加する必要はありません。また、ルートの割り当てを考慮する必要もありません。

エイリアス IP アドレスは、Cloud Router によって、VPN または Interconnect 経由で接続されたオンプレミス ネットワークに通知できます。

セカンダリ CIDR 範囲からエイリアス IP 範囲を割り当てることには利点があります。プライマリ IP アドレスに使用されている範囲とは別個の範囲から割り当てることで、インフラストラクチャ(VM)をサービス(コンテナ)から分離できます。インフラストラクチャとサービスに別個のアドレス スペースを構成すると、VM のプライマリ IP アドレスに対するファイアウォール制御とは分離された状態で、VM エイリアス IP アドレスに対するファイアウォール制御をセットアップできます。たとえば、コンテナ Pod に対する特定のトラフィックは許可し、VM のプライマリ IP アドレスに対する同様のトラフィックは拒否できます。

Google Cloud でのコンテナ アーキテクチャ

Google Cloud でコンテナ化されたサービスを構成する必要があるというシナリオを検討してみましょう。サービスをホストし、さらに追加でコンテナをホストする VM を作成する必要があるとします。

このシナリオでは、VPN 経由で接続されたオンプレミスとコンテナの間で送受信されるトラフィックをルーティングする必要があります。ただし、VPN を経由してプライマリ VM IP アドレスに到達できるようにしたくはありません。この構成を作成するには、VPN を介して、VM プライマリ IP 範囲ではなくコンテナ IP 範囲がルーティング可能になるようにする必要があります。VM の作成時に、コンテナに使用される IP アドレスプールが自動的に割り当てられるようにする必要もあります。

この構成を作成するには、以下のようにします。

  • サブネットを作成するとき、以下を構成します。
    • 1 つのプライマリ CIDR 範囲(たとえば、10.128.0.0/16
    • 1 つのセカンダリ CIDR 範囲(たとえば、172.16.0.0/16
  • インスタンス テンプレートを使用して VM を作成し、それぞれに対し以下を自動的に割り当てます。
    • 10.128.0.0/16 範囲にあるプライマリ IP
    • セカンダリ CIDR 172.16.0.0/16 スペースからのエイリアス範囲 /24(これにより /24 セカンダリ CIDR 範囲からの IP を VM 上の各ポッドに割り当てることができます)
  • 2 つのファイアウォール ルールを作成します。
    • オンプレミスから VPN を通過するトラフィックがサブネットのプライマリ CIDR 範囲に到達することを拒否するルール。
    • オンプレミスから VPN を通過するトラフィックがサブネットのセカンダリ CIDR 範囲に到達することを許可するルール。

例: エイリアス IP 範囲を使用したコンテナの構成

エイリアス IP 範囲を使用して、コンテナ IP アドレスをセカンダリ CIDR 範囲から割り振り、コンテナをホストしている VM 上のエイリアス IP アドレスとして構成できます。

エイリアス IP アドレスを使用したコンテナの構成
エイリアス IP アドレスを使用したコンテナの構成(クリックして拡大)

上記の構成を作成するには、以下のようにします。

  1. VM IP アドレスの割り振り元となる CIDR 範囲 10.128.0.0/16 とコンテナ専用に使用されるセカンダリ CIDR 範囲 172.16.0.0/20 でサブネットを作成します。後者はコンテナをホストしている VM でエイリアス IP 範囲として構成されます。

    gcloud compute networks subnets create subnet-a \
        --network network-a \
        --range 10.128.0.0/16 \
        --secondary-range container-range=172.16.0.0/20
    
  2. 範囲 10.128.0.0/16 のプライマリ IP と、VM のコンテナが使用するセカンダリ CIDR 範囲 172.16.0.0/20 のエイリアス IP 範囲 172.16.0.0/24 で VM を作成します。

    gcloud compute instances create vm1 [...] \
        --network-interface subnet=subnet-a,aliases=container-range:172.16.0.0/24
    gcloud compute instances create vm2 [...] \
        --network-interface subnet=subnet-a,aliases=container-range:172.16.1.0/24
    
  3. コンテナの IP アドレスは、Google Cloud でエイリアス IP アドレスとして構成されます。この設定で、プライマリ IP とエイリアス IP の両方に VPN トンネル経由で到達可能になります。Cloud Router が構成されている場合、自動的にセカンダリ サブネット範囲 172.16.0.0/20 がアドバタイズされます。VPN と Cloud Router の使用の詳細については、動的ルーティングを使用した VPN トンネルの作成をご覧ください。

この構成を作成するために使用するコマンドの詳細については、エイリアス IP アドレスと範囲を構成するをご覧ください。

例: 単一の VM インスタンスに構成された複数のエイリアス IP 範囲

エイリアス IP 範囲を使用すると、コンテナなど、VM 内で実行されるアプリケーションの IP 割り当てを管理できます。

VM 間で移行可能なコンテナと移行できないコンテナがあるデプロイがあるとします。移行可能なコンテナは /32 範囲を使用して構成できます。これにより、個別に移行することが容易になります。移行できないコンテナは、同時に存在するため、より広い範囲を使用して構成できます。

このような種類のデプロイでは、VM インスタンスごとに複数のエイリアス IP 範囲が必要な場合があります(移行できないコンテナに /27 を 1 つ、移行可能なコンテナに /32 を複数など)。

複数のエイリアス IP 範囲を持つ VM の構成。
複数のエイリアス IP 範囲を持つ VM の構成(クリックして拡大)

この例を構成するには、次の gcloud コマンドを使用します。

gcloud compute networks create vpc1 --subnet-mode custom
gcloud compute networks subnets create subnet1 --region us-central1 --network vpc1 --range 10.128.0.0/16 --secondary-range secondaryrange1=172.16.0.0/20
gcloud compute instances create vm1 --zone us-central1-a --network-interface "subnet=subnet1,aliases=secondaryrange1:172.16.0.0/27;secondaryrange1:172.16.1.0/32"
gcloud compute instances create vm2 --zone us-central1-a --network-interface "subnet=subnet1,aliases=secondaryrange1:172.16.0.32/27;secondaryrange1:172.16.1.1/32"

自動モード VPC ネットワークとサブネットのエイリアス IP アドレス

自動モードの VPC ネットワークで自動的に作成されるサブネットには、それぞれプライマリ CIDR 範囲が設定されますが、セカンダリ範囲は設定されません。自動モードの VPC ネットワークでエイリアス IP を使用する場合、自動作成されたサブネットのプライマリ CIDR 範囲からエイリアス IP 範囲を自動で割り振ることも、自動作成されたサブネットにセカンダリ範囲を追加して、この新しいセカンダリ範囲からエイリアス IP 範囲を割り振ることもできます。

また、自動モード VPC ネットワークで、セカンダリ範囲を持つ新しいサブネットを作成することもできます(ただし、範囲が 10.128.0.0/9 と重ならないようにします)。その後、新しいサブネットに VM インスタンスを作成し、そのサブネットの任意の範囲からエイリアス IP 範囲を割り振ることができます。

サブネットにセカンダリ範囲を追加する場合は、セカンダリ CIDR 範囲を既存のサブネットに追加するをご覧ください。

カスタムモードのネットワークとサブネットのエイリアス IP アドレス

カスタムモードのネットワークの場合:

  • すべてのサブネットは手動で作成されます。
  • 1 つのプライマリ CIDR 範囲は必須です。
  • 必要に応じて、セカンダリ CIDR 範囲を作成できます。

エイリアス IP 範囲の主なプロパティ

以下の特長は、VM で構成されたエイリアス IP 範囲に該当します。

  • VM OS の観点から、プライマリ IP アドレスとデフォルト ゲートウェイは通常、DHCP を使用して割り当てられます。エイリアス IP アドレスは VM OS(通常は Linux または Windows)に、手動またはスクリプトを使用することで構成できます。
  • インターフェースのプライマリ IP アドレスとエイリアス IP 範囲は、同じサブネットの一部として構成された CIDR 範囲から割り当てる必要があります。次の要件に注意してください。
    • プライマリ IP アドレスは、CIDR プライマリ範囲から割り当てる必要があります。
    • エイリアス IP 範囲は、プライマリ CIDR 範囲から割り当てることも、同じサブネットのセカンダリ CIDR 範囲から割り当てることもできます。
    • VM ネットワーク インターフェースの場合、エイリアス IP は、プライマリ ネットワーク インターフェースの IP アドレスを提供する同じサブネット リソースからのものである必要があります。他のサブネット リソースからプライマリまたはセカンダリ CIDR 範囲を選択することはできません。
    • プライマリ IP アドレスは、静的またはエフェメラルな内部 IP アドレスです。
    • エイリアス IP 範囲はオプションであり、自動的には追加されません。エイリアス IP 範囲は、インスタンスの作成中または変更中に構成できます。
    • エイリアス IP 範囲は、明示的な CIDR 範囲(10.128.1.0/24 など)、単一の IP アドレス(10.128.7.29/32 など)、またはネットマスク(/24)として構成できます。エイリアス IP 範囲は、完全に指定することも、ネットマスクを指定することで自動的に割り振ることもできます。
    • エイリアス IP 範囲で単一の IP アドレスを使用するには、/32 ネットマスクを使用します。
    • VPC ネットワーク内のすべてのサブネットは単一のデフォルト ゲートウェイを共有しているため、インターフェース内のすべてのエイリアス IP アドレスは、プライマリ IP アドレスと同じデフォルト ゲートウェイを共有します。
    • エイリアス IP 範囲では予約済み IP アドレスを使用できません。
インターフェース内のエイリアス IP は、プライマリ IP アドレスと同じデフォルト ゲートウェイを共有します。
インターフェース内のエイリアス IP はプライマリ IP アドレスと同じデフォルト ゲートウェイを共有(クリックして拡大)

エイリアス IP アドレスを使用する DNS

Google Cloud は、すべての VM インスタンスのプライマリ インターフェースのプライマリ IP で、内部 DNS を自動的に構成します。これにより、インスタンスのホスト名がプライマリ インターフェースのプライマリ IP アドレスに関連付けられます。ただし、そのホスト名に対する DNS ルックアップは、プライマリ インターフェースを含むネットワークでのみ機能します。

Google Cloud は他の IP アドレスとホスト名を自動的には関連付けません。Google Cloud では、プライマリ インターフェースのエイリアス IP アドレスをホスト名に関連付けず、セカンダリ インターフェースの IP アドレスもホスト名に関連付けません。

他の IP アドレスを関連付けるには、手動で DNS を構成します。

ファイアウォール

エイリアス IP 範囲のトラフィックを含むすべての上り(内向き)トラフィックまたは下り(外向き)トラフィックは、ターゲットタグまたはターゲット サービス アカウントが一致する VPC ファイアウォール ルールによって評価されます。ターゲットとエイリアス IP の詳細については、ターゲットと IP アドレスをご覧ください。

ソースタグまたはソースサービス アカウントを使用して上り(内向き)ファイアウォール ルールのソースを指定する場合、エイリアス IP 範囲は含まれません。

静的ルート

内部 IPv4 アドレスで指定されたネクストホップ インスタンスを使用する静的ルートを作成すると、Google Cloud は、ネクストホップ VM の IP アドレスが、ルートの VPC ネットワーク内のサブネットのサブネット IPv4 範囲内に収まることを確認します。ただし、Google Cloud は、ネクストホップ アドレスが(ピアリングされた VPC ネットワークではなく)ルートの VPC ネットワーク内の VM のネットワーク インターフェース(NIC)に割り振られているプライマリ内部 IPv4 アドレスである場合にのみ、ルートをプログラムします。

ネクストホップ アドレスがエイリアス IP 範囲に収まる内部 IPv4 アドレスであるルートを作成することはできますが、Google Cloud はそのルートをプログラムしません。Google Cloud は、ネクストホップがダウンしていると見なします。ルートの宛先に送信されたパケットは、まったく同じ宛先の他のルートが存在するかどうかや、それらのルートに実行中のネクストホップがあるかどうかによってドロップされる可能性があります。

詳しくは以下をご覧ください。

VPC ネットワーク ピアリング

VPC ネットワーク ピアリングを使用すると、2 つのネットワーク内の VM が内部のプライベート IP アドレスを使用して通信できるように、2 つの VPC ネットワークをピアリングできます。

ピアリングされたネットワーク内の VM インスタンスで、サブネットのプライマリ IP 範囲とセカンダリ IP 範囲の両方に到達できます。

ピアリングされたネットワーク間でサブネットの重複を確認することで、プライマリ範囲とセカンダリ範囲がピアリングされた範囲と重複しないようにします。

ネットワーク ピアリングでの IP エイリアス設定。
ネットワーク ピアリングでの IP エイリアス設定(クリックして拡大)

次のステップ