Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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)

like image 893
Cloud66 Avatar asked Apr 29 '14 11:04

Cloud66


2 Answers

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 header to Google as per the documentation.

like image 171
David Avatar answered Oct 21 '22 22:10

David


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.

like image 21
sanster_23 Avatar answered Oct 22 '22 00:10

sanster_23