воскресенье, 2 октября 2011 г.

VMware Workstation 8 Network


В двойку лидеров по известности среди продуктов VMware входит программа VMware Workstation.

Это весьма эффективное средство создания виртуальных машин на своей рабочей станции.
Продукт, в общем-то, довольно простой в использовании – особенно в недавно появившейся версии 8, где все основные действия вынесены на главный экран:

image
Рис. 1. Страница Home

С этого экрана Home мы можем создать новую ВМ, подключиться к другой машине с Workstation, или к серверу ESXi или к vCenter – чтобы поработать из той же консоли с виртуальными машинами на этих удаленных серверах. Даже можно в пару кликов перенести ВМ между Workstation и ESXi.

Прямо отсюда можно запустить VMware Converter, чтобы физический сервер или ВМ в каком-то другом формате конвертировать в формат Workstation или d формат другого продукта VMware. (Однако, кнопка запуска конвертации есть всегда, но она не работает пока вручную не загрузить и не установить сам продукт VMware Converter, он бесплатный и запуск его установки произойдет при первом клике на пункт “Virtualize a Physical Machine”).

Ну а то, ради чего я вообще затеял этот пост – скрывается в настройках сетевого адаптера виртуальной машины и пункте Virtual Network Editor страницы Home – как настраивается сеть на VMware Workstation.

Вариантов у нас несколько, найти их мы можем зайдя в свойства ВМ и выбрав сетевой контроллер:

image
Рис. 2. Настройки сетевого адаптера виртуальной машины

А настройки каждого типа сетевого подключения доступны как раз на странице Home –> Virtual Network Editor.

Пойдем по пунктам, но сначала нарисую картинку – как бы мне хотелось проиллюстрировать сеть для вашей физической машины, где установлен VMware Workstation.
Обычно, подключение к сети выглядит так:

image
Рис. 3. Иллюстрация как подключена к сети физическая машина

Это компьютер, он через коммутатор подключен в сеть. Однако, если взглянуть с другой точки зрения, эту картинку картинку можно представить слегка по другому:

image
Рис. 4. Иллюстрация как подключена к сети физическая машина, чуток с другой т.зрения
Что я имею в виду – что физический коммутатор, к которому мы подключены, нам “невиден” с точки зрения сети, так что мы обращаем внимание только на сетевой контроллер – через который получаем доступ к компьютерам во внешней сети.

И я повторю эти же картинки но для другой конфигурации – когда наш компьютер подключен сразу к нескольким сетям. Очень характерный пример – ноутбук, у которого есть классическое сетевое подключение, и Wi-Fi.
Картинка раз:

image
Рис.5. Другая физическая машина подключена сразу к двум сетям.
Картинка два:

image
Рис. 6. Другой взгляд на подключение сразу к двум сетям
Ну и последнее – кроме физического компьютера и сетей, к которым он подключен, у нас появились виртуальные машины и задачи подключить их к тем же, или отдельным, внутренним,  сетям.

image
Рис. 7. Иллюстрация задачи
И давайте танцевать от задачи. Какие варианты подключения ВМ к сети мы можем хотеть:

1) Чтобы ВМ была подключена к одной из физических сетей. Притом тут у нас два варианта
– чтобы она являлась полноправным участником физической сети (точно как физическая машина).
Это значит, например, что у ВМ должен быть IP адрес прямо физической сети.
Решение такой задачи – вариант Bridged.
- или чтобы ВМ имела доступ во внешнюю сеть, но не как ее явный участник.
Решение такой задачи – вариант NAT.
2) Чтобы ВМ была подключена к внутренней сети, сети, существующей только “внутри” физической машины, между ВМ этой физической машины. Но тут опять два варианта
- к этой внутренней сети должна иметь доступ сама физическая машина. 
Решение такой задачи – вариант Host-only.
- к этой внутренней сети не должна иметь доступ сама физическая машина.
Решение такой задачи – вариант Custom.
А вот теперь опишу эти решения.

Вводная

Если в свойствах виртуальной машины выделить сетевой контроллер, выбрать вариант подключения Custom и вызвать выпадающее меню, то мы увидим следующую картинку:
image
Рис. 8. Варианты подключения ВМ к сети
Вот первое, на чем хочется сделать акцент – каждый VMnet# это всего лишь виртуальный коммутатор. Т.е. если две виртуальные машины подключить к одному VMnet, то между ними будет связь по сети (при правильных настройках IP, разумеется).

Но эти виртуальные коммутаторы друг от друга отличаются некоторыми настройками (VMnet0, VMnet1 и VMnet8, как видно, даже в скобках подписаны – что за настройки у них по умолчанию). И вот эти настройки нас как раз и интересуют.

Поменять или увидеть из можно кликнув на странице Home –> Virtual Network Editor. Пройдя туда, мы увидим текущие настройки, у меня это настройки по умолчанию:

image
Рис. 9. Глобальные настройки сети Workstation

Bridged

