このページでは、Virtual Private Cloud(VPC)ネットワークで静的内部 IPv4 または IPv6 アドレスを構成して管理する方法について説明します。
変更されない固定内部 IP アドレスが仮想マシン(VM)インスタンスに必要な場合、次のいずれかのオプションを使用して VM の静的内部 IP アドレスを取得できます。
- 新しい静的内部 IP アドレスを予約して、VM の作成時にアドレスを割り当てます。
- エフェメラル内部 IP アドレスを昇格し、静的内部 IP アドレスにします。
セカンダリ内部 IP アドレスの管理方法については、エイリアス IP 範囲をご覧ください。
Compute Engine では、各 VM インスタンスが複数のネットワーク インターフェースを持つことができます。各インターフェースには、1 つの外部 IP アドレス、1 つのプライマリ内部 IP アドレス、および 1 つまたは複数のセカンダリ内部 IP アドレスを設定できます。転送ルールには、外部ロード バランシングのための外部 IP アドレスや、内部ロード バランシングのための内部アドレスを指定できます。IP アドレスの詳細については、IP アドレスのドキュメントをご覧ください。
静的内部 IP アドレスを使用すると、サブネットに構成された IP アドレス範囲から内部 IP アドレスを予約し、必要に応じてリソースに割り当てることができます。内部 IP アドレスを予約すると、そのアドレスが動的割り当てプールから取り出され、自動割り当てには使用されなくなります。静的内部 IP アドレスを予約するには特定の Identity and Access Management(IAM)権限が必要であり、許可されたユーザーだけが静的内部 IP アドレスを予約できます。
静的内部 IP アドレスの予約機能を使用することで、リソースを削除して作成し直す必要がある場合でも、また同じ IP アドレスを使用できます。
内部 IP アドレスではなく静的外部 IP アドレスを予約するには、静的外部 IP アドレスを予約するをご覧ください。
準備
- IP アドレスの詳細をご覧ください。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- IP アドレスに対する
compute.addresses.create
- IP アドレスに対する
compute.addresses.createInternal
- VM インスタンスに対する
compute.instances.update
- サブネットワークに対する
compute.subnetworks.use
既存のリソースの内部 IPv4 アドレスの割り当てを解除したり、変更することはできません。たとえば、実行中または停止している VM インスタンスに新しい静的内部 IP アドレスを割り当てることはできません。ただし、リソースのエフェメラル内部 IP アドレスを静的内部 IP に昇格させることは可能で、その場合はリソースが削除された後もアドレスの予約状態は継続されます。
予約できる静的内部 IP アドレスの数は、プロジェクトの割り当てを超えることはできません。詳細は、VPC ドキュメントの、プロジェクトごとの割り当てをご覧ください。
一度に複数のリソースが同じ静的内部 IP アドレスを使用することはできません。
静的内部 IP アドレスの予約は VPC ネットワークでのみサポートされています。レガシーモードのネットワークではサポートされていません。
リソースを削除しても静的内部 IP アドレスは自動的に解放されません。静的内部 IP アドレスが不要になったら手動で解放する必要があります。
静的 IP アドレスの名前は変更できません。
静的内部 IP アドレスはリージョン アドレスです。つまり、静的内部 IP アドレスを予約したリージョンに制限されます。たとえば、
us-east4
リージョンで静的内部 IP アドレスを予約した場合、us-east4
の IP アドレスのみを使用できます。VPC ネットワークにサブネットを作成します。IPv6 アドレスの場合は、デュアルスタック サブネットを作成します。
サブネットのプライマリ IP 範囲から内部 IP アドレスを予約します。このステップでは、特定の内部 IP アドレスを含む内部 IP アドレス リソースを作成します。この手順により、Google Cloud がそのアドレスを自動的にエフェメラル アドレスとして割り振られることもなくなります。
予約済みの内部 IP アドレスは、VM またはロードバランサ リソースの作成時に VM インスタンスまたは内部ロードバランサに関連付けて使用します。
VPC ネットワークにサブネットを作成します。IPv6 アドレスの場合は、デュアルスタック サブネットを作成します。
自動的に割り振られたエフェメラル IPv4 アドレスまたは IPv6 アドレスを使用するか、特定の IPv4 アドレスを指定して VM インスタンスまたは内部ロードバランサを作成します。
- Compute Engine は、プライマリ IPv4 サブネット範囲から単一の IPv4 アドレスを自動的に割り当てます。
- VM インスタンスの作成時に特定の内部 IPv4 アドレスを割り当てることができます。または、プロジェクトに静的内部 IPv4 アドレスを予約し、そのアドレスを VM のネットワーク インターフェースに割り当てることもできます。
- Compute Engine は、IPv6 サブネット範囲から単一の
/96
範囲を自動的に割り当てます。 - サブネットの内部 IPv6 範囲から静的内部 IPv6 アドレス範囲を予約して、VM ネットワーク インターフェースに割り当てることができます。
- 新しい静的内部 IPv4 または IPv6 アドレスを予約する
- Cloud Interconnect を介した HA VPN 用に静的内部 IP アドレス範囲を予約する
- 内部 IPv4 アドレスまたは IPv6 アドレスがエフェメラルか静的かを判別する
- 使用中のエフェメラル内部 IPv4 アドレスまたは IPv6 アドレスを静的アドレスに昇格させる
- 予約済みの内部 IPv4 または IPv6 アドレスを使用して VM インスタンスを作成する
- 静的内部 IPv4 アドレスを使用して内部ロードバランサを作成する
- セカンダリ ネットワーク インターフェースに静的内部 IPv4 または IPv6 アドレスを使用する
- 内部 IPv6 アドレスを既存のインスタンスに変更または割り当てる
- 静的内部 IPv6 アドレスの割り当てを解除する
- 共有 VPC で静的内部 IPv4 または IPv6 アドレスを使用する
- 静的内部 IPv4 アドレスまたは IPv6 アドレスを一覧表示する
- 静的内部 IPv4 または IPv6 アドレスを削除する
- Google Cloud コンソールで、[IP アドレス] ページに移動します。
- [内部静的 IP アドレスの予約] をクリックします。
- [名前] フィールドに IP アドレス名を入力します。
- [IP バージョン] リストで、必要な IP バージョンを選択します。
- 静的内部 IPv4 アドレスを予約するには、[IPv4] を選択します。
- 静的内部 IPv6 アドレスを予約するには、[IPv6] を選択します。
- [ネットワーク] リストと [サブネットワーク] リストで、VPC ネットワークとサブネットをそれぞれ選択します。
- IP アドレスの予約方法を指定します。
- IPv4 アドレスの場合、予約する静的内部 IPv4 アドレスを指定するには、[静的 IP アドレス] で、[ユーザー指定] を選択し、カスタム IP アドレスを入力します。それ以外の場合、サブネットの静的内部 IPv4 アドレスはシステムによって自動的に割り当てられます。
- IPv6 アドレスの場合、静的内部 IPv6 アドレスはサブネットの内部 IPv6 アドレス範囲から自動的に割り当てられます。
省略可: 異なるフロントエンドで静的内部 IPv4 アドレスを共有する場合は、[目的] リストで [共有] を選択します。デフォルトでは、[共有しない] が選択されています。
[予約] をクリックします。
内部 IPv4 アドレスを予約するには、
compute addresses create
コマンドを使用します。gcloud compute addresses create ADDRESS_NAMES \ --region REGION --subnet SUBNETWORK \ --addresses IP_ADDRESS
次のように置き換えます。
ADDRESS_NAMES
: 作成する 1 つ以上の[--purpose=SHARED_LOADBALANCER_VIP]
アドレスの名前。複数のアドレスの場合は、各アドレスをスペースで区切ったリストで指定します(例:example-address-1 example-address-2 example-address-3
)。REGION
: このリクエストのリージョン。SUBNETWORK
: この内部 IP アドレスのサブネット。IP_ADDRESS
: 予約する IP アドレス。サブネットのプライマリ IP 範囲内になければなりません。指定しない場合、サブネットから IP アドレスが自動的に割り振られます。
内部 IPv6 アドレスを予約するには、
compute addresses create
コマンドを使用します。--ip-version
の値としてIPV6
を指定します。gcloud compute addresses create ADDRESS_NAMES \ --region REGION --subnet SUBNETWORK \ --ip-version IPV6
次のように置き換えます。
ADDRESS_NAMES
: 予約する 1 つ以上のアドレスの名前。複数のアドレスの場合は、各アドレスをスペースで区切ったリストで指定します(例:example-address-1 example-address-2 example-address-3
)。REGION
: このリクエストのリージョン。SUBNETWORK
: この内部 IPv6 アドレスのサブネット。
内部 IPv4 の予約とは異なり、内部 IPv6 の予約では、サブネットワークからの特定の IP アドレスの予約をサポートしていません。代わりに、
/96
の内部 IPv6 アドレスは、サブネットの/64
の内部 IPv6 アドレス範囲から自動的に割り振られます。サブネットから自動的に割り振られた内部 IPv4 アドレスを予約する場合:
gcloud compute addresses create example-address-1 \ --region us-central1 \ --subnet subnet-1
サブネットから特定の内部 IPv4 アドレスを予約する場合:
gcloud compute addresses create example-address-1 \ --region us-central1 \ --subnet subnet-1 \ --addresses 10.128.0.12
サブネットから静的内部 IPv6 アドレスを予約する場合:
gcloud compute addresses create example-address-1 \ --region us-central1 \ --subnet subnet-1 \ --ip-version IPV6
複数の IPv4 アドレス名を渡すことで、複数の IPv4 アドレスを作成し、すべてのアドレスが同じサブネットで予約されるようにする場合:
gcloud compute addresses create example-address-1 example-address-2 \ --region us-central1 \ --subnet subnet-1 \ --addresses 10.128.0.12,10.128.0.13
- Google Cloud コンソールで、[IP アドレス] ページに移動します。
- リストからアドレスを探し、[タイプ] 列で IP アドレスのタイプを確認します。
- Google Cloud コンソールで、[IP アドレス] ページに移動します。
- [内部 IP アドレス] をクリックします。
- (省略可)[フィルタ] フィールドで、昇格させるエフェメラル IP アドレスを検索します。
- 昇格させる IP アドレスの [その他の操作] メニュー( )で、[静的 IP アドレスに昇格] を選択します。
- 新しい静的 IP アドレスの名前を入力し、[予約] をクリックします。
既存のエフェメラル内部 IPv6 アドレスを昇格させる前に、その IP アドレスの値を確認する必要があります。Google Cloud CLI を使用してリソースに
describe
リクエストを行い、IP アドレス値を取得します。IPv4 アドレスの場合は、次のコマンドを使用します。
gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"
IPv6 アドレスの場合は、次のコマンドを使用します。
gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "ipv6Address"
gcloud CLI から
networkIP
値(IPv4 の場合)またはipv6Address
値(IPv6 の場合)が返されます。この値は、リソースで使用されている内部 IP アドレスです。アドレスを昇格させます。
1 つまたは複数の既存の内部 IPv4 アドレスを昇格させるには、
compute addresses create
コマンドを使用し、昇格させる明示的な内部 IP アドレスを--addresses
フラグに指定します。gcloud compute addresses create IPV4_ADDRESS_NAMES \ --addresses IPV4_ADDRESSES \ --region REGION \ --prefix-length PREFIX_LENGTH \ --subnet SUBNETWORK
次のように置き換えます。
IPV4_ADDRESS_NAMES
: IPv4 アドレスの名前。複数のアドレスを指定する場合は、アドレス名をスペースで区切ったリストで指定します(例:example-address-name-1 example-address-name-2 example-address-name-3
)。IP アドレスの宣言と同じ順序で名前を宣言します。たとえば、アドレス名をexample-address-name-1 example-address-name-2 example-address-name-3
、IPv4 アドレスを192.0.2.0 192.0.2.1 192.0.2.2
として指定したとします。このシナリオでは、Compute Engine は次の方法で名前とアドレスをマッピングします。example-address-name-1
:192.0.2.0
example-address-name-2
:192.0.2.1
example-address-name-3
:192.0.2.2
IPV4_ADDRESSES
: 昇格させる IPv4 アドレス。複数のアドレスの場合は、各アドレスをスペースで区切ったリストで指定します(例:192.0.2.0 192.0.2.1 192.0.2.2
)。REGION
: このアドレスを予約するリージョン。PREFIX_LENGTH
: 省略可。IPv4 アドレス範囲のプレフィックスの長さ。値には 7~31 の整数を指定してください。このフィールドは、アドレス範囲を指定する場合にのみ指定します。指定された IPv4 アドレスが単一の IP アドレスの場合は、このフィールドを除外します。SUBNETWORK
: このリクエストのサブネットワーク。
1 つ以上の既存の内部 IPv6 アドレスを昇格させるには、
compute addresses create
コマンドを使用し、昇格させる内部 IPv6 アドレスを--addresses
フラグに明示的に指定します。gcloud compute addresses create IPV6_ADDRESS_NAMES \ --addresses IPV6_ADDRESSES \ --region REGION \ --prefix-length PREFIX_LENGTH \ --subnet SUBNETWORK
次のように置き換えます。
IPV6_ADDRESS_NAMES
: アドレスの名前。IPv6 アドレスの宣言と同じ順序で名前を宣言します。この場合、IPV6_ADDRESS_NAME_1
はIPV6_ADDRESS_1
に対応し、IPV6_ADDRESS_NAME_2
はIPV6_ADDRESS_2
に対応します。IPV6_ADDRESS_1,[IPV6_ADDRESS_2,...]
: 昇格させる IPv6 アドレス(CIDR 形式)。PREFIX_LENGTH_1,[PREFIX_LENGTH_2,...]
: IPv6 アドレスのプレフィックス長。REGION
: このアドレスを予約するリージョン。SUBNETWORK
: このリクエストのサブネットワーク。
内部 IPv6 アドレスは、静的内部 IPv6 アドレスに昇格した後も、既存のインスタンスに割り振られたままになります。新しく昇格した静的内部 IPv6 アドレスを別のリソースに割り振る必要がある場合は、まず既存のインスタンスから静的内部 IPv6 アドレスの割り振りを解除します。
内部 IPv4 アドレスを昇格させるリクエストの本文:
{ "name": "ADDRESS_NAME", "addressType": "INTERNAL", "address": "IP_ADDRESS", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" }
次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "name": "example-IPv4-address-1", "addressType": "INTERNAL", "address": "10.128.0.2", "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet" }
内部 IPv6 アドレスを昇格させるリクエストの本文:
{ "name": "ADDRESS_NAME", "addressType": "INTERNAL", "address": "IP_ADDRESS", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" "prefixLength": 96 }
次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "name": "example-IPv6-address-1", "addressType": "INTERNAL", "address": "fd20:0:0::", "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet" "prefixLength": 96 }
Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
[詳細オプション] セクションを開きます。
[ネットワーキング] セクションを開きます。
IPv4 アドレスを割り当てるには、次の操作を行います。
- ネットワークとサブネットワークを選択します。
- [プライマリ内部 IPv4 アドレス] リストから予約済みの内部 IPv4 アドレスを選択します。
または、[静的内部 IP アドレスを予約] を選択して、新しい静的内部 IPv4 アドレスを予約します。
IPv6 アドレスを割り当てるには、次の操作を行います。
- IPv6 サブネットを含むネットワークを選択します。
- [サブネットワーク] リストからデュアルスタック サブネットを選択します。サブネットには
INTERNAL
IPv6 アクセスタイプが必要です。 - [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。
- [プライマリ内部 IPv6 アドレス] リストから予約済みの内部 IPv6 アドレスを選択します。
または、[静的内部 IPv6 アドレスを予約] を選択して、新しい静的内部 IPv6 アドレスを予約します。
ネットワーク インターフェースの変更を終了するには、[完了] をクリックします。
VM 作成プロセスを続行します。
[作成] をクリックします。
予約済みの内部 IPv4 アドレスを持つインスタンスを作成するには、インスタンスを作成するときに
--private-network-ip
フラグを使用して予約済み内部 IPv4 アドレスを指定します。gcloud compute instances create VM_NAME --private-network-ip IP_ADDRESS
次のように置き換えます。
VM_NAME
: 作成する VM の名前。IP_ADDRESS
: 割り当てる IP アドレス。
カスタム サブネット モードのネットワークを使用している場合は、
--subnet SUBNET
パラメータを使用してサブネットも指定する必要があります。予約済みの内部 IPv6 アドレスを持つインスタンスを作成するには、インスタンスを作成するときに
--internal-ipv6-address
フラグを使用して予約済み内部 IPv6 アドレスを指定します。gcloud compute instances create VM_NAME --subnet SUBNETWORK --stack-type IPV4_IPV6 --internal-ipv6-address INTERNAL_IPV6_ADDRESS --zone ZONE
次のように置き換えます。
VM_NAME
: 作成する VM の名前。SUBNETWORK
: 内部 IPv6 アドレスのサブネット。INTERNAL_IPV6_ADDRESS
:/96
IPv6 アドレス、IP アドレス名、またはアドレス リソースの URI のいずれか。この IP アドレスは、使用する前に予約する必要があります。ZONE
: VM のゾーン。
内部 IPv4 アドレスの場合は、VM に割り当てる内部 IPv4 アドレスを
networkInterfaces[].networkIP
プロパティに明示的に指定します。次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "name": "VM_NAME", "machineType": "zones/us-central1-f/machineTypes/e2-micro", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", }], "network": "global/networks/default", "networkIP": "IPV4_ADDRESS" }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/v20150818" } }] }次のように置き換えます。
PROJECT_ID
: VM を作成するプロジェクトの ID。ZONE
: VM を作成するゾーン。VM_NAME
: 仮想マシンの名前。IPV4_ADDRESS
: VM に割り当てる IPv4 アドレス。
内部 IPv6 アドレスの場合は、次のプロパティの値を明示的に指定します。
networkInterfaces[].stackType
networkInterfaces[].ipv6Address
networkInterfaces[].internalIpv6PrefixLength
networkInterfaces[].ipv6AccessType
次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "name": "VM_NAME", "machineType": "zones/us-central1-f/machineTypes/e2-micro", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", }], "network": "global/networks/default", "stackType": "IPV4_IPV6" "ipv6Address": ""IPV6_ADDRESS"", "internalIpv6PrefixLength": 96 "ipv6AccessType": INTERNAL, }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/v20150818" } }] }次のように置き換えます。
PROJECT_ID
: VM を作成するプロジェクトの ID。ZONE
: VM を作成するゾーン。VM_NAME
: VM の名前。IPV6_ADDRESS
: VM に割り当てる内部 IPv6 アドレス。
- VM インスタンス グループのバックエンドを使用して内部パススルー ネットワーク ロードバランサを設定する
- VM インスタンス グループのバックエンドを使用して内部アプリケーション ロードバランサを設定する
- 静的内部 IPv6 アドレスを予約します。
- Google Cloud コンソールで [VM インスタンス] ページに移動します。
- 内部 IPv6 アドレスを変更するインスタンスの名前をクリックします。
[インスタンスの詳細] ページで、次の手順を完了します。
- [編集] をクリックします。
- [ネットワーク インターフェース] を開きます。
- [プライマリ内部 IPv6 アドレス] リストで、[自動割り当て(/96)] または予約済みの静的内部 IPv6 アドレスを選択します。
- [完了] をクリックします。
[保存] をクリックします。
VM_NAME
: 作成する VM の名前。NIC
: 更新するネットワーク インターフェースの名前。INTERNAL_IPV6_ADDRESS
: インターフェースに割り当てる/96
内部 IPv6 アドレス、IP アドレス名、またはアドレス リソースの URI。ZONE
: VM のゾーン。PROJECT_ID
: VM が含まれているプロジェクトの ID。ZONE
: VM を作成するゾーン。VM_NAME
: VM の名前。IPV6_ADDRESS
: VM に割り当てる内部 IPv6 アドレス。IPV6_ADDRESS の値として内部 IPv6 アドレス リソースの URI または IPv6 アドレス範囲を指定する場合は、
internalIpv6PrefixLength
の値を空白のままにする必要があります。IP アドレスの割り当てを解除します。
gcloud compute forwarding-rules delete
コマンドまたはforwardingRules.delete
メソッドを使用して、転送ルールを削除します。gcloud compute forwarding-rules create
コマンドまたはforwardingRules.insert
メソッドを使用して、転送ルールを再作成します。- Google Cloud コンソールで [VM インスタンス] ページに移動します。
- 内部 IPv6 アドレスの割り当てを解除するインスタンスの名前をクリックします。
[インスタンスの詳細] ページで、次の手順を完了します。
- [編集] をクリックします。
- [ネットワーク インターフェース] を開きます。
- [IP スタックタイプ] で [IPv4(シングルスタック)] を選択します。
- [完了] をクリックします。
[保存] をクリックします。
VM_NAME
: ネットワーク インターフェースを更新する VM の名前。NIC
: 更新するネットワーク インターフェースの名前。ZONE
: VM のゾーン。instances.updateNetworkInterface
メソッドにPATCH
リクエストを送信します。リクエストの本文で、
stackType
フィールドの値をIPV4_ONLY
に更新します。次に例を示します。
PATCH https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances/VM_NAME
/updateNetworkInterface { "networkInterfaces": [{ ... "stackType" : "IPV4_ONLY" ... }] }次のように置き換えます。
PROJECT_ID
: VM が含まれているプロジェクトの ID。ZONE
: VM を作成するゾーン。VM_NAME
: VM の名前。
- 「共有 VPC の概要」の [IP アドレス] セクション
- 「共有 VPC をプロビジョニングする」の [静的内部 IPv4 または IPv6 アドレスを予約する] セクション
- Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
- 確認する VPC ネットワークをクリックします。
- [静的内部 IP アドレス] をクリックして、この VPC ネットワークに予約された静的内部 IP アドレスをすべて表示します。
PROJECT_ID
: このリクエストのプロジェクト ID。REGION
: このリクエストのリージョン名。IP アドレスがリソースで使用されていない場合、その IP アドレスは使用可能な内部 IP アドレスのプールに返却されます。
リソースで使用されている IP アドレスは、削除されるまでそのリソースに割り振られたままになります。
- Google Cloud コンソールで、[IP アドレス] ページに移動します。
- [内部 IP アドレス] をクリックします。
- 解放する静的内部 IP アドレスを選択します。
- [静的アドレスを解放] をクリックし、ダイアログの [解放] をクリックしてこの操作を確認します。
ADDRESS_NAME
: 削除するアドレスの名前。REGION
: アドレスが属しているリージョン。- IP アドレスについて学ぶ
- 静的外部 IP アドレスを予約する方法を学ぶ。
- エイリアス IP アドレスを使用して複数の内部 IP アドレスを割り当てる方法を学ぶ。
- 内部パススルー ネットワーク ロードバランサの詳細を学ぶ。
- 内部アプリケーション ロードバランサの詳細を学ぶ。
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
権限
静的内部 IP アドレスを予約して管理するには、
compute.networkAdmin
ロール、または次の 1 つ以上の権限が付与されている必要があります。制限事項
静的内部 IP アドレスを予約する方法
静的内部 IP アドレスを予約してから、そのアドレスに関連付けるリソースを作成します。または、エフェメラル内部 IP アドレスを指定してリソースを作成してから、そのエフェメラル IP アドレスを静的内部 IP アドレスに昇格させることもできます。
静的内部 IP アドレスを使用するには、プロジェクトに VPC ネットワークが存在している必要があります。VPC ネットワークの作成方法については、VPC ネットワークの作成と管理をご覧ください。
静的内部 IPv4 アドレスまたは IPv6 アドレスを予約して特定のリソースに関連付ける
このシナリオでは、静的内部 IP アドレスを予約してからリソースに割り当てます。
リソースのエフェメラル内部 IPv4 または IPv6 アドレスを指定して昇格させる
このシナリオでは、リソースに接続されているエフェメラル内部 IPv4 アドレスまたは IPv6 アドレスを昇格させます。
図 1 に、この 2 つの方法の概要を示します。
静的内部アドレスの構成と管理
VM インターフェースには、接続先のサブネットから IP アドレスが割り当てられます。各 VM インターフェースには、サブネットのプライマリ IPv4 の範囲から割り当てられた 1 つのプライマリ内部 IPv4 アドレスがあります。VM が内部 IPv6 範囲を持つデュアルスタック サブネットに接続されている場合、各ネットワーク インターフェースに内部 IPv6 アドレスを割り当てることができます。
内部 IPv4 アドレスは、次の方法で割り当てることができます。
内部 IPv6 アドレスは、次の方法で割り当てることができます。
静的内部 IP アドレスを構成して管理するには、次の操作を行います。
新しい静的内部 IPv4 または IPv6 アドレスを予約する
新しい静的内部 IP アドレスを予約する前に、サブネットを持つ VPC ネットワークを作成する必要があります。
新しい静的内部 IPv6 アドレスを予約する場合は、VPC ネットワークで ULA の内部 IPv6 範囲が有効になっている必要があります。また、
INTERNAL
IPv6 アクセスタイプのデュアルスタック サブネットが必要です。スタンドアロンの内部 IP アドレスを予約するには、次の手順を完了します。
コンソール
gcloud
例
Terraform
Terraform モジュールを使用して内部 IP アドレスを作成できます。
次の例では、Terraform の引数に変更可能なサンプル値が含まれています。この例では、2 つの内部 IP アドレスを作成します。
次の例では、動的に割り振られる 2 つの内部 IP アドレスを作成します。
REST
addresses.insert
メソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
IPv4 アドレスと IPv6 アドレスのいずれの場合でも、リクエストの本文には
addressType
フィールド(INTERNAL
)、IP アドレスのname
、subnetwork
を含める必要があります。リクエストの本文には、必要に応じて内部 IP アドレスのpurpose
を含めることができます。内部 IPv4 アドレスの場合は、システムによって IP アドレスが自動的に割り振られるようにすることも、
address
を使用して内部 IPv4 アドレスを指定することもできます。IPv4 アドレスは、サブネットのプライマリ IP 範囲内になければなりません。{ "addressType": "INTERNAL", "name": "IPV4_ADDRESS_NAME", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK", "address": "IPV4_ADDRESS" "purpose": "GCE_ENDPOINT" }
次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "addressType": "INTERNAL", "name": "example-ipv4-address-1", "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet", "address": "10.128.0.12" "purpose": "GCE_ENDPOINT" }
内部 IPv6 アドレスの場合は、
ipVersion
をIPV6
として指定する必要があります。サブネットの内部 IPv6 アドレス範囲から、静的内部 IPv6 アドレスが自動的に割り当てられます。{ "addressType": "INTERNAL", "name": "IPV6_ADDRESS_NAME", "ipVersion": "IPV6", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK", "purpose": "GCE_ENDPOINT" }
次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses { "addressType": "INTERNAL", "name": "example-ipv6-address-1", "ipVersion": "IPV6" "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet", "purpose": "GCE_ENDPOINT" }
Cloud Interconnect を介した HA VPN 用に静的内部 IP アドレス範囲を予約する
Cloud Interconnect を介した HA VPN で使用する静的内部 IP アドレス範囲を予約できます。
静的内部 IP アドレスを作成するときに、フラグ
--purpose=IPSEC_INTERCONNECT
とプレフィックス長(--prefix-length
)を 26~29 の間で指定する必要があります。予約したリージョン内部 IPv4 アドレスは、Cloud Interconnect で使用される HA VPN ゲートウェイに適用されます。
詳細については、HA VPN ゲートウェイに内部 IP アドレス範囲を割り当てるをご覧ください。
内部 IPv4 アドレスまたは IPv6 アドレスがエフェメラルか静的かを判別する
静的内部 IP アドレスとエフェメラル内部 IP アドレスは、ほとんどのコンテキストで同じように動作します。アドレスが静的かエフェメラルかを判別するには、次のようにします。
使用中のエフェメラル内部 IPv4 アドレスまたは IPv6 アドレスを静的アドレスに昇格させる
使用中のエフェメラル内部 IP アドレスがある場合、それを静的内部 IP アドレスに昇格させると、削除するまでプロジェクトで使用し続けることができます。
エフェメラル内部 IP アドレスを静的内部 IP アドレスに昇格させるには、次の手順を完了します。
コンソール
gcloud
REST
addresses.insert
メソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
IPv4 アドレスと IPv6 アドレスのいずれの場合でも、リクエストの本文には、
addressType
(INTERNAL
)、アドレスのname
、昇格させるaddress
、IP アドレスが属するsubnetwork
を含める必要があります。IPv6 アドレスの場合は、さらに、リクエストの本文で値として96
を持つprefixLength
を含める必要があります。予約済みの内部 IPv4 または IPv6 アドレスを使用して VM インスタンスを作成する
静的内部 IP アドレスを予約した後、そのアドレスをインスタンスの作成時に VM インスタンスに割り振ることができます。
予約済みの静的内部 IPv6 アドレスを指定せずに内部 IPv6 の範囲を持つデュアルスタック サブネットに接続された VM を作成すると、Compute Engine は、サブネットの IPv6 範囲からエフェメラル内部 IPv6 アドレスを VM に自動的に割り当てます。
コンソール
gcloud
REST
静的内部 IP アドレスを持つ VM インスタンスを作成するには、
instances.insert
メソッドを使用します。指定した IP アドレスを持つインスタンスを削除すると、その IP アドレスは未割り振りのアドレスプールに戻ります。インスタンスの存続期間を超えてその内部 IP アドレスを保持する必要がある場合は、静的内部 IP アドレスを予約できます。
静的内部 IPv4 アドレスを使用して内部ロードバランサを作成する
静的内部 IPv4 アドレスを使用する内部ロードバランサを作成するには、以下をご覧ください。
セカンダリ ネットワーク インターフェースに静的内部 IPv4 または IPv6 アドレスを使用する
複数のネットワーク インターフェースを持つ VM インスタンスを作成する場合は、プライマリ ネットワーク インターフェースとセカンダリ ネットワーク インターフェースの両方に予約済みの静的内部 IPv4 または IPv6 アドレスを使用できます。
セカンダリ ネットワーク インターフェースに静的内部 IPv4 または IPv6 アドレスを使用するには、複数のネットワーク インターフェースを持つ VM インスタンスを作成するをご覧ください。
既存の VM に対して内部 IPv6 アドレスの変更または割り当てを行う
内部 IPv6 アドレスを変更したり、既存の VM インスタンスに割り当てることができます。
インスタンスにすでに内部 IPv6 アドレスが割り当てられている場合は、まずそのアドレスの割り当てを解除する必要があります。次に、インスタンスのネットワーク インターフェースを使用して、インスタンスに新しいアドレスを割り当てます。
既存の VM インスタンスに静的内部 IPv6 アドレスを変更または割り当てるには、次の手順を完了します。
コンソール
gcloud
compute instances network-interfaces update
コマンドを使用します。gcloud compute instances network-interfaces update VM_NAME \ --network-interface NIC \ --ipv6-network-tier PREMIUM \ --stack-type IPV4_IPV6 \ --internal-ipv6-address INTERNAL_IPV6_ADDRESS \ --zone ZONE
次のように置き換えます。
REST
instances.update
メソッドを使用します。割り当てる内部 IPv6 アドレスでnetworkInterfaces[].ipv6Address
プロパティを更新します。次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME { ... "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", }], "stackType": "IPV4_IPV6" "ipv6Address": "IPV6_ADDRESS", "internalIpv6PrefixLength": 96 "subnetwork": "regions/REGION/subnetworks/SUBNETWORK", }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/v20150818" } }] }
次のように置き換えます。
転送ルールの IP アドレスを変更する
VM の内部 IP アドレスを変更し、転送ルールを更新する必要がある場合は、次の操作を行います。
静的内部 IPv6 アドレスの割り当てを解除する
VM インスタンスから静的内部 IPv6 アドレスの割り当てを解除するには、インスタンスのネットワーク インターフェースを更新するか、アドレスが割り当てられているインスタンスを削除します。
内部 IPv6 アドレスの割り当てを解除すると、そのアドレスはリソースから削除されますが、プロジェクト用に予約されたアドレスは保持されます。このアドレスは、後で別のリソースに再割り当てできます。
VM インスタンスから静的内部 IPv6 アドレスの割り当てを解除するには、次の手順を完了します。
コンソール
gcloud
--stack-type
フラグをIPV4_ONLY
に設定してcompute instances network-interfaces update
コマンドを使用します。gcloud compute instances network-interfaces update VM_NAME \ --network-interface NIC \ --stack-type IPV4_ONLY \ --zone ZONE
次のように置き換えます。
静的内部 IPv6 アドレスのステータスが
IN_USE
からRESERVED
に変わり、使用可能になったことを確認します。gcloud compute addresses list \ --filter="region=REGION AND name=NAME"
REST
内部 IPv6 アドレスが割り振られているネットワーク インターフェースのインスタンス スタックタイプを更新します。
共有 VPC で静的内部 IPv4 または IPv6 アドレスを使用する
共有 VPC ネットワークの共有サブネットに予約済み静的内部 IP アドレスを作成できます。IP アドレス オブジェクトの値が共有 VPC ネットワークで選択された共有サブネットの IP アドレスの範囲から使用されている場合でも、IP アドレス オブジェクト自体は、このオブジェクトを使用するリソースと同じサービス プロジェクトで作成されます。このユースケースの詳細については、次のリソースをご覧ください。
静的内部 IPv4 アドレスまたは IPv6 アドレスを一覧表示する
外部 IP アドレスや内部 IP アドレスなど、既存のすべての静的 IP アドレスを表示するには、次の手順を完了します。
コンソール
gcloud
compute addresses list
コマンドを実行します。gcloud compute addresses list
REST
addresses.list
メソッドを使用します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
次のように置き換えます。
すべてのリージョンのすべてのアドレスを一覧表示するには、
aggregatedList
メソッドを使用します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
新しい静的内部 IPv4 または IPv6 アドレスを解放する
静的内部 IP アドレスが不要になったら、IP アドレス リソースを削除することで IP アドレスを解放できます。
Google Cloud コンソールを使用している場合は、静的 IP アドレスを解放できるのは、別のリソースで使用されていない場合に限られます。
gcloud CLI または REST を使用している場合は、別のリソースで使用されているかどうかにかかわらず、IP アドレスを解放できます。
静的内部 IPv4 または IPv6 アドレスを解放するには、次の手順を完了します。
コンソール
gcloud
compute addresses delete
コマンドを実行します。gcloud compute addresses delete ADDRESS_NAME \ --region REGION
次のように置き換えます。
次に例を示します。
gcloud compute addresses delete example-address-to-delete \ --region us-west1
REST
addresses.delete
メソッドを使用します。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
次の例では、
us-west1
リージョンのアドレスを削除します。DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-05 UTC。
-