ip адрес виртуальной машины

Настройка частного IP-адреса для виртуальной машины с помощью портала Azure

Виртуальной машине автоматически назначается частный IP-адрес из указанного диапазона в зависимости от подсети, в которой эта виртуальная машина развернута. Адрес сохраняется за виртуальной машиной до тех пор, пока она не будет удалена. Azure динамически назначает следующий доступный частный IP-адрес из подсети, в которой создается виртуальная машина. Если для виртуальной машины требуется назначить конкретный IP-адрес из подсети, нужно назначить статический IP-адрес.

Сценарий

Чтобы лучше проиллюстрировать процесс настройки статического IP-адреса для виртуальной машины, в этом документе будет использоваться следующий сценарий:

В этом сценарии вам нужно создать виртуальную машину с именем DNS01 в подсети FrontEnd, а затем настроить для нее статический IP-адрес 192.168.1.101.

При выполнении приведенных ниже примеров действий ожидается наличие уже созданной простой среды. Чтобы выполнять действия в соответствии с указаниями, представленными в этом документе, сначала создайте виртуальную сеть. Однако на шаге 3 используйте следующие значения:

Параметр Значение
Имя TestVNet
Пространство адресов 192.168.0.0/16
Группа ресурсов TestRG (при необходимости выберите Создать, чтобы создать ее)
Имя подсети FrontEnd
Диапазон адреса подсети 192.168.1.0/24

Создание виртуальной машины для тестирования статических частных IP-адресов

При создании виртуальной машины в режиме развертывания Resource Manager с помощью портала Azure нельзя задать статический частный IP-адрес. Вместо этого сначала создайте виртуальную машину. Затем ее частный IP-адрес можно сделать статическим.

Чтобы создать виртуальную машину под названием DNS01 в подсети FrontEnd виртуальной сети TestVNet, выполните следующие действия:

В меню на портале Azure выберите Создать ресурс.

Выберите Вычисления > Виртуальная машина.

В разделе Основные сведения укажите значения элементов, как описано в следующей таблице. Теперь выберите Далее : Диски, а затем — Далее : Сеть.

Элемент Значение
Подписка Ваша текущая подписка
Группа ресурсов TestRG (выберите в раскрывающемся списке)
Имя виртуальной машины DNS01
Регион Восточная часть США (США)
Изображение Windows Server 2019 Datacenter
Размер Размер виртуальной машины B1ls, стандартное предложение
Имя пользователя Имя пользователя учетной записи администратора
Пароль Пароль для имени пользователя учетной записи администратора
Подтверждение пароля Повторение пароля

В разделе Сеть укажите значения элементов, как описано в следующей таблице, а затем нажмите кнопку Далее.

Элемент Значение
Виртуальная сеть TestVNet
Подсеть FrontEnd

На вкладке Управление в разделе Учетная запись хранения для диагностики выберите vnetstorage. Если этой учетной записи хранения нет в списке, выберите Создать, укажите Имя vnetstorage и нажмите кнопку ОК. Наконец, нажмите кнопку Проверить и + создать.

На вкладке Проверка и создание проверьте общие сведения и щелкните Создать.

После создания виртуальной машины появляется следующее сообщение.

Получение информации о частном IP-адресе виртуальной машины

Чтобы просмотреть сведения о частном IP-адресе новой виртуальной машины, сделайте следующее:

Перейдите на портал Azure для поиска виртуальной машины. Найдите и щелкните Виртуальные машины.

Выберите имя своей новой виртуальной машины (DNS01).

Выберите Сеть, а затем — единственный сетевой интерфейс в списке.

Выберите IP-конфигурации, а затем — указанную в таблице IP-конфигурацию.

В окне Параметры частного IP-адреса в разделе виртуальной сети или подсети TestVNet/FrontEnd запишите значение параметра Назначение (Динамическое или Статическое) и IP-адрес.

Добавление статического частного IP-адреса для существующей виртуальной машины

Чтобы добавить статический частный IP-адрес для существующей виртуальной машины, выполните следующие действия:

На странице «IP-конфигурация» присвойте назначению своего частного IP-адреса значение Статическое.

Замените свой частный IP-адрес адресом 192.168.1.101 и нажмите кнопку Сохранить.

Если после нажатия кнопки Сохранить у назначения по-прежнему остается значение Динамическое, это означает, что введенный IP-адрес уже используется. Попробуйте использовать другой IP-адрес.

Удаление статического частного IP-адреса виртуальной машины

Чтобы удалить статический частный IP-адрес из виртуальной машины, сделайте следующее:

На странице «IP-конфигурация» присвойте назначению для своего частного IP-адреса значение Динамическое, а затем нажмите кнопку Сохранить.

Настройка IP-адресов в операционной системе

