我正在尝试为托管在 Google Cloud 中的实例的接口启用 IP 转发。
- 我在 Google Compute Engine 上有一个 f1 micro VM 实例。
- 我已经使用 gcloud 成功创建了 IP 转发规则这里.
命令compute forwarding-rules describe myrulenamehere
给出该规则的描述。 - 当我打开 VM 实例详细信息页面时,IP 转发被标记为关闭,我无法通过编辑按钮更改它。
如果已经创建转发规则,如何打开接口的 IP 转发?
答案1
您无法更改此值,因为它是只读已创建实例的值。你可以从 Google 官方文档中查看这里:
您只能在创建实例时设置 canIpForward 字段。实例创建后,该字段变为只读。
因此我认为您现在唯一的选择是重新创建虚拟机、目标实例和转发规则。您可以在创建时使用标志启用 ip-forwarding --can-ip-forward
,例如:
gcloud compute instances create instance-name --can-ip-forward
您也可以在创建实例时从控制台的网络接口菜单中启用它。
您也可以保留相同的转发规则,然后更新目标实例仅运行:
gcloud compute forwarding-rules set-target ...
答案2
GCP 添加了无需重新创建 VM 实例即可更新 IP_FORWARDING 的选项。
gcloud compute instances update-from-file INSTANCE_NAME
欲了解更多详情,请查看 更新实例属性。
答案3
正如@Ivan 所述,GCP 现在允许在创建后设置 canIpForward。但是如果您是 GCP 新手,则从云 shell/终端执行此操作并不直观。
打开控制台然后发出以下命令:
gcloud compute instances export $myInstanceName --project $myProjectId --zone $instanceZone --destination=config_old.txt
配置文件最终存储在你的 shell 实例中,而不是你的本地工作站中(无论文档说)。
单击终端上方的 3 个垂直点,然后单击下载。解压 zip 文件并找到 config_old.txt。编辑要更改的属性(canIpForward:true),将文件另存为 config_new.txt。单击 3 个垂直点,然后上传 -> 文件 -> 浏览器 -> 上传。
上传后发出以下命令:
gcloud compute instances update-from-file $myInstanceName --project $myProjectId --zone $instanceZone --source=/home/some_folder/config_new.txt --most-disruptive-allowed-action=REFRESH
检查实例的网络接口:IP 转发现已开启
带值的示例:
gcloud compute instances export server1-example-com --project example-project --zone us-west4-c --destination=config_old.txt
gcloud compute instances update-from-file server1-example-com --project example-project --zone us-west4-c --source=/home/some_folder/config_new.txt --most-disruptive-allowed-action=REFRESH