如何更改外部临时IP地址

3

我在Google Cloud上有一个虚拟机实例,它具有外部的短暂IP地址。当该实例停止和启动时,IP地址应该会改变,但是却没有改变。如何手动更改短暂IP地址?

1个回答

2
根据文档中的IP地址部分外部IP地址
临时外部IP地址可供虚拟机实例和转发规则使用。 临时外部IP地址仅附加到VM实例,直到VM停止并重新启动或该实例终止。如果实例停止,则分配给实例的任何临时外部IP地址都将释放回通用计算引擎池,并可供其他项目使用。当停止的实例再次启动时,会为实例分配新的临时外部IP地址。 作为一种可能的解决方法,每次想要更改时,您可以保留一个外部IP地址。 请参阅下面我的步骤:
  1. 创建VM实例:
$ gcloud compute instances create instance-1 --zone=us-central1-a --machine-type=n1-standard-1 --image=ubuntu-1804-bionic-v20200610 --image-project=ubuntu-os-cloud
Created [https://www.googleapis.com/compute/v1/projects/test-prj/zones/us-central1-a/instances/instance-1].
NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
instance-1  us-central1-a  n1-standard-1               10.128.0.5   35.239.122.55  RUNNING

翻译:
  1. 保留一个外部IP地址:
$ gcloud compute addresses create external-ip-upd-1 --region=us-central1
Created [https://www.googleapis.com/compute/v1/projects/test-prj/regions/us-central1/addresses/external-ip-upd-1
$ gcloud compute addresses list
NAME               ADDRESS/RANGE  TYPE      PURPOSE  NETWORK  REGION        SUBNET   STATUS
external-ip-upd-1  34.66.150.26   EXTERNAL                    us-central1            RESERVED
  1. 取消分配 虚拟机实例的现有外部 IP:
$ gcloud compute instances describe instance-1 --zone=us-central1-a 
...
networkInterfaces:
- accessConfigs:
  - kind: compute#accessConfig
    name: external-nat
    natIP: 34.66.150.26
    networkTier: PREMIUM
    type: ONE_TO_ONE_NAT
  fingerprint: 4vzdAl27owk=
  kind: compute#networkInterface
  name: nic0
  network: https://www.googleapis.com/compute/v1/projects/test-prj/global/networks/default
  networkIP: 10.128.0.5
  subnetwork: https://www.googleapis.com/compute/v1/projects/test-prj/regions/us-central1/subnetworks/default
...
$ gcloud compute instances delete-access-config instance-1 --access-config-name "external-nat" --zone=us-central1-a
Updated [https://www.googleapis.com/compute/v1/projects/test-prj/zones/us-central1-a/instances/instance-1].
$ gcloud compute instances list
NAME                  ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
instance-1            us-central1-a   n1-standard-1               10.128.0.5                   RUNNING

4. 分配新的外部IP地址:
$ gcloud compute instances add-access-config instance-1 --access-config-name "external-nat-upd-1" --address 34.66.150.26 --zone=us-central1-a
Updated [https://www.googleapis.com/compute/v1/projects/test-prj/zones/us-central1-a/instances/instance-1].
$ gcloud compute instances list
NAME                  ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
instance-1            us-central1-a   n1-standard-1               10.128.0.5   34.66.150.26    RUNNING

重复步骤2-4来进行下一个更改,并释放未使用的外部IP地址:
$ gcloud compute addresses create external-ip-upd-2 --region=us-central1 
$ gcloud compute addresses list
NAME               ADDRESS/RANGE  TYPE      PURPOSE  NETWORK  REGION        SUBNET   STATUS
external-ip-upd-2  34.71.149.223  EXTERNAL                    us-central1            RESERVED
external-ip-upd-1  34.66.150.26   EXTERNAL                    us-central1            IN_USE
$ gcloud compute instances delete-access-config instance-1 --access-config-name "external-nat-upd-1" --zone=us-central1-a
$ gcloud compute instances add-access-config instance-1 --access-config-name "external-nat-upd-2" --address 34.71.149.223 --zone=us-central1-a
$ gcloud compute instances list
NAME                  ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
instance-1            us-central1-a   n1-standard-1               10.128.0.5   34.71.149.223   RUNNING
$ gcloud compute addresses delete external-ip-new --region=us-central1

如果您注意到最近预留的IP地址曾经使用过,您可以预留另一个IP地址以获得另一个IP地址,然后释放未使用的IP地址。 更新 如果您认为发现了问题,您可以在Google Public Issue Tracker上提交报告或请求功能以避免手动重新配置。

感谢Serhii的回复。我会尝试这些步骤。 - Ricardo Romero
谢谢!如果我的回答有帮助的话,请给我点赞/接受我的答案。 - Serhii Rohoza
上述需要关闭以更改临时外部IP的限制似乎不再有效?(指链接的规范)实际上,现在我们似乎也可以对临时IP进行运行时更改。https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address#IP_assign - Starfish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接