Использование настольных платформ виртуализации, как на домашних компьютерах, так и в производственной среде предприятий, в последнее время становится особенно популярным. Множество пользователей применяют виртуальные машины для обучения, запуска программного обеспечения, написанного для отличной от установленной операционной системы, а также создания переносных пользовательских сред, отвязанных от конкретного оборудования. В корпоративной среде виртуальные машины позволяют производить безопасное тестирование программного обеспечения в различных конфигурациях гостевых операционных систем, используя при этом специализированные инструменты платформ виртуализации, повышающие эффективность процесса разработки и тестирования. Кроме того, одним из самых важных достоинств виртуальных машин является возможность их объединения в виртуальные сети, что позволяет на одном компьютере моделировать поведение распределенных систем, состоящих как из приложений для конечного пользователя, так и различного рода серверов, в гетерогенной среде. Гибкость виртуальных машин в отношении выделяемых им ресурсов и широкие возможности по обслуживанию и оптимизации производительности позволяет легко управлять множеством различных конфигураций виртуальных машин и создавать оптимизированные, независимые от оборудования, приложения, «упакованные» в виртуальные машины. Затем эти компоненты, состоящие из виртуальных машин, могут быть в различных вариантах объединены в сеть для моделирования различных систем.
Продукты VMware с точки зрения организации таких моделей для тестирования являются на данный момент лидирующими на рынке. В июне 2007 года продукт VMware Workstation 6 получил премию журнала Visual Studio Magazine как лучшее решение в категории Development Tools. Во многом это произошло благодаря наличию большого количества инструментов, позволяющих существенно повысить скорость разработки и тестирования, упростить процедуру развертывания приложений и настройки сетевого взаимодействия между ними. Настольная платформа виртуализации VMware Workstation стала настолько популярной, что компания Microsoft решилась на не совсем честный шаг в отношении лицензионной политики виртуализации операционных систем семейства Windows Vista: некоторые ее издания не могут быть виртуализованы. Такая ситуация не могла устроить компанию VMware, которая начала борьбу за свободное использование операционных систем на платформах виртуализации. Кроме того, VMware делает большую ставку на продукт VMware Fusion, предоставляющий возможность по наиболее тесной интеграции Mac OS и Windows Vista (под кодовым названием Unity) и демонстрирующий поистине фантастические результаты: пользователь работает как бы «в двух мирах».
В шестой версии VMware Workstation появилось множество новых функций и возможностей, касающихся, в том числе, сетевого взаимодействия. Наиболее значимое улучшение — это возможность создавать до десяти виртуальных сетевых адаптеров для виртуальной машины.
Принципы организации сетей между виртуальными машинами
Виртуальные машины на платформе VMware позволяют пользователям создавать различные комбинации виртуальных систем, работающих по различным принципам сетевого взаимодействия. Основой сети VMware являются следующие компоненты:
- виртуальные коммутаторы (Virtual Switches)
- виртуальные сетевые интерфейсы (Virtual Ethernet Adapters)
- виртуальный мост (Virtual Bridge)
- встроенный DHCP-сервер
- устройство трансляции сетевых адресов (NAT, Network Address Translation)
Фундаментальным элементом сетевого взаимодействия в VMware Workstation и VMware Server является виртуальный коммутатор. Он обеспечивает сетевое взаимодействие виртуальных машин на манер физического устройства: на виртуальном коммутаторе есть порты, к которым могут быть привязаны виртуальные сетевые интерфейсы виртуальных машин, а также другие компоненты виртуальной инфраструктуры в пределах хоста. Несколько виртуальных машин, подключенных к одному виртуальному коммутатору, принадлежат одной подсети. Виртуальный мост представляет собой механизм, посредством которого происходит привязка физического сетевого адаптера компьютера к виртуальным сетевым интерфейсам. Встроенный DHCP-сервер VMware позволяет виртуальным машинам автоматически получать IP-адрес в своей подсети, а виртуальное NAT-устройство обеспечивает трансляцию сетевых адресов при общении виртуальных машин с внешней сетью.
3 вида сетевого взаимодействия между виртуальными машинами
Продукты VMware Workstation и VMware Server предоставляют пользователям возможность назначить виртуальной машине один из трех базовых типов сетевого взаимодействия для каждого из виртуальных сетевых адаптеров:
- Bridged
- Host-only
- NAT
Каждый из этих видов сетевого взаимодействия может применяться для различных вариантов использования виртуальных машин и необходимо тщательно подбирать тип сетевого взаимодействия виртуальной машины для более эффективного ее использования совместно с другими компонентами сетевой инфраструктуры.
Bridged Networking
Этот тип сетевого взаимодействия позволяет привязать сетевой адаптер виртуальной машины к физическому сетевому интерфейсу компьютера, что дает возможность разделять ресурсы сетевой карты между хостовой и виртуальной системой. Виртуальная машина с таким типом сетевого взаимодействия будет вести себя по отношению к внешней сети хостовой системы как независимый компьютер. Вы можете назначить такой машине собственный IP-адрес в домашней сети или сети организации, либо она получит его от внешнего DHCP-сервера. Для создаваемой виртуальной машины этот тип сетевого взаимодействия назначается по умолчанию, поскольку это наиболее простой способ организации сетевого взаимодействия между виртуальной машиной, хостом и внешней сетью. Структура Bridged Networking приведена ниже.
Виртуальный сетевой адаптер гостевой системы подключается к виртуальному коммутатору VMnet0, к которому также подключен виртуальный мост, взаимодействующий напрямую с физическим сетевым адаптером.
Для того чтобы назначить виртуальной машине тип сетевого взаимодействия Bridged, необходимо зайти в меню «VM», затем «Settings», на вкладке «Hardware» выбрать виртуальную сетевую карту Ethernet и установить переключатель группы Network Connection в положение Bridged.
Host-Only Networking
Такой тип сетевого взаимодействия оптимален для целей тестирования программного обеспечения, когда вам требуется организовать виртуальную сеть в пределах хоста, а виртуальным машинам не требуется выход во внешнюю сеть. В виртуальной подсети действует DHCP-сервер, подключенный к виртуальному коммутатору VMnet1 и назначающий виртуальным машинам IP-адреса из заданного диапазона (по умолчанию 192.168.179.128 — 192.168.179.254). Структура Host-Only Networking приведена ниже:
Виртуальные сетевые адаптеры гостевых систем подключаются к коммутатору VMnet1 и взаимодействуют в подсети 192.168.179.0/24. В хостовой системе создается также виртуальный сетевой интерфейс, подключенный к VMnet1, который позволяет взаимодействовать с виртуальными машинами.
Для того чтобы назначить виртуальной машине тип сетевого взаимодействия Host-Only, необходимо зайти в меню «VM», затем «Settings», на вкладке «Hardware» выбрать виртуальную сетевую карту Ethernet и установить переключатель группы Network Connection в положение Host-Only.
NAT Networking
Этот тип сетевого взаимодействия очень похож на Host-Only, за одним исключением: к виртуальному коммутатору VMnet8 подключается устройство трансляции IP-адресов (NAT). К этому коммутатору также подключается DHCP-сервер, раздающий виртуальным машинам адреса из заданного диапазона (по умолчанию 192.168.89.128 — 192.168.89.254) и, непосредственно, сами виртуальные машины. NAT-устройство позволяет осуществлять трансляцию IP-адресов, что позволяет виртуальным машинам инициировать соединения во внешнюю сеть, не предоставляя при этом механизма доступа к виртуальным машинам извне. Структура NAT Networking приведена ниже:
В хостовой операционной системе также как и для Host-Only Networking создается виртуальный сетевой интерфейс для коммутатора VMnet 8, позволяющий хосту общаться с виртуальными машинами.
Такая модель сетевого взаимодействия оптимальна с точки зрения безопасности (поскольку невозможно инициировать извне соединение с виртуальной машиной), однако существенно снижает быстродействие сети (иногда, до 20-30 процентов). NAT-соединение может использоваться, например, для безопасной работы в Интернет из виртуальной машины.
Для того чтобы назначить виртуальной машине тип сетевого взаимодействия NAT, необходимо зайти в меню «VM», затем «Settings», на вкладке «Hardware» выбрать виртуальную сетевую карту Ethernet и установить переключатель группы Network Connection в положение NAT.
У каждой виртуальной машины может быть несколько виртуальных сетевых адаптеров, подключенных к различным виртуальным коммутаторам, на которых реализуются различные типы сетевого взаимодействия. На платформе VMware Server 1.0 может быть создано до четырех виртуальных сетевых адаптеров для одной виртуальной машины, на платформе VMware Workstation 6 — до десяти. Для того чтобы добавить виртуальный сетевой адаптер виртуальной машине, зайдите в меню «VM», выберите «Settings», далее на вкладке «Hardware» нажмите кнопку «Add» и в мастере добавления виртуальных устройств выберите «Ethernet Adapter». После этого, в мастере назначьте вид сетевого взаимодействия для этого адаптера и нажмите «Finish».
Настройка виртуальной сети с помощью Virtual Network Editor
Приложение Virtual Network Editor входит в комплект поставки VMware Workstation и VMware Server и представляет собой мощное средство управления виртуальной сетью. Для того чтобы использовать его, необходимо запустить программу vmnetcfg.exe из папки с Workstation или Server, либо в меню «Edit» выбрать пункт Virtual Network Settings.
На первой вкладке редактора виртуальной сети показаны имеющиеся виртуальные сети, их описание, подсеть, которую они образуют, а также включен ли для нее DHCP-сервер. Перейдя на вкладку «Automatic Bridging» мы увидим следующую картину:
Здесь мы можем позволить платформе VMware самой выбрать подходящий физический сетевой адаптер для привязки к виртуальному мосту (если сетевых карт несколько), а также добавить в список физические адаптеры, для которых создавать мост не нужно. Если у вас одна сетевая карта, рекомендуется оставить все как есть. Далее мы можем перейти на вкладку «Host Virtual Network Mapping».
Здесь мы можем осуществить привязку сетевых интерфейсов хоста (как физических так виртуальных) к виртуальным коммутаторам VMnet. По умолчанию виртуальные сетевые интерфейсы VMnet1 и VMnet8 привязаны к коммутаторам для Host-Only и NAT соответственно. Физический интерфейс привязан к коммутатору VMNet0. Для каждого из коммутаторов мы можем назначить подсеть путем назначения адреса и маски подсети:
Также мы можем привязать DHCP-сервер к виртуальному коммутатору, для которого есть привязка к одному из сетевых интерфейсов хоста. Эта функциональность дублирует вкладку DHCP и будет описана позднее. Рассмотрим теперь создание своей подсети на основе незанятого коммутатора VMnet2, которое начинается с вкладки «Host Virtual Adapters».
Здесь мы видим виртуальные адаптеры хоста для сетевого взаимодействия Host-Only и NAT, соответствующие им виртуальные коммутаторы и статусы устройств. Мы можем отключить или включить виртуальные устройства, а также вовсе удалить их. Добавим свой виртуальный адаптер для создания подсети виртуальных машин, нажав на кнопку «Add». Добавляем адаптер VMnet2 и нажимаем кнопку «Применить». В результате у нас появляется еще один виртуальный сетевой интерфейс на хосте и подсеть с автоматически назначенным адресом вида 192.168.x.0/24. На вкладке «Host Virtual Network Mapping» мы можем убедиться, что созданный адаптер привязан к коммутатору VMnet2, и посмотреть или изменить его подсеть. Далее перейдем на следующую вкладку, где мы можем присоединять DHCP-сервер к различным виртуальным коммутаторам.
Здесь мы видим, что DHCP-сервер работает для виртуальных коммутаторов VMnet1 и VMnet8. Мы можем также добавить коммутатор в список клиентов DHCP-сервера, нажав кнопку «Add», причем не важно привязан ли к нему какой-нибудь сетевой интерфейс хоста или нет. Внизу также виден статус сервиса, поддерживающего DHCP (vmnetdhcp.exe), и мы можем остановить, запустить или перезапустить его.
Добавляем коммутатор VMnet2 кнопкой «Add» и нажимаем «Применить». DHCP теперь в нашей подсети назначен, и мы можем отредактировать его свойства, нажав на кнопку «Properties»:
Здесь, помимо диапазона IP-адресов, назначаемых виртуальным машинам, мы можем настроить длительности аренды IP-адресов клиентами DHCP (по умолчанию и максимальную). Таким образом, присоединив DHCP-сервер к коммутатору и создав виртуальный сетевой адаптер хоста, привязанный к нему же, мы создали свою подсеть типа Host-Only.
Как уже было сказано выше, сетевое взаимодействие типа Host-Only отличается от NAT отсутствием одного лишь NAT-устройства. Это устройство, осуществляющее трансляцию IP-адресов виртуальных машин, может быть привязано только к одному виртуальному коммутатору и виртуальному сетевому интерфейсу хоста. По умолчанию в качестве основы сетевого взаимодействия через NAT используется коммутатор VMnet8 и виртуальный сетевой адаптер, привязанный к нему. На последней вкладке «NAT» можно поменять параметры этого сетевого взаимодействия:
Для того чтобы назначить NAT-устройство нашей сети VMnet2, выбираем ее из комбо и нажимаем «Применить». После этого, наша виртуальная подсеть на коммутаторе VMnet2 становится защищенной от проникновения в нее извне, а виртуальные машины посредством NAT-устройства могут инициировать исходящие соединения во внешнюю сеть, которые будет обрабатывать NAT-сервер VMware. Сервис трансляции адресов реализуется процессом vmnat.exe. На этой вкладке он также может быть установлен, запущен и перезапущен. Для настроек NAT-сервера нажмите кнопку «Edit».
Здесь можно настроить IP-адрес шлюза, используемого NAT-устройством, таймаут протокола UDP (User Datagram Protocol) в минутах (сколько держится привязка протокола UDP к сети NAT) и Config port — порт, по которому можно получить информацию о статусе устройства NAT.
Галка «Active FTP» разрешает или запрещает открытие входящего соединения от внешнего FTP-сервера в Active Mode. Если галка не выставлена, будет использоваться одноканальный режим Passive Mode. Кнопка «DNS» (DNS, Domain Name System) позволяет управлять настройками DNS-форвардинга (перенаправления запросов к DNS). Эта возможность может быть настроена только для Windows-хостов. Галка OUI (Organizationally Unique Identifier) должна быть выставлена только в том случае, если вы поменяли первую часть MAC-адреса виртуальной машины, идентифицирующую производителя сетевой карты (по умолчанию VMware назначает всем машинам свой OUI), и хотите позволить этим машинам использовать NAT-устройство.
Параметры протокола NetBIOS включают в себя таймаут процессора имен NBNS (NetBIOS Name Service), число попыток для NBNS-запросов и таймаут NBDS (NetBIOS Datagram Service).
Построение сетей из виртуальных машин с несколькими сетевыми адаптерами
Как уже было сказано ранее, каждая виртуальная машина может иметь несколько виртуальных сетевых адаптеров, привязанных к различным типам сетевого взаимодействия и коммутаторам. Добавляя виртуальной машине новые сетевые интерфейсы с различными типами сетевого взаимодействия, вы можете развернуть в пределах хостовой системы настоящую виртуальную инфраструктуру для тестирования сложных распределенных систем и в целях обучения. Например, структура виртуальной сети на хосте может быть такой:
Как видно из рисунка, нет никаких проблем в моделировании на одном физическом компьютере сложных комплексных систем, в которых действуют различного рода серверы, сетевые экраны и клиентские компьютеры. Все это можно сделать с помощью утилиты Virtual Network Editor. Кроме того, продукт VMware Workstation, ориентированный на процесс разработки и тестирования, предоставляет еще один инструмент для создания виртуальных сетей между виртуальными машинами, обладающий расширенными возможностями — Virtual Machine Teaming.
Virtual Machine Teaming в VMware Workstation
Компания VMware определяет категорию своего продукта Workstation как Development and Test не случайно. Платформа VMware Workstation обладает огромным набором инструментов, необходимых разработчикам и инженерам по качеству ПО в компаниях, занимающихся разработкой программного обеспечения. Одна из самых эффективных возможностей продукта — создание «команд» виртуальных машин, объединенных сегментами виртуальной сети для тестирования комплексных систем. По сути Virtual Machine Teaming реализует те же возможности, что и Virtual Network Editor, однако позволяет наиболее просто создавать виртуальные сети, привязывая адаптеры виртуальных машин к различным сегментам виртуальных сетей. Например, нам необходимо протестировать следующую систему: на одном из хостов расположен Web-сервер, который имеет 2 сетевых интерфейса — один для захода на него через тонкий клиент с пользовательской машины, другой — для соединения с сервером баз данных, куда клиент посылает запросы через Web-сервер. Структура такой системы представлена ниже:
Создадим три виртуальные машины, в соответствии со структурой модели, и добавим для виртуального Web-сервера еще один виртуальный сетевой адаптер. После этого в меню «File» VMware Workstation выбираем New->Team. Указываем далее, где будут размещаться файлы команды виртуальных машин, затем выбираем опцию «Yes» при вопросе «Add Virtual Machines to the team now». Далее переходим в окно добавления виртуальных машин:
Здесь мы можем добавить виртуальные машины кнопкой «Add». Добавляем требуемые машины, нажимаем «Next» и отвечаем «Yes» на вопрос «Add LAN segments to the team now» для перехода в окно добавления сетевых сегментов.
Здесь добавляем 2 сетевых сегмента для моделируемой системы кнопкой «Add» и нажимаем «Next». Затем переходим на самую интересную страницу — страницу привязки виртуальных сетевых адаптеров к сетевым сегментам.
Здесь мы можем назначить привязки виртуальных сетевых адаптеров нужным нам сегментам виртуальной сети, просто поставив галки для соответствующих сетевых интерфейсов в столбцах с сегментами. В соответствии со структурой модели назначаем для сервера баз данных и Web-сервера сегмент LAN 1 и сегмент LAN 2 для Web-сервера и клиента. Таким образом, после нажатия на кнопку «Finish», мы получим команду из виртуальных машин, соответствующую требованиям моделируемой системы.
После того как команда создана, мы можем запустить все виртуальные машины команды одним кликом и сразу же приступить к тестированию системы. Нужно отметить, что виртуальные машины, добавленные в команду, не могут использоваться независимо, а только внутри нее.
Некоторые аспекты сетевого взаимодействия VMware
При старте виртуальной машины, VMware Workstation и VMware Server автоматически назначают виртуальным сетевым адаптерам MAC-адреса. Система автоматического назначения адресов такова, что на одном хосте у виртуальных машин гарантированно не будет одинаковых MAC-адресов. Поэтому если вы используете только одну копию платформы VMware в сети организации, такая система гарантирует отсутствие конфликтов физических адресов. Однако если платформы виртуализации запущены сразу на нескольких хостах в сети, может возникнуть ситуация дублирования MAC-адресов, что приведет к конфликтам в сети и недоступности виртуальных машин. Чтобы избежать этого, вы можете вручную назначить MAC-адреса виртуальным машинам, добавив в текстовом редакторе vmx-файл строчку вида:
Ethernet[n].address = 00:50:56:XX:YY:ZZ
Где n — порядковый номер (начиная с нуля) сетевого интерфейса виртуальной машины, а XX, YY и ZZ — соответствующие компоненты MAC-адреса.
Кроме того, при применении виртуальной инфраструктуры на базе VMware Workstation или VMware Server в производственной среде, стоит помнить, что виртуальные коммутаторы VMnet на самом деле являются концентраторам («хабами»), то есть дублируют трафик на всех портах устройств VMnet. Это создает потенциальные проблемы безопасности, поскольку сетевой интерфейс, работающий в promiscuous-mode в одной из виртуальных машин может прослушивать трафик, предназначенный другим клиентам виртуального хаба.
Заключение
Платформы VMware Workstation и VMware Server являются мощными средствами по организации сетевого взаимодействия нескольких запущенных одновременно виртуальных машин в пределах хоста. Такой функциональности, как у VMware Workstation, в отношении сетевого взаимодействия нет ни у одной из настольных платформ виртуализации, присутствующих в данный момент на рынке. При тестировании программного обеспечения возможности платформ по моделированию сложных распределенных систем являются просто незаменимыми. Кроме того, на платформе VMware сервер можно создавать «парки виртуальных серверов» со своими внутренними и внешними сетевыми связями, эти системы получаются отвязанными от оборудования и являются очень гибкими в отношении перенесения их на другую платформу. В настройке виртуальных сетей скрывается много возможностей, а также различного рода тонкостей, которые позволяют очень и очень гибко настраивать виртуальные сети и получать максимум эффекта от виртуальных машин.