Как показать IPv4Address в виртуальной машине Azure? - PullRequest
0 голосов
/ 13 февраля 2019

Я установил две виртуальные машины (Ubuntu 18.04) в наборе доступности под балансировщиком нагрузки в Azure (также установлен nginx).Затем я развернул фрагмент кода Node JS, который включает в себя:

global.AddressIpv4

Я ожидал, что он покажет общедоступный IP-адрес.Тем не менее, он показывает частный IP-адрес 10.0.0.6.

Я не уверен, где это настроить в Azure.Я уже назначил общедоступный IP-адрес сетевому интерфейсу.

Есть идеи, почему частный IP-адрес продолжает появляться, а не общедоступный?

1 Ответ

0 голосов
/ 13 февраля 2019

Сетевой интерфейс виртуальной машины не знает, что такое публичный 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"
    }
  ]
}

Вы также можете использовать это, чтобы узнать регион виртуальной машины, размер и т. д. Полная информация здесь .

...