Виртуальные машины и сети

Рубрика: Virtualization,Новое. Автор: Александр Косивченко. Понедельник 13 Апр 2009 в 23:28

vn-4Для грамотного управления виртуальной инфраструктурой необходимо иметь представление о том, как организуется сетевое взаимодействие виртуальных машин между собой, с хостовой ОС (parent partition в терминологии MS), и с самой локальной сетью. В этой статье я постараюсь объяснить в меру своих возможностей тонкости работы виртуальных машин с сетью. Тем, кто уже работал с другими платформами виртуализации (VMWare, Virtual Server, etc.) все, о чем я буду писать, скорее всего, уже известно, тем не менее, на уровне терминологии вполне возможны некие различия.

Работа с виртуальными сетями

Все сетевое взаимодействие в среде Microsoft Hyper-V осуществляется через виртуальные сети (Virtual Networks). Де-факто виртуальная сеть – это виртуальный коммутатор, работающий на 2м уровне модели OSI. К этому виртуальному коммутатору в дальнейшем могут подсоединяться сетевые адаптеры: как виртуальные, так и физические. Тем не менее, надо отметить, что взаимодействовать между собой виртуальные сети не могут. Для такого взаимодействия необходимо некое внешнее устройство. Я все же надеюсь, что в одной из следующих версий появятся полноценные виртуальные сети с виртуальными коммутаторами – например такие, как в VMWare ESX.
В Hyper-V существует три типа виртуальных сетей:

  • External – эта виртуальная сеть имеет выход «наружу». Это означает, что к виртуальному коммутатору будет подключен порт физического сетевого адаптера, и виртуальные машины, подключенные к сети смогут работать с сетью точно так же, как обычные физические машины, подключенные к сети.
  • Internal – внутренняя сеть. Виртуальные машины, подключенные к такой сети, могут взаимодействовать только между собой и с хостовой ОС. Во «внешний мир» они выходить не смогут.
  • Private – «еще более внутренняя сеть». Виртуальные машины могут взаимодействовать только между собой, к хостовой ОС и к общей сети доступа нет.

Создание новых виртуальных сетей, а так же изменение параметров уже созданных осуществляется через Virtual Network Manager (в правой колонке консоли Hyper-V Manager). Чтобы создать новую сеть – нужно выбрать New virtual network, затем выбрать тип сети и нажать Add.

Окно Virtual Network Manager

Окно Virtual Network Manager

После нажатия Add в списке виртуальных сетей появляется новая, с дефолтным именем «New Virtual Network». Выбрав ее, можно задать новое имя сети (рекомендуется давать понятные имена – например External, Internal и т.д.). Здесь же можно поменять тип сети на другой или включить идентификацию VLAN (подробнее о VLAN – далее). Если выбран тип сети External – то здесь же можно выбрать физический сетевой адаптер, к которому эта сеть будет подсоединена. Это может быть важно, если сервер имеет несколько физических сетевых адаптеров.

Переходим к виртуальным машинам...

Логично, что для того, чтобы работать с сетью, виртуальная машина должна иметь как минимум один виртуальный сетевой адаптер. Все создаваемые виртуальные машины по умолчанию комплектуются одним сетевым адаптером. При создании виртуальной машины можно выбрать, к какой из созданных виртуальных сетей он будет подключен. Если виртуальная машина должна иметь несколько сетевых адаптеров – их необходимо добавить вручную в свойствах виртуальной машины. Разумеется, виртуальная машина должна быть в выключенном состоянии (Off), чтобы иметь возможность добавления новых «виртуальных железок». В Hyper-V есть два типа сетевых адаптеров: Network Adapter и Legacy Network Adapter. Network Adapter – работает на скорости 1Гбит/с, и требует для своей работы установленных Integration Services. Legacy Network Adapter эмулирует работу 100Мбит/с сетевого адаптера Intel 21140-based PCI Fast Ethernet Adapter. Рекомендуется использовать Network Adapter, так как он работает намного быстрее. Использовать Legacy Network Adapter имеет смысл в двух случаях:

  • Если версия ОС, установленная на виртуальной машине, не позволяет установить Integration Services.
  • Если на виртуальной машине будет использоваться удаленная загрузка ОС (к примеру – установка Windows c сервера RIS/WDS).

У любого виртуального сетевого адаптера, независимо от его типа, есть некотрые настройки.

