仮想マシン(VM)インスタンス用に静的外部 IP アドレスを予約できます。VM の静的 IP アドレスを変更、一覧表示、解放することもできます。
外部 IP アドレスには、静的なものとエフェメラルなものがあります。変更されない固定外部 IP アドレスが VM に必要な場合、静的外部 IP アドレスを取得できます。新しい外部 IP アドレスを予約することも、既存のエフェメラル外部 IP アドレスを昇格させることもできます。
内部 Compute Engine ネットワーク上の静的 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.
compute.networks.list
compute.subnetworks.list
一度に複数のリソースが同じ静的外部 IP アドレスを使用することはできません。
IP アドレスをリソースに割り当てた後に、その IP アドレスが静的であるかエフェメラルであるかを確認する方法はありません。IP アドレスと、そのプロジェクトに予約されている静的外部 IP アドレスのリストを比較することは可能です。プロジェクトで使用可能な静的外部 IP アドレスのリストを表示するには、
compute addresses list
サブコマンドを使用します。各 VM は複数のネットワーク インターフェースを持つことができますが、各ネットワーク インターフェースはエフェメラルか静的である外部 IP アドレスを 1 つだけ持つことができます。
静的 IP アドレスの名前は変更できません。
割り当てられた外部 IP アドレスは、VM と同じ物理ホストに存在し、すべての用途(ルーティング、レイテンシ、料金設定など)の VM と同じリージョンに存在します。これは、インターネットの位置情報のルックアップ情報に関係なく当てはまります。
Google Cloud コンソールで [静的アドレスの予約] ページに移動します。
新しいアドレスの名前を指定します。
ネットワーク サービス ティアがプレミアムかスタンダードかを指定します。IPv6 静的アドレス予約は、プレミアム ティアでのみサポートされます。
IPv4 アドレスか IPv6 アドレスかを指定します。
この IP アドレスがリージョン アドレスかグローバル アドレスかを指定します。
- グローバル ロードバランサに静的 IP アドレスを予約する場合は、[グローバル] を選択して [予約] をクリックします。
- VM またはリージョン ロードバランサ用に静的 IP アドレスを予約する場合は、[リージョン] を選択し、アドレスを作成するリージョンを選択します。
リージョン外部 IPv6 アドレスを予約する場合は、以下も選択します。
- ネットワーク: VPC ネットワーク
- サブネットワーク: 静的リージョン IPv6 アドレスを割り当てるサブネット
- エンドポイントのタイプ: [VM インスタンス] または [ネットワーク ロードバランサ] を選択します
(省略可)VM インスタンス用の静的外部 IP アドレスを予約する場合は、[割り当て先] リストで IP アドレスを割り当てる VM インスタンスを選択します。
[予約] をクリックして IP アドレスを予約します。
グローバル IP アドレスを予約するには、
--global
フィールドと--ip-version
フィールドを使用します。--ip-version
フィールドにはIPv4
またはIPv6
を指定します。グローバル IP アドレスは、グローバル ロードバランサでのみ使用できます。gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version [IPV4 | IPV6]
ADDRESS_NAME
は、このアドレスに関連付ける名前に置き換えます。リージョン外部 IPv4 アドレスを予約するには、
--region
フィールドを使用します。gcloud compute addresses create ADDRESS_NAME \ --region=REGION
次のように置き換えます。
ADDRESS_NAME
: このアドレスに関連付ける名前。REGION
: このアドレスを予約するリージョン。IP アドレスを割り当てるリソースと同じリージョンにする必要があります。
リージョン外部 IPv6 アドレスを予約するには、
--region
、--subnet
、--ip-version
、--endpoint-type
フィールドを使用します。/96
IPv6 範囲は、指定されたサブネットから割り当てられます。gcloud compute addresses create IPV6_ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=[VM | NETLB]
次のように置き換えます。
IPV6_ADDRESS_NAME
: アドレスの名前。REGION
: アドレスのリージョン。SUBNET_NAME
: 静的リージョン IPv6 アドレスの割り当て元のサブネット。サブネットには割り当てられた外部 IPv6 アドレス範囲が必要です。VM | NETLB
: エンドポイント タイプ。VM またはネットワーク ロードバランサのいずれか。
リージョン IPv4 アドレスを作成するには、リージョン
addresses.insert
メソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
リクエスト本文は次のようにします。
{ "name": "ADDRESS_NAME" }
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト IDREGION
: このリクエストのリージョン名ADDRESS_NAME
: アドレスに関連付ける名前
グローバル静的 IPv4 アドレスの場合は、
globalAddresses.insert
メソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
リクエスト本文は次のようにします。
{ "name": "ADDRESS_NAME" }
グローバル静的 IPv6 アドレスの場合は、
globalAddresses.insert
メソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
リクエスト本文は次のようにします。
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6" }
結果を表示するには、
addresses.get
メソッドを使用します。リージョン静的 IPv6 アドレスの場合は、
addresses.insert
メソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
リクエスト本文は次のようにします。
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6", "ipv6EndpointType": "VM|LB", "networkTier": "PREMIUM", "subnetwork": "SUBNET" }
SUBNET
は、このプロジェクトのサブネットに置き換えます。結果を表示するには、
addresses.get
メソッドを使用します。Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
VM の詳細を指定します。
[詳細オプション] セクションを開きます。
[ネットワーキング] セクションを開きます。
[ネットワーク インターフェース] セクションで、ネットワーク インターフェースを開いて編集します。
IPv4 アドレスを割り当てるには、次の手順を行います。
- ネットワークを選択してください。
- [外部 IPv4 アドレス] リストから IP アドレスを選択します。
IPv6 アドレスを割り当てるには、次の手順を行います。
- IPv6 サブネットを含むネットワークを選択します。
- [サブネットワーク] リストからデュアルスタック サブネットを選択します。
- [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] を選択します。
- [外部 IPv6 アドレス] リストから、新しく予約した外部 IPv6 アドレスを選択します。または、[IP アドレスを作成] を選択して、新しい静的外部 IPv6 アドレスを予約します。
- [ネットワーク サービス ティア] で [プレミアム] を選択します。
ネットワーク インターフェースの変更を終了するには、[完了] をクリックします。
VM 作成プロセスを続行します。
静的外部 IPv4 アドレスを割り当てるには、次の手順を行います。
gcloud compute instances create VM_NAME --address=IP_ADDRESS
次のように置き換えます。
VM_NAME
: VM の名前。IP_ADDRESS
: VM に割り当てる IP アドレス。アドレス名ではなく、予約済みの静的外部 IP アドレスを使用してください。
静的外部 IPv6 アドレスを割り当てるには、次の手順を行います。
gcloud compute instances create VM_NAME \ --subnet=SUBNET \ --stack-type=IPV4_IPV6 \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier=PREMIUM \ --zone=ZONE
- Google Cloud コンソールで [VM インスタンス] ページに移動します。
- 外部 IP を割り当てる VM の名前をクリックします。[インスタンスの詳細] ページが表示されます。
[インスタンスの詳細] ページで、次の手順を実行します。
- [編集] をクリックします。
- [ネットワーク インターフェース] を開きます。
- VM に割り当てることを必要とする外部 IP アドレスを選択します。
- [外部 IPv4 アドレス] に、[エフェメラル] または静的外部 IPv4 アドレスを選択します。
- [外部 IPv6 アドレス] に、[エフェメラル] または静的外部 IPv6 アドレスを選択します。
- [完了] をクリックします。
[保存] をクリックします。
(省略可)静的外部 IP アドレスを予約します。
静的外部 IP アドレスを割り当てる場合は、アドレスを予約し、そのアドレスが別のリソースで使用されていないことを確認する必要があります。必要であれば、手順に沿って新しい静的外部 IP アドレスを予約するか、静的外部 IP アドレスの割り当てを解除します。
エフェメラル外部 IP アドレスを使用する場合は、この手順をスキップします。エフェメラル外部 IP アドレスは Compute Engine によってランダムに割り当てられます。
既存の IP アドレス割り当てを削除します。
VM から IPv4 アドレスを削除するには、既存のアクセス構成を削除します。
VM ごとに 1 つのアクセス構成を設定できます。新しいアクセス構成を VM に割り当てることを試みる前に、
gcloud compute instances describe
コマンドを使用してリクエストを行い、VM にアクセス構成が存在するかどうかを確認しますgcloud compute instances describe VM_NAME
既存のアクセス構成がある場合は、次の形式で表示されます。
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NAT
新しいアクセス構成を追加する前に、以下のように
instances delete-access-config
サブコマンドを使用して既存のアクセス構成を削除する必要があります。gcloud compute instances delete-access-config VM_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
次のように置き換えます。
VM_NAME
: VM の名前。ACCESS_CONFIG_NAME
: 削除するアクセス構成ファイル。引用符の中に完全な名前を指定してください。
VM から IPv6 アドレスを削除するには、スタックタイプを変更します。
次のように
gcloud compute instances describe
コマンドでリクエストを発行してインスタンスに IPv6 構成があるかどうかを確認します。gcloud compute instances describe VM_NAME \ --zone=ZONE
次のように置き換えます。
VM_NAME
: VM の名前。ZONE
: VM のゾーン。
外部 IPv6 アドレスが
nic0
にすでに割り当てられている場合は、次のフォーマットに構成が表示されます。networkInterfaces: ... ipv6AccessConfigs: - externalIpv6: 2001:db8:4000:15:0:0:0:0 externalIpv6PrefixLength: 96 kind: compute#accessConfig name: external-ipv6 networkTier: PREMIUM type: DIRECT_IPV6 ipv6AccessType: EXTERNAL kind: compute#networkInterface name: nic0
instance network-interfaces update
サブコマンドを使用して、既存の IPv6 アドレス構成を削除します。gcloud compute instances network-interfaces update VM_NAME \ --network-interface=NIC \ --stack-type=IPV4_ONLY \ --zone=ZONE
次のように置き換えます。
NIC
: ネットワーク インターフェースの名前。VM_NAME
: VM の名前。ZONE
: VM のゾーン。
新しい外部 IP アドレスを割り当てます。
IPv4 アドレスを割り当てるには、
instances add-access-config
サブコマンドを使用します。注:IP_ADDRESS
を静的 IP の名前に置き換えないでください。実際の IP アドレスを使用する必要があります。gcloud compute instances add-access-config VM_NAME \ --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
次のように置き換えます。
VM_NAME
: VM の名前。ACCESS_CONFIG_NAME
: このアクセス構成ファイルの名前。引用符の中に完全な名前を指定してください。IP_ADDRESS
: 追加する IP アドレス。
Compute Engine で静的外部 IP アドレスを使用せずにエフェメラル外部 IP アドレスを割り当てる場合は、
--address IP_ADDRESS
プロパティを省略します。gcloud compute instances add-access-config VM_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
IPv6 アドレス範囲を割り当てるには、
instance network-interfaces update
サブコマンドを使用します。gcloud compute instances network-interfaces update VM_NAME \ --network-interface==NIC \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --zone=ZONE
次のように置き換えます。
VM_NAME
: VM の名前。NIC
: ネットワーク インターフェースの名前。IPV6_ADDRESS
: VM に割り当てる IPv6 アドレス。/96
範囲に存在する最初の IPv6 アドレスを指定します。ZONE
: VM のゾーン。
VM に既存のアクセス構成があるかどうかを確認します。VM の詳細を確認するには、
instances.get
メソッドにGET
リクエストを行います。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト IDZONE
: VM を配置するゾーンVM_NAME
: VM の名前
既存の IPv4 アクセス構成がある場合、レスポンスは次のようになります。
"networkInterfaces": [ { "network": ... "name": "nic0", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IPV4_ADDRESS", "networkTier": "PREMIUM", "kind": "compute#accessConfig" } ], ... } ]
networkInterfaces[].accessConfigs[].natIP
フィールドに、VM の静的外部 IPv4 アドレスが返されます。既存の IPv6 アクセス構成がある場合、レスポンスは次のようになります。
"networkInterfaces": [ { "network": ... "name": "nic0", "ipv6AccessConfigs": [ { type: "DIRECT_IPV6", "name": "external-ipv6", "externalIpv6": "IPV6_ADDRESS", "externalIpv6PrefixLength": 96, "networkTier": "PREMIUM", "kind": "compute#accessConfig" } ], ... } ]
networkInterfaces[].ipv6AccessConfigs[].externalIpv6
フィールドに、VM の静的外部 IPv6 アドレスが返されます。既存のアクセス構成を削除するには、
instances.deleteAccessConfig
メソッドにPOST
リクエストを行います。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
instances.addAccessConfig
メソッドにPOST
リクエストを発行し、VM インスタンスのネットワーク インターフェースに新しいアクセス構成を追加します。IPv4 アドレスの場合は、次のリクエストを発行します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addAccessConfig { "natIP": "IPV4_ADDRESS", "name": "ACCESS_CONFIG_NAME" }
IPv6 アドレスの場合は、
networkInterfaces[].ipv6AccessConfigs[].externalIpv6
プロパティと使用する外部 IPv6 アドレスを更新します。新しい VM に静的外部 IP アドレスを割り当てるをご覧ください。
IP アドレスの割り当てを解除します。
gcloud compute forwarding-rules delete
コマンドまたはforwardingRules.delete
メソッドを使用して、転送ルールを削除します。gcloud compute forwarding-rules create
コマンドまたはforwardingRules.insert
メソッドを使用して、転送ルールを再作成します。- [IP アドレス] ページに移動します。
- [外部 IP アドレス] をクリックします。
- (省略可)[フィルタ] フィールドで、昇格するエフェメラル IP アドレスを検索します。
- 昇格させる IP アドレスの [その他の操作] メニュー( )で、[静的 IP アドレスに昇格] を選択します。
- 新しい静的 IP アドレスの名前を入力し、[予約] をクリックします。
エフェメラル外部 IPv4 アドレスを静的外部 IPv4 アドレスに昇格させるには、
compute addresses create
コマンドで--addresses
フラグを使用してエフェメラル外部 IP アドレスを指定します。エフェメラル リージョン IP アドレスを昇格させる場合はregion
フラグ、エフェメラル グローバル IP アドレスを昇格させる場合はglobal
フラグを使用します。gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \ [--region=REGION | --global]
次のように置き換えます。
ADDRESS_NAME
: このアドレスに関連付ける名前。IP_ADDRESS
: 昇格させる IP アドレス。REGION
: リージョン IP アドレスが属するリージョン。エフェメラル リージョン外部 IPv6 アドレスを静的リージョン外部 IPv6 アドレスに昇格させるには、
compute addresses create
コマンドで--addresses
フラグを使用してエフェメラル外部 IP アドレスを指定します。
gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --addresses=IPV6_ADDRESS \ --prefix-length=96
次のように置き換えます。
ADDRESS_NAME
: IP アドレス リソースの名前。REGION
: IPv6 アドレス リソースのリージョン。IPV6_ADDRESS
: 昇格させる IPv6 アドレス。
IPv4 アドレスの場合、リクエスト本文には次の項目を含める必要があります。
{ "name": "ADDRESS_NAME", "address": "IPV4_ADDRESS" "addressType": "EXTERNAL" }
IPv6 アドレスの場合、リクエスト本文には次の項目を含める必要があります。
{ "name": "ADDRESS_NAME", "address": "IPV6_ADDRESS" "prefixLength": 96 "addressType": "EXTERNAL" }
次のように置き換えます。
ADDRESS_NAME
: このアドレスに関連付ける名前IPV4_ADDRESS|IPV6_ADDRESS
: 昇格させる IPv4 アドレスまたは IPv6 アドレスREGION
: IPv4 アドレスまたは IPv6 アドレスが属するリージョンPROJECT_ID
: このリクエストのプロジェクト ID
すべての IP アドレスを一覧表示するには、次のコマンドを使用します。
gcloud compute addresses list
すべてのグローバル IP アドレスを一覧表示するには、次のコマンドを使用します。
gcloud compute addresses list --global
特定のリージョンのすべてのリージョン IP アドレスを一覧表示するには、次のコマンドを使用します。
gcloud compute addresses list \ --regions=REGION
REGION
は、アドレスを一覧表示するリージョンに置き換えます。カンマ区切りでリージョン名を指定すると、複数のリージョンのアドレスを一覧表示できます。gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
リージョン IPv4 アドレスまたはリージョン IPv6 アドレスを一覧表示するには、
addresses.list
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
次のように置き換えます。
REGION
: このリクエストのリージョン名PROJECT_ID
: このリクエストのプロジェクト ID
すべてのリージョンのアドレスを一覧表示するには、
aggregatedList
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
グローバル IPv4 アドレスまたはグローバル IPv6 アドレスを一覧表示するには、
globalAddresses.list
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト ID- Google Cloud コンソールで、[外部 IP アドレス] ページに移動します。
- 詳細情報を取得する IP アドレスをクリックします。
グローバル IPv4 アドレスまたはグローバル IPv6 アドレスの場合は、次のコマンドを使用します。
gcloud compute addresses describe ADDRESS_NAME --global
リージョン IPv4 アドレスまたはリージョン IPv6 アドレスの場合は、次のコマンドを使用します。
gcloud compute addresses describe ADDRESS_NAME --region=REGION
リージョン IPv4 アドレスまたはリージョン IPv6 アドレスを記述するには、
addresses.get
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
次のように置き換えます。
ADDRESS_NAME
: IP アドレスの名前REGION
: このリクエストのリージョン名PROJECT_ID
: リクエストのプロジェクト ID
グローバル IPv4 アドレスまたはグローバル IPv6 アドレスを記述するには、
globalAddresses.get
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
次のように置き換えます。
ADDRESS_NAME
: IP アドレスの名前PROJECT_ID
: リクエストのプロジェクト ID
- Google Cloud コンソールで、[外部 IP アドレス] ページに移動します。
- 割り当てを解除する静的 IP アドレスを選択します。
- [変更] をクリックして [IP アドレスの接続] ダイアログを開きます。
- [接続先] プルダウン リストから [なし] を選択します。
- [OK] をクリックします。
gcloud compute addresses list
コマンドを使用して、静的 IP アドレスが使用されているかどうかを確認します。gcloud compute addresses list
出力は次のようになります。
NAME REGION ADDRESS STATUS example-address-ipv4 REGION 198.51.100.1 RESERVED example-address-new-ipv4 REGION 203.0.113.1 IN_USE example-address-ipv6 REGION 2001:db8:1:1:1:1:1:1 RESERVED example-address-new-ipv6 REGION 2001:db8:4:4:4:4:4:4 IN_USE
- IP アドレスが使用されていない場合、ステータスは
RESERVED
です。 - IP アドレスが使用中の場合、ステータスは
IN_USE
です。
- IP アドレスが使用されていない場合、ステータスは
IP アドレスを使用している VM の名前を取得します。
gcloud compute addresses describe ADDRESS_NAME \ --region=REGION
次のように置き換えます。
ADDRESS_NAME
: IPv6 アドレス リソースの名前。REGION
: IPv6 アドレス リソースのリージョン。
出力は次のようになります。
address: IP_ADDRESS addressType: EXTERNAL ... region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME status: IN_USE subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET users: - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
users
フィールドに、IP アドレスを使用している VM の名前が表示されます。VM から IP アドレスの割り当てを解除します。
IPv4 アドレスの割り当てを解除するには、VM のアクセス構成ファイルを削除します。
削除するアクセス構成の名前を取得します。名前を取得するには、
gcloud compute instances describe
コマンドを使用します。VM_NAME
は VM の名前に置き換えます。gcloud compute instances describe VM_NAME
アクセス構成は次の形式で表示されます。
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NAT
gcloud compute instances delete-access-config
コマンドを使用して、アクセス構成を削除します。gcloud compute instances delete-access-config VM_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
次のように置き換えます。
VM_NAME
: VM の名前。ACCESS_CONFIG_NAME
: 削除するアクセス構成ファイルの名前。引用符の中に完全な名前を指定してください。
IPv6 アドレス範囲の割り当てを解除するには、
instance network-interfaces update
コマンドを使用します。gcloud compute instances network-interfaces update VM_NAME \ --network-interface=nic0 \ --stack-type=IPV4_ONLY \ --zone=ZONE
次のように置き換えます。
VM_NAME
: IP アドレスを使用している VM の名前。ZONE
: VM のゾーン。
静的外部 IP アドレスのステータスが
IN_USE
からRESERVED
に変わり、使用可能になったことを確認します。gcloud compute addresses list \ --filter="ADDRESS_NAME AND region=REGION"
次のように置き換えます。
ADDRESS_NAME
: IP アドレス リソースの名前。REGION
: IP アドレス リソースのリージョン。
IPv4 アドレスの場合、そのアドレスを使用している VM に接続されたアクセス構成を削除します。
VM のアクセス構成の詳細を確認するには、
instances.get
メソッドにGET
リクエストを発行します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
既存のアクセス構成を削除するには、
instances.deleteAccessConfig
メソッドにPOST
リクエストを行います。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト IDZONE
: VM を配置するゾーンVM_NAME
: VM の名前
IPv6 アドレスの場合は、IPv6 アドレスが割り当てられている 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" ... }] }
IP アドレスがリソースで使用されていない場合、その IP アドレスは使用可能な外部 IP アドレスのプールに返却されます。
リソースで使用されている IP アドレスは、削除されるまでそのリソースに接続されたままになります。
- Google Cloud コンソールで、[外部 IP アドレス] ページに移動します。
- 解放する IP アドレスを選択します。
- [IP アドレスを解放] をクリックします。
リージョン IPv4 アドレスまたはリージョン IPv6 アドレスを解放するには、
addresses.delete
メソッドを呼び出します。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
次のように置き換えます。
ADDRESS_NAME
: IP アドレスの名前REGION
: このリクエストのリージョン名PROJECT_ID
: このリクエストのプロジェクト ID
グローバル IPv4 アドレスまたはグローバル IPv6 アドレスを解放するには、
globalAddresses.delete
メソッドを呼び出します。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/ADDRESS_NAME
次のように置き換えます。
ADDRESS_NAME
: IP アドレスの名前PROJECT_ID
: このリクエストのプロジェクト ID
- このリスト型制約は VM にのみ適用できます。
- 過去にさかのぼって制約を適用することはできません。ポリシーを有効にする前から外部 IP アドレスを持つすべての VM は、外部 IP アドレスを保持します。
- この制約には、
allowedList
またはdeniedList
のいずれか一方を指定できます。両方を同一のポリシーに指定することはできません。 - VM のライフサイクルと完全性の管理と維持は、必要な権限を持つユーザーまたは管理者の責任です。制約によって VM の URI のみが検証され、許可リスト内の VM の変更、削除、再作成を回避することはできません。
- [組織のポリシー] ページに移動します。
- 必要に応じて、組織をプロジェクト プルダウン メニューから選択します。
- [VM インスタンスに対して許可されている外部 IP を定義する] をクリックします。
- [編集] をクリックして外部 IP ポリシーを編集します。[編集] ツールにアクセスできない場合は、正しい権限を付与されていません。
[カスタマイズ] を選択し、特定の VM に組織のポリシーを設定します。
必要な [ポリシーの適用] と [ポリシーの種類] を選択します。
[ポリシーの値] で [カスタム] を選択します。
VM の URI を入力し、Enter キーを押します。URI は、次の形式にする必要があります。
projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
[新しいポリシーの値] をクリックし、必要に応じて VM の URI を入力します。
[保存] をクリックして、制約を適用します。
PROJECT_ID
。このリクエストのプロジェクト ID(example-project
など)。これは、組織のポリシーを設定するときとは異なります。組織のポリシーの場合は組織の数値 ID が必要です。ZONE
: VM のゾーンVM_NAME
: VM の名前PROJECT_ID
。このリクエストのプロジェクト ID(example-project
など)。これは、組織のポリシーを設定するときとは異なります。組織のポリシーの場合は組織の数値 ID が必要です。ZONE
: VM のゾーン。VM_NAME
: VM の名前。この制約では
deniedValues
リストを使用しないでください。deniedValues
リストで値を定義した場合は、deniedValues
リストにある VM のみが外部 IP アドレスの使用を制限されます。外部 IP アドレスの使用が許可される VM を正確に制御したい場合、これはセキュリティ上の問題になる可能性があります。特定の VM をallowedValues
リストから削除する場合は、deniedValues
リストに VM を配置するのではなく、allowedList
から VM を削除するように既存のポリシーを更新します。リソース階層の大部分にポリシーを設定し、特定のプロジェクトを除外する場合は、
setOrgPolicy
メソッドを使用してデフォルトのポリシーを復元します。restoreDefault
オブジェクトを指定して、そのプロジェクト内のすべての VM に外部 IP アドレスとの関連付けを許可します。プロジェクトの現在のポリシーは、デフォルト設定の影響を受けません。この組織のポリシーと IAM のロールを組み合わせて使用することにより、環境をより適切に管理できます。このポリシーは VM にのみ適用されますが、ネットワーク デバイスの外部 IP アドレスをより適切に制御して制限するには、
compute.networkAdmin
ロールを適切な関係者に付与します。ポリシーが有効になっている組織またはプロジェクト内の Compute Engine 上で実行されるすべてのサービスとプロダクトは、この組織ポリシーの影響を受けます。特に、Google Kubernetes Engine、Dataflow、Dataproc、Cloud SQL などのサービスは、このポリシーの影響を受けます。これによって問題が生じた場合は、組織のポリシーが適用されない別のプロジェクト内に別のサービスまたはプロダクトをセットアップし、必要に応じて共有 VPC を使用することをおすすめします。
- IP アドレスについて学ぶ
- ネットワークとファイアウォールについて学ぶ
- 内部 DNS を使用して VM を参照する方法を学習する。
- VPC の料金を確認する
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 を使用して認証するをご覧ください。
権限
Google Cloud コンソールで静的リージョン外部 IPv6 アドレスを予約するには、ネットワークとサブネットワークを選択する必要があります。ただし、利用可能なネットワークとサブネットワークのリストを表示するには、次の IAM 権限が付与されている必要があります。
静的外部 IP アドレスについて
静的外部 IP アドレスはプロジェクト用に予約される IP アドレスであり、解放するまで予約されたままになります。お客様やユーザーがサービスにアクセスする際に利用する IP アドレスがある場合、該当リソースでのみ使用できるようにその IP アドレスを予約できます。また、エフェメラル外部 IP アドレスを静的外部 IP アドレスに昇格させることもできます。
詳細については、IP アドレスをご覧ください。
次の表に、Google Cloud でサポートされている静的外部 IP アドレスを示します。
IP アドレスの種類 リソース IP 範囲 ソース 関連付け リージョン外部 IPv4 アドレス VM とリージョン ロードバランサ /32
Google の外部 IP アドレスのプール プロジェクト リージョン外部 IPv6 アドレス VM とサポートされているリージョン ロードバランサ /96
サブネットの外部 IPv6 アドレス範囲 サブネット グローバル外部 IPv4 アドレス グローバル ロードバランサ /32
Google の外部 IP アドレスのプール プロジェクト グローバル外部 IPv6 アドレス グローバル ロードバランサ /64
Google の外部 IP アドレスのプール プロジェクト リージョン ロードバランサとグローバル ロードバランサの一覧については、ロードバランサ タイプのサマリーをご覧ください。
静的外部 IP アドレスの使用に関する仕様
注: ネットワーク インターフェースは複数の転送ルールからトラフィックを受信できますが、ルールの中には他の外部 IP アドレスを対象とするものもあります。これらの転送ルールによって任意の数の外部 IP アドレスがネットワーク インターフェースを参照できますが、各ネットワーク インターフェースに設定できる外部 IP アドレスは 1 つだけです。
ロード バランシングと転送ルールの詳細については、負荷分散のドキュメントをご覧ください。
新しい静的外部 IP アドレスを予約する
アドレスを予約した後、予約したアドレスを作成中の新しい VM または既存の VM に割り当てます。
コンソール
gcloud
静的外部 IP アドレスを予約するには、
gcloud compute addresses create
コマンドを使用します。静的外部 IPv4 アドレスまたは静的外部 IPv6 アドレスを予約するには、次の手順を使用します。
結果を表示するには、
gcloud compute addresses describe
コマンドを使用します。gcloud compute addresses describe ADDRESS_NAME
Terraform
google_compute_address
リソースを使用して、リージョン外部 IP アドレスを作成できます。次のサンプルは、
google_compute_global_address
リソースを使用してグローバル外部 IPv6 アドレスを作成する方法を示しています。REST
新しい VM インスタンスに静的外部 IP アドレスを割り当てる
静的外部 IP アドレスを予約したら、VM に割り当てることができます。
コンソール
gcloud
VM を作成し、すでに予約した静的リージョン外部 IP アドレスを割り当てることができます。
Terraform
google_compute_instance
リソースを使用して外部 IP アドレスを割り当てることができます。REST
新しい VM に静的外部 IPv4 アドレスを割り当てるには、次の手順を行います。
新しい VM を作成するリクエストで、
networkInterfaces[].accessConfigs[].natIP
プロパティと使用する外部 IPv4 アドレスを明示的に指定します。例:{ "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IPV4_ADDRESS" }], "network": "global/networks/default" }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" } }] }
新しい VM に静的外部 IPv6 アドレスを割り当てるには、次の手順を行います。
新しい VM を作成するリクエストで、
networkInterfaces[].ipv6AccessConfigs[].externalIpv6
プロパティと使用する外部 IPv6 アドレスを明示的に指定します。例:{ "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "accessConfigs": [{ "name": "external-nat", "type": "ONE_TO_ONE_NAT" }], "ipv6AccessConfigs": [{ "externalIpv6": "IOV6_ADDRESS", "externalIpv6PrefixLength": 96, "name": "external-ipv6-access-config", "networkTier": "PREMIUM", "type": "DIRECT_IPV6" }], "stackType": "IPV4_IPV6", "subnetwork":"SUBNETWORK }], "disks": [{ "autoDelete": "true", "boot": "true", "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, }], }
既存の VM に対して外部 IP アドレスの変更または割り当てを行う
既存の VM に対して、エフェメラルまたは静的外部 IP アドレスの変更または割り当てを行うことができます。
VM は複数のインターフェースを持つことができ、各インターフェースは外部 IP アドレスを持つことができます。VM にすでに外部 IP アドレスがある場合は、まずそのアドレスを削除する必要があります。その後、既存の VM に新しい外部 IP アドレスを割り当てることができます。
コンソール
gcloud
REST
VM の外部 IPv4 アドレスまたは外部 IPv6 アドレスを変更するには、その VM に新しいアクセス構成を追加します。
転送ルールの IP アドレスを変更する
転送ルールの IP アドレスを更新する必要がある場合は、次の操作を行います。
エフェメラル外部 IP アドレスを昇格させる
VM にエフェメラル外部 IP アドレスがあり、その IP アドレスを永続的にプロジェクトに割り当てる必要がある場合は、エフェメラル外部 IP アドレスを静的外部 IP アドレスに昇格させます。エフェメラル外部 IP アドレスを予約済みに昇格しても、Google Cloud では VM に送信されたパケットは破棄されません。これは、VM に直接送信されたパケットとロードバランサによって送信されたパケットの両方について該当します。
コンソール
gcloud
静的外部 IPv4 アドレスまたは静的外部 IPv6 アドレスを昇格させるには、次の手順を使用します。
REST
エフェメラル リージョン IP アドレスを昇格させるには、
addresses.insert
メソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
エフェメラル グローバル IP アドレスを昇格させるには、次の URI に
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
リクエスト本文の必須項目の値を指定します。
外部 IP アドレスは静的外部 IP アドレスに昇格した後も、VM に接続された状態を保持します。新しく昇格した静的外部 IP アドレスを別のリソースに割り当てる必要がある場合は、既存の VM から静的外部 IP アドレスを割り当て解除します。
静的外部 IP アドレスを一覧表示する
プロジェクト用に予約した静的外部 IP アドレスを一覧表示するには、次の手順に沿います。
コンソール
プロジェクトの IP アドレスのリストを表示するには、Google Cloud コンソールで [外部 IP アドレス] ページに移動します。
gcloud
gcloud compute addresses list
コマンドを実行します。REST
静的外部 IP アドレスを取得する
静的外部 IP アドレスに関する情報を取得する手順は次のとおりです。
コンソール
gcloud
addresses describe
コマンドを使用します。ADDRESS_NAME
は、記述する外部 IP アドレスの名前に置き換えます。REST
静的外部 IP アドレスの割り当てを解除する
IP アドレスの割り当てを解除すると、その IP アドレスはリソースから削除されますが、予約されたままになります。IP アドレスの割り当てを解除したら、その IP アドレスを別のリソースに再割り当てできます。
VM を削除して、IPv4 アドレスまたは IPv6 アドレスの割り当てを解除することもできます。
コンソール
gcloud
これで静的外部 IP アドレスが使用可能になったため、別の VM に割り当てることができます。
REST
静的外部 IPv4 アドレスまたは静的外部 IPv6 アドレスの割り当てを解除するには、次の手順を行います。
静的外部 IP アドレスを解放する
静的外部 IPv4 アドレスや静的外部 IPv6 アドレスが不要になったら、IP アドレス リソースを削除して IP アドレスを解放できます。
Google Cloud コンソールを使用している場合は、静的 IP アドレスを解放できるのは、別のリソースで使用されていない場合に限られます。
gcloud CLI または REST を使用している場合は、別のリソースで使用されているかどうかにかかわらず、IP アドレスを解放できます。
コンソール
gcloud
compute addresses delete
コマンドを実行します。gcloud compute addresses delete ADDRESS_NAME
ADDRESS_NAME
は、解放する IPv4 アドレスまたは IPv6 アドレスの名前に置き換えます。REST
外部 IP アドレスを特定の VM に制限する
特定のワークロードでは、セキュリティやネットワークに関する制限など、基本的な要件が必要になることがあります。たとえば、特定の VM のみが外部 IP アドレスを使用できるように、外部 IP アドレスを制限できます。このオプションは、データの引き出しの防止や、ネットワーク分離の維持に役立ちます。組織ポリシーを使用すると、外部 IP アドレスを特定の VM に制限し、組織内またはプロジェクト内の VM に対する外部 IP アドレスの使用を制御できます。
VM の外部 IP アドレスを制御するための制約は次のとおりです。
constraints/compute.vmExternalIpAccess
制約を使用するには、外部 IP アドレスを持つことができる VM が
allowedList
に設定されたポリシーを指定します。ポリシーを指定しない場合は、すべての VM ですべての外部 IP アドレスが許可されます。ポリシーを指定すると、allowedValues
リストに含まれる VM にのみ、エフェメラルまたは静的な外部 IP アドレスを割り当てることができます。ポリシーで明示的に定義されていない組織内またはプロジェクト内の他の Compute Engine VM では、外部 IP アドレスの使用が禁止されています。許可リストと拒否リストでは、次のような VM の URI を使用して VM を指定します。
projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
外部 IP アドレスを制限するための仕様
外部 IP アドレスの制限に必要な権限
制約をプロジェクトまたは組織レベルで設定するには、組織での
orgpolicy.policyAdmin
ロールが付与されている必要があります。組織レベルでポリシー制約を設定する
コンソール
gcloud
外部 IP アクセスの制約を設定するには、組織 ID が必要です。組織 ID を確認するには、
organizations list
コマンドを実行して、そのレスポンスで数値 ID を探します。gcloud organizations list
gcloud CLI は、組織のリストを次の形式で返します。
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
gcloud resource-manager org-policies set-policy
コマンドを使用してポリシーを設定します。JSON ファイルでポリシーを指定する必要があります。次の形式の JSON ファイルを作成します。{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME", "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME", "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME" ] } }
次のように置き換えます。
または、外部 IP アドレスの取得を明示的に禁止する VM を示す
deniedValues
リストを指定できます。このリストに含まれない VM は、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。次に、リクエストでこのファイルを渡します。
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID
ORGANIZATION_ID
は、組織の数値 ID に置き換えます。外部 IP アクセスを必要としない VM の場合は、
allValues
をDENY
に設定したポリシーを設定できます。{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } }
REST
setOrgPolicy()
API を使用して制約を定義します。allowedValue
リストに指定した VM は、外部 IP アドレスを持つことが許可されます。また、外部 IP アドレスの取得を明示的に禁止する VM を示すdeniedValues
リストを指定できます。このリストに含まれない VM は、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。たとえば、以下に示すのは、組織内の特定のプロジェクトの VM が外部 IP アドレスを持つことができるように、
compute.vmExternalIpAccess
制約を組織に適用するリクエストです。POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
ORGANIZATION_ID
は組織の数値 ID です。次に、リクエスト本文で、この制約のポリシーを指定します。
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME", "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME", "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME" ] } } }
外部 IP アクセスを必要としない VM の場合は、
allValues
をDENY
に設定したポリシーを設定できます。{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } } }
プロジェクト レベルでのポリシーの設定
プロジェクト レベルでポリシーを設定すると、そのポリシーは組織レベルのポリシーよりも優先されます。たとえば、組織レベルでは
allowedValues
リストにexample-vm-1
があり、プロジェクト レベルのポリシーで同じ VM がdeniedValues
リストにある場合、VM に外部 IP アドレスを割り当てることはできません。コンソール
組織レベルでのポリシー制約の設定と同じ手順を行いますが、組織ではなくプロジェクト セレクタでプロジェクトを選択してください。
gcloud
gcloud resource-manager org-policies set-policy
コマンドを使用してポリシーを設定します。JSON ファイルでポリシーを指定する必要があります。次の形式の JSON ファイルを作成します。{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME" ] } }
次のように置き換えます。
また、外部 IP アドレスの取得を明示的に禁止する VM の
deniedValues
リストを指定できます。このリストに含まれない VM は、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。次に、リクエストでこのファイルを渡します。
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project
REST
setOrgPolicy
API を使用して制約を定義します。allowedValue
リストに指定した VM は、外部 IP アドレスを持つことが許可されます。また、外部 IP アドレスの取得を明示的に禁止する VM を示すdeniedValues
リストを指定できます。このリストに含まれない VM は、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。次の例は、特定の VM が外部 IP アドレスを持つことを許可するように
compute.vmExternalIpAccess
制約をプロジェクトに設定するリクエストです。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
PROJECT_ID
は、このリクエストのプロジェクト ID で置き換えます。リクエストの本文にはこの制約のポリシーを格納します。
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME" ] } } }
外部 IP アドレスの制限に関するベスト プラクティス
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-05 UTC。
-