Сетевой интерфейс виртуальной машины не знает, что такое публичный IP-адрес, все это обрабатывается SDN в Azure вне виртуальной машины, виртуальная машина просто перенаправляет трафик на нее.
Однаковы можете получить публичный IP-адрес виртуальной машины (при условии, что он назначен напрямую, а не назначен балансировщику нагрузки) с помощью службы метаданных.Вы можете вызвать локальный URL-адрес на ВМ и получить ответ JSON с информацией о ВМ, включая общедоступный IP-адрес.
В bash вы можете сделать следующий вызов:
curl -H Metadata:true "http://169.254.169.254/metadata/instance/network?api-version=2017-08-01"
ион вернет следующее:
{
"interface": [
{
"ipv4": {
"ipAddress": [
{
"privateIpAddress": "10.1.0.4",
"publicIpAddress": "X.X.X.X"
}
],
"subnet": [
{
"address": "10.1.0.0",
"prefix": "24"
}
]
},
"ipv6": {
"ipAddress": []
},
"macAddress": "000D3AF806EC"
}
]
}
Вы также можете использовать это, чтобы узнать регион виртуальной машины, размер и т. д. Полная информация здесь .