2 ms·
This code seems to rely on IP ranges and whois lookups, which won't work if you're running on a network / VPC that has no internet access Some clouds provide a
by ereyes01 10y ago
This code seems to rely on IP ranges and whois lookups, which won't work if you're running on a network / VPC that has no internet access
Some clouds provide a metadata api accessible via a link-local address. These are accessibly regardless of what network your instance is in.
AWS Metadata API: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-insta...
GCE Metadata API: https://cloud.google.com/compute/docs/metadata https://cloud.google.com/compute/docs/metadata
Azure Metadata API: https://azure.microsoft.com/en-us/blog/what-just-happened-to-my-vm-in-vm-metadata-service/ https://azure.microsoft.com/en-us/blog/what-just-happened-to...
This library only appears to support detecting AWS/GCE/Azure, so perhaps trying URLs in each metadata API with no / minimal timeout is a more robust way of accomplishing this instead of relying on whois, and could provide the same functionality as is currently supported in the library.
The downside of this approach is that maybe some clouds/VPS's don't have metadata APIs accessible in this manner. Maybe this doesn't work for some more obscure services, if you want to be super comprehensive.
- booop 10y agoThe tool doesn't look like it's meant to be run within a cloud. Instances in a VPC without internet access would have only private IP addresses within the CIDR range of the subnet in which they are launched. It's to find out which cloud a public IP address belongs to, for which the public data source/whois lookup seems the only option. PS: the metadata (in case of AWS) can be accessed only within the instance itself.