В операционной системе виртуальной машины не следует статически назначать частный IP-адрес, назначенный виртуальной машине Azure. Выполняйте статическое назначение частного IP-адреса лишь по необходимости. Например, при назначении виртуальным машинам нескольких IP-адресов. Если вы вручную настроили частный IP-адрес в операционной системе, убедитесь, что он совпадает с частным IP-адресом, который назначен сетевому интерфейсу Azure. В противном случае соединение с виртуальной машиной может быть разорвано. Ознакомьтесь с дополнительными сведениями о параметрах частных IP-адресов.

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

Дальнейшие действия

Ознакомьтесь с дополнительными сведениями об управлении параметрами IP-адресов.

Источник

Настройка сети VirtualBox

Виртуальные машины VirtualBox очень часто используются для тестирования различного программного обеспечения и его взаимодействия между собой. Обычно, таким программам необходим доступ к интернету. Время от времени возникает необходимость протестировать работу программ по сети или даже создать небольшую тестовую лабораторию из виртуальных машин.

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

Виды сетевых адаптеров VirtualBox

Существует несколько способов как настроить сеть в virtualbox, и каждый из них подходит для лучше для решения одной задачи и меньше для другой. Рассмотрим основные:

Теперь рассмотрим каждый вариант настройки более подробно.

Настройка сети Virtualbox

1. Настройка сети NAT

Здесь почти нет о чем говорить. Получение доступа к сети через NAT включено по умолчанию. Проброс портов я рассматривал в отдельной статье. Но если вы раньше отключали сетевые адаптеры, то чтобы включить NAT обратно достаточно открыть настройки нужной машины:

Перейти на вкладку «Сеть»:

Выбрать один из адаптеров. К виртуальной машине можно подключить несколько адаптеров и это очень удобно, так как вы можете комбинировать вместе адаптер виртуального хоста и NAT чтобы получить преимущества обоих режимов. Дальше вам нужно выбрать пункт «NAT» в списке «Тип подключения».

На вкладке «Дополнительно» вы можете настроить марку устройства адаптера и MAC адрес:

Если вы собираетесь устанавливать туда в Windows, то лучше будет работать Intel PRO/1000 MT Desktop, а для Linux можно оставить AMD PCNet FAST III, так как он поддерживается всеми операционными системами.

2. Настройка сети NAT

Теперь все машины, подключенные к этой сети, будут доступны друг другу, как в VMWare.

3. Настройка адаптера виртуального хоста

Нажмите кнопку «Создать», затем, в появившемся адаптере, напротив пункта DHCP установите галочку «Включен».

Теперь вернитесь к списку виртуальных машин, зайдите в настройки машины, «Сеть»:

Для всех машин, которые вы хотите объединить в одну сеть нужно выбирать один и тот же адаптер хоста. Если вы захотите добавить машинам также доступ в интернет, просто перейдите на вкладку «Адаптер 2», включите его и настройте NAT, как описано в первом пункте.

4. Настройка сетевого моста VirtualBox

В поле «Имя» вам необходимо выбрать сетевой интерфейс, который будет использоваться для связи с внешним миром. Минус такого способа в том, что внешние компьютеры смогут получить доступ к виртуальной машине, а это не очень хорошо с точки зрения безопасности.

5. Внутренняя сеть VirtualBox

Выводы

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

Источник

Задаём виртуальной машине IP по MAC без использования DHCP


В статье рассказывается о использовании скриптов для CentOS и Windows XP, которые устанавливают IP в соответствии с MAC сетевого интерфейса VM, а также о сложностях управления сетевым интерфейсом в Windows

Система, которую мы разрабатываем, очень активно работает с виртуальными машинами. Когда ядру системы требуется очередная машина, копируется шаблонный образ, и запускается эта копия. Таким образом, одновременно может работать очень много копий по сути одной и той же машины.

Конечно, в момент запуска каждая виртуальная машина идентична шаблонной. В том числе наследуются и установленные параметры сети. Все виртуальные машины работают в одной подсети, а значит, они не должны пользоваться тем статическим IP, который достался им от шаблонной машины — иначе будут возникать конфликты. То есть каждая машина должна получить собственный IP. Казалось бы, решение очень простое — использовать DHCP сервер и динамические IP.

Спойлер: собственно, самое интересное — в пунктах 3) и 5), остальное — для тех, кто захочет увидеть всю картину.

1. Для чего нам нужны виртуальные машины