Свойства виртуального сетевого адаптера

Свойства виртуального сетевого адаптера

Самое, пожалуй, главное здесь — выбор виртуальной сети, к которой наш адаптер будет подключен. Так же здесь можно задать адаптеру определенный MAC-адрес (мне еще ни разу не пригодилось) и присвоить адаптеру определенный VLAN ID.

А как же хост?

Как уже писалось, в некоторых случаях виртуальные сети могут взаимодействовать так же и с хостовой ОС, установленной на физическом сервере. Как это происходит? Очень просто. Допустим, у нас создана одна виртуальная сеть типа External (Ext), одна — типа Internal (Int), и одна — типа Private (Pvt). Заглянем в управление сетевыми адаптерами (Control Panel — Network and  Sharing Center — Manage Network Connections). vn-41

Сетевые адаптеры на хосте

В нашем случае — у сервера появилось три сетевых адаптера. Слева — направо:

  • «Железный» сетевой адаптер, установленный в сервер. Играет исключительно роль «моста» между гипервизором и сетью, если открыть его свойства — все протоколы 3го уровня и выше на нем  отключены, включен только Microsoft Virtual Network Switching Protocol (думаю, понятно и без перевода).
  • Виртуальный адаптер для External-сети (именно на нем прописаны IP-адрес, под которым наш сервер присутствует в сети, DNS, etc.). Взаимодействует хостовая ОС с сетью именно через этот виртуальный адаптер, и уже с него пакеты переправляются в сеть через физический адаптер.
  • Виртуальный адаптер для Internal-сети. Используется для связи виртуальной сети и хостовой ОС, с физическими сетевыми адаптерами не связан.

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

Масло масляное, или виртуальная сеть внутри виртуальной сети

Аббревиатура VLAN расшифровывается как Virtual Local Area Network. К сожалению, понятие «виртуальная сеть» мы уже использовали, так что прошу не путать «виртуальную сеть» и VLAN. Итак, что же такое VLAN? VLAN – это расширение 2 уровня OSI, заключающееся в пометке пакетов специальным номером (VLAN ID). Каждому сетевому адаптеру, входящему в VLAN, присваивается одинаковый VLAN ID. Адаптер, отправляющий пакет, помечает его своим VLAN ID. Коммутаторы (виртуальные сети, и физические коммутаторы, поддерживающие VLAN) хранят таблицу соответствия МАС-адресов сетевых адаптеров и VLAN ID, и благодаря этому к адаптерам, имеющим VLAN ID, попадают только те пакеты, которые помечены соответствующим номером, то есть, даже будучи подключенными к одному и тому же коммутатору, сетевые адаптеры могут быть разнесены по разным VLANам и таким образом находится в разных широковещательных доменах. То есть фактически – это «сеть внутри сети». В нашем случае получается еще смешнее: виртуальная сеть внутри виртуальной сети.
Проиллюстрировать принцип работы VLANов можно следующей картинкой:

Иллюстрация работы VLAN'ов

Иллюстрация работы VLAN'ов

На рисунке мы видим 3 виртуальные машины внутри одного хоста. Физически они соединены с одним виртуальным коммутатором. Тем не мене, логически – только адаптеры внутри одного VLAN могут обмениваться пакетами друг с другом.
Надеюсь, что я объяснял не слишком сумбурно, и этой статьи достаточно, чтобы понять, как организуется сетевое взаимодействие в среде Hyper-V. Если я что-то упустил – смело скажите об этом в комментариях, я обязательно поправлю.


