您可以从 Google Compute VM 实例中获取外部 IP 地址吗?

Posted

技术标签:

【中文标题】您可以从 Google Compute VM 实例中获取外部 IP 地址吗?【英文标题】:Can you get external IP address from within a Google Compute VM instance? 【发布时间】:2014-06-15 06:52:12 【问题描述】:

查询网络接口只会返回内部实例IP地址信息。 是否可以从正在运行的实例内部的某处获取外部 IP 地址信息?

例如,AWS 有一个用于实例信息的元数据 REST 端点:curl http://169.254.169.254/latest/meta-data/public-ipv4

(来源:http://tech-queries.blogspot.co.uk/2011/06/how-to-get-public-ip-for-amazon-ec2.html

【问题讨论】:

更新:原来有一个元数据端点。为了其他人有这个问题 - 你可以简单地执行curl -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip 考虑将您的评论移至答案,以便您可以将此问题标记为已回答。这样其他人在搜索时就会知道它已被回答(并且您将获得答案!)。 更新 2:Google 更改了元数据的 DOMAIN:curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip 请参阅:cloud.google.com/compute/docs/… 【参考方案1】:

这里是在各种云上获取公共 IPv4 的链接。

天蓝色

curl -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"

AWS

curl http://169.254.169.254/latest/meta-data/public-ipv4

GCP

curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip

由于 169.254.169.254 是上述这些云厂商的全局元数据服务器,因此无需使用不同的域名。

【讨论】:

【参考方案2】:

您可以通过http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip 的 HTTP GET 获取公共 IP 地址。您必须按照 the documentation 将 Metadata-Flavor 标头设置为 Google。

【讨论】:

仅供参考,在撰写此评论时,在链接的文档中找不到短语external-ip,但答案仍然按预期工作。

以上是关于您可以从 Google Compute VM 实例中获取外部 IP 地址吗?的主要内容,如果未能解决你的问题,请参考以下文章

Google Compute Engine:如何从外部提出请求?

非抢占式 Google Compute Engine VM 上的 ngrok

从CD Pipeline SSH到Compute Engine VM

Google的Container OS可以与Compute Engine上的gRPC一起使用吗?

将文件从 Google Compute Engine VM 复制到 Windows 本地主机

Google Compute Engine VM 上的暂存盘可见性