2016-09-19 3 views
1

Я создал виртуальную машину Ubuntu 16.04LTS на Azure, и мне нужно получить доступ к ее публичному IP-адресу, чтобы настроить контейнер докера, который я пытаюсь запустить на сервере. Однако, когда я делаю команду ниже от терминала в VM:Доступ к Azure Public IP внутри Linux VM

ip addr show 

я только получить обратно частный локальный IP-адресов, а не IP общественности облицовочный. Какие шаги необходимо предпринять для доступа к общедоступному IP-адресу с терминала VM?

Причина, по которой я хотел бы иметь возможность запускать публичный IP-адрес, заключается в том, что мы запускаем контейнер-докер на виртуальной машине (мы создаем несколько виртуальных машин, часть платформы тестирования нагрузки, которую мы разрабатываем в JMeter) и если мы сможем запускать IP-адрес и передавать его в контейнер докеров в сценарии запуска сервера, тогда мы сможем автоматизировать запуск нашего сервера, чтобы jmeter-сервер работал правильно с правильным IP-адресом, когда мы нажимаем сервер запуска с Лазурный портал. Не имея возможности получить доступ к публичному IP-адресу из сценария bash, нам пришлось бы вручную SSH на каждом компьютере и запускать докер и передавать публичный IP-адрес в качестве параметра докере для запуска каждого jmeter-сервера, что было бы намного более трудоемким.

+0

вам нужно ударить какой-либо внешней URL, чтобы сказать вам, что IP-соединение произошло, например, ударил сайт «что такое мой ip». возможно, у azure есть веб-сервис, который вы можете поразить, чтобы сказать вам, что вам не нужно идти «снаружи». –

+0

Спасибо за совет! Я провел последние час или два, просачиваясь в документы Azure, и похоже, что у них что-то вроде этого. Основываясь на ваших советах, я смог найти «http://www.linuxtrainingacademy.com/determine-public-ip-address-command-line-curl/», а затем запустить «curl ifconfig.me» удалось получить меня мой публичный ip. Благодаря! –

ответ

3

Существует эта VM метаданные вещь как AWS и Azure:
https://azure.microsoft.com/en-us/blog/what-just-happened-to-my-vm-in-vm-metadata-service/

но в настоящее время очень мало информации, возвращаемый этой ленты:

UbuntuInJapan:~$ curl -s http://169.254.169.254/metadata/latest/InstanceInfo 

{"ID":"_UbuntuInJapan","UD":"0","FD":"0"} 

... просто обновление и которые бесполезны для ваших усилий.

Для Public IP это то, что я обычно делаю:

#!/bin/bash 

PUBLIC_IP=$(curl -s http://checkip.amazonaws.com || printf "0.0.0.0") 
# Then you either get the public IP address in the variable or you get 0.0.0.0 
# which means you could not make the call to Amazon or Amazon is under DDoS. 
# amirite? 

# Uncomment to echo (AKA debug mode) 
echo $PUBLIC_IP 

Вы могли бы цепь множественным Что такое мой IP? услуг для увеличения вашего SLA. т.е.

# First one that works wins. 
# You can improve this by regex checking the output. 
# 
# Something like: 
# 
# if [[ $PUBLIC_IP =~ [[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\/ ]] 
#  then echo 'Good. Valid IPv4. Continue.' 
#  else echo 'Bad. Stop.' 
# fi 

UbuntuInJapan:~$ curl -s http://checkip.amazonaws.FAILS || curl -s http://canihazip.com/s 

13.78.92.21 

Некоторые услуги вернутся IPv6, если говорить IPv6 с ними, убедитесь, что вы явно передать адрес семьи curl:

$ curl -4 http://l2.io/ip 
13.78.92.21 

$ curl -6 http://l2.io/ip 
2a02:2f0b:4xxx:fxxx:4xxx:xxxx:xxxx:1072 
+0

'curl ifconfig.co', если вам нужно еще одно: D. –