Cloud66
Cloud66

Reputation: 394

Can you get external IP address from within a Google Compute VM instance?

Querying the network interface will only return the internal instance IP address info.
Is it possible to get external IP address info from somewhere inside the running instance?

As an example, AWS has a metadata REST endpoint for instance info:
curl http://169.254.169.254/latest/meta-data/public-ipv4

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

Upvotes: 37

Views: 14762

Answers (2)

sanster_23
sanster_23

Reputation: 860

Here are the links for getting Public IPv4 on various clouds.

Azure

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

Since 169.254.169.254 is a global metadata server for these above cloud vendors, no need to use different domain names.

Upvotes: 30

David
David

Reputation: 9721

You can get the public IP address with an HTTP GET of http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip. You must set the Metadata-Flavor: Google in HTTP header as per the documentation.

Upvotes: 37

Related Questions