Если виртуальная машина подключена к сети (VMnet#, виртуальному коммутатору) типа Bridged, то это значит примерно следующее: с точки зрения внешней, физической сети эта виртуальная машина подключена к физической сети как будто “рядом” с физической машиной. См. рис 10 и сравните его с рисунком 3.
image
Рис 10. Тут изображено одна и та же ситуация, просто слева отображен физический коммутатор, а справа нет

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

А что делать, если у нас ситуация как на рис. 5/6, т.е. физическая машина имеет несколько сетевых контроллеров, подключенных к разным сетям? Ведь одной сетевой картой ВМ бужет подключена только к одной физической сети, а к какой?

В этом случае, по умолчанию, Workstation пытается угадать, в какую сеть пытается получить доступ ВМ. Иногда ей это не удается, и мы можем помочь – как раз в глобальных настройках сети, Home –> Virtual Network Editor.

image
Рис. 11. В нижней части экрана – сетевые подключения Windows. В верхней – настройка к какому из них дает подключение виртуальный коммутатор VMnet0

NAT

Если ВМ подключена к VMnet, виртуальному коммутатору типа NAT, то иллюстрация такого подключения будет выглядеть примерно так:

image
Рис.12. Иллюстрация подключения NAT

Однако – если к этой внутренней сети  подключена сама физическая машина – в чем это отражается? А отражается это вот в чем – если зайти в список сетевых котроллеров физической Windows, там мы увидим виртуальный сетевой контроллер, который был добавлен при установке Workstation:

image
Рис.13. Среди сетевых контроллеров физической ОС выделен виртуальный контроллер, через который физическая ОС имеет доступ к виртуальному коммутатору NAT

На самом деле, их даже два по умолчанию – второй для сети Host-only, о нем потом.
Так вот, именно через этот виртуальный сетевой контроллер наша основная ОС подключена к виртуальному коммутатору VMnet8 типа NAT.

И что означает это название – NAT? Это означает, что у виртуальных машин сеть только внутренняя, в частности адреса IP другие, чем в физической сети, но если ВМ обратиться во внешнюю сеть – то у нее это получится. На физической машине работает специальная служба – NAT, которая перебрасывает запросы виртуальных машин во внешнюю сеть. Иллюстрация:

image
Рис.14. Иллюстрация работы NAT
Так же на рисунке я обозначил сервер DHCP. Действительно, VMware Workstation предлагает функционал сервера DHCP для своих внутренних сетей – так что если ОС в ВМ настроены на автоматическое получение настроек IP, то сеть (включая доступ “во вне”)  будем работать автоматически.

Настройки сервера DHCP можно увидеть и изменить в глобальных настройках:
image
Рис. 15. Настройки сервиса DHCP
А вот извне добраться до виртуальной машины так просто не получится – но это зачастую и не надо.

Впрочем, если, к примеру, вы хотите поднять в ВМ какое-то приложение, к которому надо обращаться извне, то это можно устроить. Допустим, вы подняли web-сервер в ВМ, и хотите обращаться извне на его дефолтный порт 80.

Надо настроить т.н. проброс портов, это свойство NAT, и настраивается одноименной кнопкой рядом с DHCP:

image
Рис. 16. Настройки проброса портов NAT

И работать правило с рис.16 будет примерно так:

image
Рис. 17. Иллюстрация проброса портов NAT

Host-Only

Сеть с говорящим названием “только внутри сервера” суть то же самое что NAT, только без NAT ;-).

Рис. 18. Иллюстрация host-only сети

Т.е. если в одну и ту же VMnet# типа Host-Only подключить несколько ВМ – они будут видеть друг друга. Если галочка “Connect a host virtual adapter to this network” стоит – то к этому же виртуальному коммутатору будет подключена и основная ОС.

image
Рис.19. Настройки host-only сети

В сети Host-only так же можно задействовать DHCP сервер силами VMware Workstation.

Custom

В моей свежепоставленной Workstation 8 по умолчанию заняты VMnet0, VMnet1, Vmnet8. А остальные VMnet#, с номерами по 9 включительно, также можно задействовать, и каждый из этих виртуальных коммутаторов может быть любого типа. Так что у вас может быть несколько несвязанных NAT сетей, или host-only, а так же разные VMnet могу быть bridged к разным физическим интерфейсам, т.е. вести в разные физические сети.

LAN Segments

А что такое LAN Segment, я пока не разобрался. Похоже - как host-only, но еще можно качество сети настраивать.