Наш проект, Nerrvana, выполняет функциональные тесты сайтов в разных браузерах. Тесты эти работают со специальным фреймворком для функционального тестирования — Selenium, который позволяет эмулировать действия пользователя в брaузере (клики по элементам, движения мышью, ввод символов, чтение текста), делать скриншоты страниц и некоторые другие вещи.
Тест сайта представляет собой последовательность действий, которые мог бы сделать на сайте пользователь, и проверок, что результат этих действий — точно такой, как ожидается. Например, простейший тест — логин на сайт. Необходимо открыть страницу логина, ввести логин, пароль, нажать «Ввод», и убедиться, что мы залогинены — скажем, увидев стандартное приветствие. Все знают, что браузеры могут совершенно по-разному отображать и работать с одной и той же страницей, и поэтому имеет смысл выполнить одинаковые тесты в наиболее популярных браузерах. Как уже говорилось, именно этой работой и занимается наша система.

Тесты в выбранных браузерах выполняются одновременно и совершенно независимо друг от друга. Выполнение теста в одном из браузеров мы назвали спеком (speck). То есть, допустим, если я хочу выполнить тест логина на браузерах IE 8 и FF 3.6, наша система сделает два независимых спека — выполнит код тестов с использованием выбранных браузеров. Не сильно вдаваясь в подробности, скажу, что для работы каждого спека мы создаём как минимум две виртуальные машины. Одна машина, «хаб», будет заниматься собственно выполнением тестов — там есть Java и PHP, на которых должны быть написаны тесты. На второй машине, «тестере», работает Selenium RC и нужный браузер. Через Selenium RC происходит взаимодействие между тестами и браузером. После выполнения каждого спека виртуальные машины, на которых он работал, уничтожаются.

Так как одновременно работающих тестов может быть много, и каждый может использовать несколько спеков, виртуальных машин тоже может работать относительно много — 50, к примеру.

2. Проблема одинаковых статических адресов при запуске нескольких клонов VM

Для каждого типа виртуальных машин имеется шаблонный образ. Когда ядру системы требуется очередная машина, этот образ копируется, и запускается копия образа — сам образ остаётся неизменным. Таким образом, одновременно может работать очень много копий по сути одной и той же машины.

И тут появляется некоторая проблема.
Естественно, в момент запуска каждая виртуальная машина абсолютно идентична шаблонной — ведь все данные хранятся в образе, в который нельзя внести изменений. В том числе наследуются и установленные параметры сети. Так как все виртуальные машины работают в одной подсети, совершенно очевидно, что они не должны пользоваться тем статическим IP, который достался им от шаблонной машины — иначе будут возникать конфликты адресов. То есть каждая машина должна динамически получить собственный IP.
Казалось бы, решение очень простое — использовать DHCP сервер, который и выдаст каждой машине уникальный адрес.

Однако, не всё так просто. Дело в том, что ядро системы активно взаимодействует с виртуальными машинами. Оно должно проделать просто кучу работы с ними: например, убедиться, что виртуальные машины успешно стартовали, запустить Selenium RC на тестере, загрузить на хаб и выполнить сами тесты, следить за их выполнением, а потом получить обратно результаты (скриншоты, логи и т.д.). Работа ведётся через ssh.
Т.е. ядро системы, как ни крути, должно знать IP-адреса машин, которые только что были запущены по её требованию.

Мы видели два подхода к решению задачи:
1) После того, как виртуальная машина поднялась, она получает случайный адрес от DHCP, и затем каким-то образом регистрирует себя в базе — т.е. указывает, что я — машина такого-то типа, получила от DHCP такой-то адрес.
2) Каким-то образом ядро даёт понять виртуальной машине, какой адрес ей следует использовать, т.е. соответствие IP — виртуальная машина имеется ещё до запуска машины.

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

3. Кодируем IP в MAC

Как же воздействовать на ещё не запущенную машину, чтобы сообщить ей будущий ip-адрес? Мы нашли такой способ: при запуске виртуальной машины можно задать MAC-адрес виртуальной сетевой плате. А сама виртуальная машина может в любой момент его узнать. То есть MAC можно использовать как носитель информации о IP (или о чём-нибудь ещё).

Осталось заставить машину получить нужный IP, соответствующий её MAC. Это опять-таки можно сделать двумя способами.

4. Выделение IP по MAC: DHCP

Первый способ довольно очевиден. Мы запустим DHCP сервер, который будет настроен так, чтобы выдавать IP по MAC-адресу в соответствии с описанным способом кодирования.

Сценарий работы будет выглядеть так:
1) Ядру требуется VM.
2) Ядро просматривает пул IP-адресов, выбирает первый незанятый IP (например, 10.4.0.15), и преобразует его в MAC (00:16:3E:04:00:0F)
4) Ядро копирует шаблонный образ VM нужного типа, подготавливает файл конфигурации VM (в котором указывает в том числе и полученный MAC)
5) Ядро запускает VM
6) VM обращается к DHCP за адресом, тот сверяется с таблицей соответствия MAC/IP, и выдаёт IP 10.4.0.15.
7) Ядро в это время периодически пингует 10.4.0.15, и, получив ответ, начинает работать с виртуальной машиной (конечно, предварительно дождавшись старта sshd)

