您可以从 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一起使用吗?