Версия для печати Версия для печати
17 комментариев »

  1. Отзыв от Михаил — 14 Апрель 2009 в 13:01

    Не совсем понятен пункт

    «... Тем не менее, надо отметить, что взаимодействовать между собой виртуальные сети не могут. Для такого взаимодействия необходимо некое внешнее устройство. Я все же надеюсь, что в одной из следующих версий появятся полноценные виртуальные сети с виртуальными коммутаторами — например такие, как в VMWare ESX...»

    В ESX виртуальные коммутаторы точно так же между собой взаимодействовать не могут.

    Или есть еще какие то отличия, делающие вКоммутаторы Hyper-V неполноценными?

  2. Отзыв от a.kosivchenko — 14 Апрель 2009 в 13:28

    К сожалению, сейчас нет ESX под рукой, чтобы проверить. И работал я с ним давно. И мне казалось что там вроде бы можно было соединять Virtual Switches между собой.

    Извиняюсь, если я ошибся — проверим и поправим :)

  3. Отзыв от Михаил — 14 Апрель 2009 в 14:25

    можете не проверять :)

  4. Отзыв от Алексей Тараненко — 14 Апрель 2009 в 18:27

    Да, Михаил, если такой человек как вы говорит что это не возможно, значит так оно и есть :)

    Рад что вам интересен наш проект :)

  5. Отзыв от Михаил — 14 Апрель 2009 в 18:59

    Хороший проект :)

    буду читать, следить чтобы ESX не обижали слишком сильно ;)

  6. Отзыв от a.kosivchenko — 14 Апрель 2009 в 21:55

    Да кто ж его обижает! :) Очень хороший продукт, Microsoft'у есть чему поучиться :)

  7. Отзыв от Владимир — 15 Июнь 2009 в 15:38

    Автор можно увидеть эту статью в .pdf формате?

  8. Отзыв от Алексей Блинов — 10 Ноябрь 2009 в 9:31

    Господа, может быть я что-то не совсем понимаю, но в ESXi есть такая штука как dvSwitch... разве это не оно?

  9. Отзыв от Николай — 10 Ноябрь 2009 в 12:31

    В ESX для взаимодействия двух виртуальных свитчей можно использовать маааленький роутер — виртуальную машинку с 32МБ оперативки и линуксом, помещающимся на виртуальной же дискете :)

    Зачем напрямую связывать два виртуальых свитча средствами гипервизора (виртуальным патчкордом)? Это же можно петлю получить. А вдруг у нас коммутаторы STP не поддерживают? Конфуз будет :)

  10. Отзыв от Николай — 10 Ноябрь 2009 в 15:25

    А нужен вообще виртуальный патчкорд для виртуальных свитчей? Так можно и «петлю» получить, конфуз будет.

    Для связи виртуальных свитчей можно использовать маленькие виртуалки-роутеры.

  11. Отзыв от denis — 5 Июль 2010 в 16:39

    c виртуализацией на Hyper-V столкнулись недавно.

    и сразу косяк:

    1) в диспечере вирт сетей создаем сеть.

    2) в настройках вирт машины в Сетевом адаптере указываем это подключение.

    при запуске Вирт машины (установлен вин серв 2003) никаких сетевых адаптеров нет.

    из неопознанных устройств VMBUS/4&4B018EB&0

    как настроить или установить сеть?

  12. Отзыв от Илья Рудь — 5 Июль 2010 в 18:27

    Ответ прост: установить набор доп. драйверов (Integration Services ). Для Windows 2003 это обязательно.

    www.virtualizationadmin.c...218103222045.gif

  13. Отзыв от Alexey — 17 Сентябрь 2010 в 17:21

    Или достаточно установить Устаревший сетевой адаптер, но лучше поставить IS

  14. Отзыв от Сергей Ковалев — 13 Май 2011 в 5:58

    А какие настройки забиваются на втором физическом адаптере, когда его забирает виртуальная сеть? У меня сервер сам на себя откликается на 169.254.ххх.ххх, вместо того что бы отдавать с первого и главного адаптера его 192.168.1.10. Если забивать адрес из 192.168 подсети, то днс на сервере каталогов регистрирует второй адрес на не 1.10 как мне нужно.

  15. Отзыв от Владимир — 29 Август 2011 в 6:15

    У меня такая же проблема. Физический адаптер который используется только для моста виртуальной сети каким-то образом получает адрес от DHCP, в итоге сервер откликается на этот адрес, а не на реальный другого сетевого адаптера. Хотя если сделать ipconfig /all, то этого моста не видно, а только мой сетевой адаптер.

    Как решить проблему?

  16. Отзыв от Александр Косивченко — 29 Август 2011 в 11:50

    В WS2008R2 в свойствах виртуальной сети есть галочка, позволяющая External-сети быть «невидимой» для хостовой ОС.

  17. Отзыв от Сергей Ковалев — 2 Сентябрь 2011 в 8:49

    Александр, спасибо! Как сразу не заметил :( нужно просто убрать галку с «Allow managment operating system to share this network adapter» в Virtual Network Manager

RSS-лента комментариев. Адрес для трекбека

Ваш отзыв



Я не робот.



Рейтинг@Mail.ru Яндекс цитирования