требуется DHCP сервер
если мы переедем в другую подсеть или получим другой пул IP-адресов, придётся менять конфигурацию не только ядра, но и DHCP
+ используется стандартный подход к получению IP

5. Выделение IP по MAC: скрипт mac2ip

Второй способ менее очевиден и требует некоторой дополнительной работы.
Он заключается в том, что VM при старте выполнит специальный скрипт, который получит MAC, преобразует его в IP, и назначит сетевой плате. Сценарий работы, таким образом, будет практически таким же — изменится только пункт 6. Он будет выглядеть так:

6) VM вычисляет свой IP на основании своего MAC, и устанавливает его перед стартом интерфейса.

+ не требуется дополнительное звено в виде DHCP и хранения там таблицы соответствия MAC-IP.
для каждой ОС потребуется свой скрипт mac2ip

Мы реализовали именно этот вариант.
Мы работаем с виртуальными машинами с CentOS 5.6 и Windows XP PRO SP3, и поэтому нам нужно было два скрипта mac2ip — для каждой из систем.
Рассмотрим оба скрипта.

a) Linux

И заставляем запускаться этот скрипт до запуска network.

b) Windows

Та же самая работа в Windows XP делается куда более заумными путями. Возможно, со временем найдётся более эффективный способ преобразования MAC в IP.

Первая проблема, с которой я столкнулся — это невозможность относительно лёгкими путями изменить адрес интерфейса ДО его включения. Таким образом, шаблонная VM должна иметь выключенный по умолчанию «сетевое подключение», иначе две одновременно запущенные копии Windows сразу после запуска попробуют использовать один и тот же адрес (он статический, т.к. для VM мы не используем DHCP).

Для манипуляций с устройствами используется утилита devcon.
Вот как это выглядит:

Добавляем этот скрипт в автозагрузку — например, так (требуется перезагрузка):

Таким образом, после выполнения этих скриптов виртуальная машина получит заданный ядром адрес, и будет готова к работе.
Ядро узнает об этом по заработавшему пингу к этому адресу.

Возможно, эта схема добавит наглядности (по клику — полный размер в новом окне):

6. Замечания

Используемый нами способ — со скриптом mac2ip в автозагрузке — оказался довольно медленным в Win XP. Во всяком случае, текущая его реализация делает свою работу 10-15 секунд. При этом время, которое уходит от старта виртуальной машины до начала выполнения скрипта mac2ip, составляет 15-20 секунд.

Однако мы не спешим перейти на использование первого способа (DHCP с привязкой IP к MAC), потому что:

— во-первых, VM у нас завершаются не штатным для них способом (т.е. centos/windows не выполняют завершение работы), а выполнением virsh destroy для VM (всё равно, что питание выдернуть). Это позволяет экономить много времени, а целостность использованной VM нас всё равно не интересует — она будет немедленно удалена после использования. Так вот, арендованный VM адрес не будет в этом случае освобождён сразу, а будет освобождён по истечении default-lease-time DHCP. Это значит, что мы не сможем сразу же запустить VM с таким же MAC (и таким же IP). Вряд ли установка default-lease-time слишком маленьким (секунды) — хорошая идея. Более реальный вариант — изучение и использование OMAPI/omshell, и с их помощью удалять ненужные записи DHCP сразу после остановки VM.

— во-вторых, для Linux получение адреса от DHCP будет происходить медленнее, чем текущий вариант с назначением статического адреса.

— в третьих — конечно, обнаружатся и другие подводные камни.

Так что относительно медленная работа текущей версии скрипта в Windows — недостаточная причина для того, чтобы перейти на использовать варинанта с DHCP.

Идеальным решением было бы ускорение работы скрипта mac2ip для Windows. Буду рад советам — поскольку это мой первый опыт в управлении сетевым интерфейсом windows из скриптов, то, возможно, уже имеется велосипед.

Update: Во-первых, The_Kf открыл глаза на банальный способ получения MAC на выключенном интерфейсе с помощью ipconfig.
Во-вторых, gribozavr провёл эксперимент, который показал, что заботиться о lease-time арендованного IP вообще не надо, потому что при привязке IP к MAC DHCP выдаст IP в любом случае машине с тем же MAC, даже ели аренда не истекла. Также он указал на stateless autoconfiguration из IPv6.
В-третьих, при общении с akshakirov я внезапно понял, почему сразу более пристально не смотрели в сторону DHCP.

Update 2: в-четвёртых, amarao предложил использовать xenstore для передачи IP в VM. В гостевой Linux-машине для этого просто надо установить xenstore-utils, однако для винды, возможно, потребуется написать утилиту для чтения из xenstore.

Источник

Читайте также:  как узнать через командную строку
Образовательный портал