19 комментариев:

  1. Да, мощно задвинули! :)))

    И тем не менее, Михаил, всё же не "bridgeT", a "bridgeD"...

    С уважением,
    Umlyaut.

    ОтветитьУдалить
  2. Интересная статья буду штудировать - сейчас решаю проблему подключения медиаплеера к сети интернет. Вся загвоздка в том, что к интернет подключена WinXP на виртуалке. Вот и вопрос в том, как настроить сеть, что бы медиаплеер имел выход в интернет.Схема сети http://www.nicegoing.ru/zm1011/img_g76djmeor272ryzfnm1_30576.jpg

    ОтветитьУдалить
  3. Михаил, спасибо огромное, очень полезная статья!!!

    ОтветитьУдалить
  4. Статья просто Супер!

    ОтветитьУдалить
  5. Спасибо, для меня было полезно. Качественно и наглядно.

    ОтветитьУдалить
  6. Дочитал до конца в надежде узнать что есть "LAN Segment"... Не узнал. А очень хочется :)

    ОтветитьУдалить
  7. Здравствуйте. Статья отличная, но подскажите пожалуйста как заставить работать nat и host-only без dhcp???
    У меня не получается, отключил dhcp, настроил всё ручками так же как всё было при dhcp, пинги идут (на ya.ru), а интернета нет, даже по ip не ходит ни куда. Трассировка яндекса состоит из двух пунктов, виртуальный шлюз NAT 192.168.192.2 и сразу яндекс. Что не так сделал?

    ОтветитьУдалить
    Ответы
    1. я попробовал отключить dhcp в сети nat и настроить гостю статичный IP - все работает. так что не знаю что вам посоветовать.
      https://3e471f5f-a-f797eb5c-s-sites.googlegroups.com/a/vm4.ru/vsphere/files/nat.jpg?attachauth=ANoY7co_nOE-FPrxx5pdypTu0nhBReGNXFyncL7G6zzMdH2P4vrfRWztUwZn3lJPUeVTmKDCv_4VL34r1_xH6Ark0hgewzPTB-XKwTiQ9YOidwEFwhuIbP3RbLtjGR0bS3JlctPbT9Rf6UnPQVUuBt_0iUclNrFgQQ4pCy7vt3b5llk6IyRx-fVtrftEgv5p3Gs_hycUQh_x&attredirects=0

      Удалить
  8. Надо ещё упомянуть, что все внутренние сети должны иметь только диапазон из сетей класса С, т.е. 192.168.0.0/16. Из А и B не получится. Т.е. 10.0.0.0/8 не работает, 172.16.0.0/12 не работает. По крайней мере так было в предыдущих версиях VMware. Т.е. адреса из этих сетей вы можете назначать, но коммутироваться на внутренних коммутаторах они не будут. Пакетики не побегут.

    ОтветитьУдалить
    Ответы
    1. Почему не побегут? Не помню, как было в 6-й версии, но начиная с "семерки" все прекрасно бегает. Вообще вы можете назначать какие угодно адреса, побегут или не побегут пакетики зависит только от того, что и как вы настроили.

      Удалить
  9. Спасибо за внятную и ясную информацию! Хорошая статья, автору респект!

    ОтветитьУдалить
  10. Спасибо за статью!
    Прошу объяснить, необходимо ли, чтобы NAT был включен в ту же сеть, что и хост ?

    У меня следующая конфигурация физической сети:
    ip=129.168.1.0 , gate=192.168.1.1- это модем. Адрес адаптера хоста 192.168.1.4.

    Виртуальная сеть VMNet8 с NAT имеет параметры:
    ip=192.168.80.0, gate=192.168.80.2

    Адреса (по умолчанию) вирт. адаптеров на ВМ = 192.168.80.131 и на хосте = 192.168.80.1, этот адаптер можно и отключить.

    Когда я выхожу в интернет с ВМ, то вижу следующее :

    tracert yandex.ru
    1 192.168.80.2 - это NAT
    2 192.168.1.1 - это модем. Далее неинтересно.

    Вопрос : каким же образом пакет из сети VMNet8 попадает в сеть хоста с другим диапазоном адресов?
    Ведь в настройках VMNet8 и NAT адрес модема нигде не указан. А вирт. адаптер VMNet8 от хоста вообще можно отключить!
    Что-то я в объяснениях пропустил.

    ОтветитьУдалить
    Ответы
    1. >Вопрос : каким же образом пакет из сети VMNet8 попадает в сеть хоста с другим диапазоном адресов?

      Вот "NAT" - это название той службы, которая занимается магией "пробрасывания" пакетов из одной сети в другую и обратно.

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


      Адаптер VMNet8 действительно не при делах.

      Удалить
  11. Спасибо! Полегчало.
    Как я понимаю, NAT - приложение, запущенное на хосте (аналогично броузеру). И использует сетевую карту хоста, через которую пакет при необходимости уходит уже непосредственно на шлюз (модем) физической сети.
    Провел эксперимент с очевидным результатом : изменил для карты
    хоста адрес для шлюза, и выход из ВМ в интернет прекратился.
    Еще раз спасибо за статью! Успехов!

    ОтветитьУдалить
  12. Михаил, здравствуйте! Спасибо Вам - хорошая статья! Михаил, что значит "подключениe виртуального адаптера хоста к этой сети"? Там галочку нужно ставить,а у меня не ставится.

    ОтветитьУдалить
  13. Понимаю что тема раскрыта, однако мне как новичку не понятно, что для меня применимо. Могли бы мне помочь с настройкой?
    На физ.машину приходит белый IP, на виртуальной машине (vmware) стоит freepbx. Мне нужно сделать подключение извне по SSH к freebpx.

    ОтветитьУдалить