Журнал Системный Администратор, Ноябрь 2003

Журнал Системный Администратор

Ноябрь 2003

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке

Версия для печати Вернуться к оглавлению

Виртуальный полигон для разработчика и администратора на основе Linux и VMWare

Андрей Бешков

В первой статье этого цикла, опубликованной в сентябрьском номере журнала «Системный администратор», я довольно подробно описал, что такое технология виртуальных машин VMWare Workstation и каково ее предназначение. Также мы изучили теоретические основы функционирования, способы и возможные цели практического применения VMWare Workstation в повседневной деятельности администратора. Свою точку зрения на вопрос, для решения каких задач стоит применять подобный комплекс программного обеспечения, я высказывал в предыдущей статье. Ну а для тех, кто присоединился к нам только сейчас, кратко повторим содержание сказок тысячи и одной ночи, прозвучавших раньше. Таким образом, тем, кто еще не в курсе, я намекаю, что она была посвящена установке, настройке и опыту успешного применения VMWare Workstation на платформе Windows. Господам линуксоидам просьба перестать плеваться и все же найти в себе силы прочесть вышеуказанную статью. Сделать это необходимо хотя бы по той простой причине, что в данной статье я сознательно буду говорить только о необходимом минимуме теории функционирования VMWare Workstation. Вместо этого мы обсудим особенности дизайна виртуальных машин и множество прочих полезных вещей. Думаю, лучше потратить время на изложение новых знаний, чем на повторение пройденного материала.

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

Операционная система, под управлением которой работает программа VMWare Workstation, называется «основной» системой. Такие системы, в свою очередь, делятся на официально поддерживаемые и те, кому не повезло. Начнем с перечисления имен титулованных особ из рода Linux:

n  Mandrake Linux 8.2, 9.0

n  Red Hat Advanced Server 2.1

n  Red Hat Linux 7.0, 7.1, 7.2, 7.3, 8.0

n  SuSe Linux Enterprise Server 7,8

n  SuSe Linux 7.3, 8.0, 8.1

Официально поддерживаемыми называются те виды Linux, для которых разработчики VMWare Workstation создали бинарные файлы модулей, загружаемых в ядро. Пользователи всех остальных версий Linux должны компилировать такие модули из исходных текстов самостоятельно.

В качестве основной Linux-системы ALT Linux Master 2.2 был выбран вопреки тому факту, что он отсутствует в приведенном выше списке, но в то же время довольно широко распространен среди русскоязычных пользователей, и, наконец, за то, что вовремя оказался под рукой. Процедура установки на любой из официальных Linux-дистрибутивов слишком проста, чтобы научить читателя чему-то полезному. Многие подводные камни пройдут мимо и не будут замечены до тех пор, пока не придется самостоятельно устанавливать виртуальные машины для работы под управлением варианта Linux, неизвестного авторам VMWare Workstation. Пользуясь моим опытом, читатель ценой малой крови научится устанавливать VMWare Workstation на любое множество разновидностей Linux.

Теперь перейдем ко второму виду систем. Системы, запущенные внутри контейнера виртуальной машины VMWare Workstation, называются «гостевыми».

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

На приведенной выше схеме мы видим, что в сетях VMnet3 и VMnet2 находятся машины, работающие под управлением операционных систем Windows 98SE и Windows 2000, символизирующие обычные рабочие станции. Машина Windows 98SE имеет статический адрес 192.168.120.15, а Windows 2000 получает адрес 192.168.80.128 динамически с помощью DHCP. Сеть Vmnet1 используется нами как демилитаризованная зона (DMZ). Внутри нее обитает машина со статическим адресом 192.168.40.32 под управлением Linux Mandrake 9.0. На ней для демонстрации работы сетевых служб установлен веб-сервер Apache. Между собой все три сети, перечисленные выше, соединены с помощью шлюза, как ни странно, имеющего также три сетевых интерфейса и функционирующего под управлением FreeBSD 4.7. Я надеюсь, всем понятно, что для облегчения стыковки наших сетей все три интерфейса машины FreeBSD должны иметь фиксированные адреса. Ну и в роли нашего последнего героя выступает машина NetBSD с двумя интерфейсами. Первый из них с адресом 192.168.40.57 смотрит в демилитаризованную зону, а второй является шлюзом в Интернет. На втором интерфейсе 192.168.32.128 работает механизм преобразования сетевых адресов (NAT), это, в свою очередь, дает возможность предоставить доступ к веб-серверу клиентам, находящимся в Интернете. Частично благодаря этому машины, находящиеся в наших локальных сетях, могут легко пользоваться услугами не только Linux веб-сервера, но и какого угодно другого веб-сервера, расположившегося в любой точке Интернета.

С точки зрения VMWare Workstation наши тестовые сети будут выглядеть так.

На первый взгляд схема сетевых взаимодействий выглядит устрашающе сложно, но на самом деле это не так, и через несколько минут вы будете с легкостью ориентироваться в топологии наших сетей. Итак, на рисунке мы видим все перечисленные ранее хосты и их интерфейсы. Присмотревшись внимательно, легко разобраться в соответствии между IP-адресами и интерфейсами. Далее изображены три виртуальных коммутатора для сетей host-only VMnet1 (192.168.40.0), VMnet2 (192.168.80.0), VMnet3 (192.168.120.0). Соответственно для работы с устройством NAT (192.168.32.2) предназначена сеть VMnet8, для которой по умолчанию используется адресное пространство 192.168.32.0.

Также обратите внимание на тот факт, что виртуальные DHCP-сервера работают только в сетях VMnet2 и VMnet8. Исходя из того факта, что в сетях VMnet1 и VMnet3 используются статические IP-адреса, DHCP-сервера этих сетей отключены за ненадобностью.

Итак, приступим к установке. На сайте производителя заказываем себе тестовый серийный номер для Linux. Все подобные лицензии действуют в течение 30 дней с момента заказа. Таким образом, мы получаем в свое распоряжение на целый месяц полнофункциональную версию программы. Через несколько минут в наш ящик электронной почты упадет два письма с серийными номерами для разных платформ. Запрашивать новые тестовые лицензии можно неограниченное количество раз, но на разные почтовые ящики. Таким образом, можно использовать VMWare Workstation, не нарушая никаких законов, сколько угодно долго. Подобная лояльная политика персонала VMWare.inc вызывает искреннее уважение.

Дело в том, что дистрибутив VMWare Workstation для Linux распространяется в двух форматах – rpm и tar.gz. Скачать их можно тут: http://www.vmware.com/download/workstation.html. Также не забудьте взять фирменную документацию в формате pdf. Я расскажу о процедуре установки каждого из этих дистрибутивов VMWare Workstation. Таким образом, вы сможете выбрать способ, наиболее подходящий лично вам. Ну а процедура конфигурирования, которая последует сразу за инсталляцией, одинакова для обоих видов дистрибутивов.

Первым делом давайте рассмотрим наиболее простой способ. Для установки из rpm нужно выполнить всего одну команду.

# rpm -i VMware-workstation-4.0.0-4460.i386.rpm

Убеждаемся, что все установилось правильно.

# rpm -qa | grep VMware

VMwareWorkstation-4.0.0-4460

На этом действия с rpm можно считать законченными. Переходим к инсталляции из tar.gz:

# tar  zxvf  VMware-workstation-4.0.0-4460.tar.gz

Распаковываем дистрибутив и в результате получаем директорию vmware-distrib. Переходим в нее и запускаем скрипт инсталляции.

# cd vmware-distrib

# ./vmware-install.pl

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

In which directory do you want to install the binary files?

[/usr/bin]

Скрипт спрашивает, куда складывать выполняемые файлы. Ответ по умолчанию нас вполне удовлетворяет.

In which directory do you want to install the library files?

[/usr/lib/vmware]

Следующий вопрос касается того, куда нужно поместить библиотечные файлы. Поступаем так же, как и в предыдущем случае.

In which directory do you want to install the manual files?

[/usr/share/man]

А здесь мы будем хранить документацию для VMWare Workstation в формате man.

In which directory do you want to install the documentation files?

[/usr/share/doc/vmware]

Скрипт предложил поместить документацию в формате txt в директорию /usr/share/doc/vmware/. Пусть будет так, я не против, да и места на жестком диске не жалко.

The path "/usr/share/doc/vmware" does not exist currently. This program is going to create it, including needed parent directories. Is this what you want?

[yes]

Жалуется на то, что директории /usr/share/doc/vmware не существует, и спрашивает, создавать ли ее. Отвечаем «yes». Кстати, после инсталляции, сходив в директорию /usr/share/doc/vmware/, видим, что кроме лицензий и инструкций по установке там больше ничего нет. Все то же самое можно увидеть внутри директории doc дистрибутива VMWare Workstation. Ну что же, не будем останавливаться и продолжим настройку.

What is the directory that contains the init directories (rc0.d/ to rc6.d/)?

[/etc/rc.d]

Тут нужно указать, где находится директория со скриптами для разных уровней загрузки системы. Для используемого мною дистрибутива это директория /etc/rc.d/.

What is the directory that contains the init scripts?

[/etc/rc.d/init.d]

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

Before running VMware Workstation for the first time, you need to configure it by invoking the following command: "/usr/bin/vmware-config.pl". Do you want this program to invoke the command for you now?

[yes]

Можно считать инсталляцию завершенной. Скрипт спрашивает, нужно ли приступить к конфигурированию. Оно производится с помощью скрипта /usr/bin/vmware-config.pl. Теперь к нам присоединяются те, кто производили установку из rpm. Они должны запустить этот скрипт вручную.

Узнаем версию ядра. Чуть позже эти знания обязательно пригодятся нам.

# uname -a

Linux  tigroid.net 2.4.20-alt5-up #1 Sun Feb 16 16:46:13 MSK 2003 i686 unknown unknown GNU/Linux

Запускаем скрипт конфигурирования:

/usr/bin/vmware-config.pl

You must read and accept the End User License Agreement to continue. Press enter to display it.

Нажимаем Enter и читаем лицензионное соглашение. Переход между страницами соглашения осуществляется клавишей «Пробел». Дойдя до конца, видим приглашение принять лицензию.

Do you accept?

(yes/no)  yes

Отвечаем «yes» и движемся дальше.

Trying to find a suitable vmmon module for your running kernel.

 

None of VMware Workstation's pre-built vmmon modules is suitable for your running kernel.  Do you want this program to try to build the vmmon module for your system (you need to have a C compiler installed on your system)?

[yes]

Система рапортует о том, что не смогла найти модули, подходящие к нашему ядру. Список доступных модулей можно увидеть в директории /usr/lib/vmware/modules/binary. Далее система хочет убедиться в том, что у нас установлен работоспособный компилятор языка C.

Setup is unable to find the "make" program on your machine. Please make sure it is installed. Do you want to specify the location of this program by hand?

[yes]

Говорит, что не может найти утилиту make на нашей машине, и предлагает поискать ее самостоятельно, а затем сообщить правильный путь. Ну что же, попробуем найти то, что нам нужно.

# which make

which: no make in (/root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin)

Теперь посмотрим в списке установленных пакетов:

# rpm -qa | grep make

Как ни грустно признать такой факт, но, судя по всему, этой утилиты у нас и вправду нет.

Вставляем в привод первый диск дистрибутива и переходим в директорию с пакетами.

# cd /mnt/cdrom/auto/ALTLinux/RPMS

Ставим make:

# rpm -i make-3.79.1-ipl6mdk.i586.rpm

Те, у кого под рукой нет дисков с Alt Linux, но есть постоянное подключение к Интернету, могут воспользоваться репозитарием пакетов сайта altlinux.ru. Устанавливать пакеты в этом случае можно с помощью программы apt-get или synaptic.

После инсталляции make прерываем сценарий vmware-config нажатием клавиш <Ctrl+C> и запускаем его опять.

Скрипт снова спрашивает о наличии компилятора, на это мы ему вновь отвечаем «yes».

И в ответ получаем вот такую неприятную ошибочку.

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

 

i586-alt-linux-gcc: No such file or directory

Your compiler "/usr/bin/gcc" is not supported by this version of VMware Workstation.

 

Unable to continue.

 

For more information on how to troubleshoot module-related problems, please visit our Web site at "http://www.vmware.com/download/modules/modules.html" and "http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".

 

Execution aborted.

Начинаем разбираться с проблемой.

# rpm -qa | grep gcc

libgcc3.2-3.2.1-alt2

gcc-common-1.2.1-alt2

Судя по всему, компилятор действительно отсутствует, в наличии только служебные пакеты для gcc.

В ALT Linux для удобства администрирования используется концепция альтернатив. Это означает, что все наиболее важные системные утилиты должны иметь ссылки на свои бинарные файлы из каталога /etc/alternatives:

#ll /etc/alternatives/gcc

lrwxrwxrwx 1 root  rpm  20 Aug 29 00:39 /etc/alternatives gcc -> /usr/bin/gcc_wrapper

Таким образом, мы видим, что файл /etc/alternatives/gcc указывает на файл /usr/bin/gcc_wrapper, который не является полноценным компилятором. А служит лишь для того, чтобы выводить сообщение об ошибке на случай, если пользователь попытается запустить его.

# ./gcc_wrapper

i586-alt-linux-gcc: No such file or directory

Такая вот своеобразная заглушка. Ну что же, значит, придется снова ставить все самому. Переходим на диск 3 дистрибутива и пытаемся устанавливать пакет gcc2.96-2.96-alt3.i586.rpm. Внимательный читатель может задать вопрос, почему мы используем gcc именно этой версии, когда нам доступна гораздо более новая версия 3.2. Ответ очень прост: ядро, на котором работает система, собрано версией 2.96 компилятора gcc. Так что если попытаться поставить что-то другое, скрипт инсталляции VMWare Workstation наотрез откажется работать.

# rpm -i gcc2.96-2.96-alt3.i586.rpm

error: failed dependencies:

   cpp2.96 = 2.96-alt3 is needed by gcc2.96-2.96-alt3

   binutils >= 1:2.13.90.0.4-alt2 is needed by gcc2.96-2.96-alt3

   glibc-devel is needed by gcc2.96-2.96-alt3

Итак, судя по результатам работы команды rpm, у нас неудовлетворенные зависимости между пакетами. Начнем разрешение конфликтов. Как всегда, ехидно замечаем, что счастливчики, пользующиеся apt-get или synaptic, подобных проблем не почувствуют. Мое нежелание использовать apt-get связано с тем, что я предпочитаю делать все самостоятельно. Каким из перечисленных способов добавлять программное обеспечение в систему, оставляю на ваше усмотрение. Ну а я займусь увлекательной игрой, суть которой сводится к поиску и установке следующих пакетов.

# rpm -i cpp2.96-2.96-alt3.i586.rpm

# rpm -i kernel-headers-common-1.0-alt2.noarch.rpm

# rpm -i kernel24-headers-2.4.20-alt5.i586.rpm

# rpm -i glibc-devel-2.2.6-alt0.6.i586.rpm

# rpm -i libbfd-2.13.90.0.4-alt2.i586.rpm

# rpm -i binutils-2.13.90.0.4-alt2.i586.rpm

# rpm -i gcc2.96-2.96-alt3.i586.rpm

Вновь запускаем скрипт, система снова спросит о компиляторе, а мы опять нажмем «Yes», соглашаясь с тем, что вот теперь-то у нас точно есть компилятор.

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

На экране появится надпись о том, что в качестве компилятора будет использоваться /usr/bin/gcc. Нас такой поворот событий вполне удовлетворяет, поэтому с легким сердцем переходим к следующему шагу.

What is the location of the directory of C header files that match your running kernel?

[/usr/src/linux/include]

Смотрим, куда установили заголовочные файлы нашего ядра, на основе которых VMWare Workstation будет собирать модули, загружаемые в работающее ядро.

# rpm -qpl kernel24-headers-2.4.20-alt5.i586.rpm

Судя по всему, это директория /usr/lib/kernel/2.4.20-alt5/include/. Пишем ее в ответ на приглашение и снова жмем «Enter». Система начнет компиляцию, и на экране начнут появляться надписи вроде:

Extracting the sources of the vmmon module.

 

Building the vmmon module.

 

make: Entering directory `/root/tmp/vmware-config0/vmmon-only'

make[1]: Entering directory `/root/tmp/vmware-config0/vmmon-only'

make[2]: Entering directory `/root/tmp/vmware-config0/vmmon-only/driver-2.4.20-alt5-up'

make[2]: Leaving directory `/root/tmp/vmware-config0/vmmon-only/driver-2.4.20-alt5-up'

make[2]: Entering directory `/root/tmp/vmware-config0/vmmon-only/driver-2.4.20-alt5-up'

make[2]: Leaving directory `/root/tmp/vmware-config0/vmmon-only/driver-2.4.20-alt5-up'

make[1]: Leaving directory `/root/tmp/vmware-config0/vmmon-only'

make: Leaving directory `/root/tmp/vmware-config0/vmmon-only'

Система закончит сборку модуля vmmon и перейдет к следующему модулю по имени vmnet. В результате сборки каждого модуля должна появляться вот такая надпись: «The module loads perfectly in the running kernel», говорящая, что созданный модуль загружается в ядро без конфликтов.

Далее отвечаем на вопрос, хотим ли мы, чтобы наши виртуальные машины могли работать с сетью.

Do you want networking for your virtual machines?

(yes/no/help) [yes]

Как обычно, радостно соглашаемся и переходим на следующую ступеньку.

Configuring a bridged network for vmnet0.

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

Configuring a NAT network for vmnet8.

 

Do you want this program to probe for an unused private subnet? (yes/no/help)

[yes] no

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

What will be the IP address of your host on the private network?

[172.16.252.1] 192.168.32.1

What will be the netmask of your private network?

[255.255.255.0]

Соответственно описываем нужную нам для NAT-сеть и ее маску.

The version of DHCP used in this version of VMware Workstation is licensed as described in the "/usr/share/doc/vmware/DHCP-COPYRIGHT" file.

 

Hit enter to continue.

Нажав «Enter», приступаем к изучению лицензии на усеченной версии сервера DHCP, поставляющегося в комплекте с VMWare Workstation.

Do you want to be able to use host-only networking in your virtual machines?

[no] yes

Разрешаем использовать сети типа host-only. Что это за сети и каково их предназначение, читайте в первой статье.

Do you want this program to probe for an unused private subnet? (yes/no/help)

[yes] no

Запрещаем автоматический поиск свободных сетей, потому что мы хотим самостоятельно выбирать адреса раздаваемых сетей. Главное – случайно не напороться на уже существующую в локальной сети подсеть. Иначе некоторое количество «приятных» минут вам обеспечено.

What will be the IP address of your host on the private network? 192.168.40.0

 

What will be the netmask of your private network? 255.255.255.0

 

The following hostonly networks have been defined:

 

. vmnet1 is a host-only network on private subnet 192.168.40.0.

Вот так мы создали сеть Vmnet1 с адресным пространством 192.168.40.0 и маской сети 255.255.255.0.

Повторяем те же действия для сетей vmnet2 и vmnet3. Только теперь в качестве адресов сетей используем соответственно 192.168.80.0 и 192.168.120.0.

The following hostonly networks have been defined:

 

. vmnet1 is a host-only network on private subnet 192.168.40.0.

. vmnet2 is a host-only network on private subnet 192.168.80.0.

. vmnet3 is a host-only network on private subnet 192.168.120.0.

Cкрипт рапортует об успешном создании сетей vmnet1, vmnet2, vmnet3. В ответ на вопрос, не хотим ли мы настроить еще несколько сетей, отвечаем «no».

Do you want this program to automatically configure your system to allow your virtual machines to access the host's filesystem?

(yes/no/help) [no]

Хотим ли мы, чтобы виртуальные машины могли прозрачно работать с файлами, находящимися на файловых системах основной операционной системы? Реализуется это через запуск под управлением основной операционной системы усеченной версии программного обеспечения Samba. Эта версия создана специально для подобной цели, и, скорее всего, ни для чего другого не годится.

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

This system appears to have a CIFS/SMB server (Samba) configured for normal use. If this server is intended to run, you need to make sure that it will not conflict with the Samba server setup on the private network (the one that we use to share the host's filesystem). Please check your /etc/samba/smb.conf file so that:

 

   .  The "interfaces" line does not contain

   "192.168.40.1/255.255.255.0"

   .  There is a "socket address" line that contains only your real host IP address

Кстати, стоит отметить, что скрипт самостоятельно нашел на моей машине установленную, но не запущенную в данный момент полноценную версию Samba. Проверить, правда ли это, можно, запустив на другой консоли следующие команды:

# rpm -qa | grep samba

samba-client-2.2.7-alt3

samba-2.2.7-alt3

samba-client-cups-2.2.7-alt3

samba-common-2.2.7-alt3

Ну что же, вернемся обратно к установке. Как всегда, сначала рассказали о лицензии на сервер Samba, с помощью которого будет идти обмен файлами, а затем уведомили, что Samba у нас функционирует нормально. Затем прошел автоматический запуск демона VMWare Workstation.

Starting VMware services:

Virtual machine monitor                             [ OK ]

Virtual ethernet                                    [ OK ]

Bridged networking on /dev/vmnet0                   [ OK ]

Host-only networking on /dev/vmnet1 (background)    [ OK ]

Host-only networking on /dev/vmnet2 (background)    [ OK ]

Host-only networking on /dev/vmnet3 (background)    [ OK ]

Host-only networking on /dev/vmnet8 (background)    [ OK ]

NAT networking on /dev/vmnet8                       [ OK ]

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

# ps -ax | grep -v grep | grep mbd

 1260 ? S  0:00 /usr/bin/vmware-nmbd -D -l /dev/null -s /etc/vmware/vmnet1/smb/smb.conf -f /var/run/vmware-nmbd-vmnet1.pid

 1280 ? S  0:00 /usr/bin/vmware-smbd -D -l /dev/null -s /etc/vmware/vmnet1/smb/smb.conf -f /var/run/vmware-smbd-vmnet1.pid

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

You have successfully configured VMware Workstation to allow your virtual machines to access the host's filesystem.  Would you like to add a username and password for accessing your host's filesystem at this time? (yes/no/help)

[yes] no

Мне показалось, что создавать еще одного пользователя только для того, чтобы разграничить доступ к файлам основной системы, нецелесообразно. Особенно учитывая тот факт, что я пользуюсь этой машиной единолично. Таким образом, Samba будет работать от имени пользователя root, запустившего серверную часть VMWare Workstation.

Проверить, как функционируют подсистемы VMWare Workstation и какой у каждой из них статус, можно с помощью следующей команды:

# service vmware status

At least one instance of VMware Workstation is still running.

 

vmnet-bridge (pid 1165) is running...

vmnet-dhcpd (pids 1373 1287 1273 1239) are running...

vmnet-netifup (pids 1308 1251 1208 1182) are running...

Module vmmon installed

Module vmnet installed

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

# ifconfig

lo   Link encap:Local Loopback

     inet addr:127.0.0.1  Mask:255.0.0.0

     UP LOOPBACK RUNNING  MTU:16436  Metric:1

     RX packets:2 errors:0 dropped:0 overruns:0 frame:0

     TX packets:2 errors:0 dropped:0 overruns:0 carrier:0

     collisions:0 txqueuelen:0

     RX bytes:92 (92.0 b)  TX bytes:92 (92.0 b)

 

vmnet1  Link encap:Ethernet  HWaddr 00:50:56:C0:00:01

     inet addr:192.168.40.1 Bcast:192.168.40.255  Mask:255.255.255.0

     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

     RX packets:0 errors:0 dropped:0 overruns:0 frame:0

     TX packets:65 errors:0 dropped:0 overruns:0 carrier:0

     collisions:0 txqueuelen:100

     RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 

vmnet2  Link encap:Ethernet  HWaddr 00:50:56:C0:00:02

     inet addr:192.168.80.1  Bcast:192.168.80.255  Mask:255.255.255.0

     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

     RX packets:0 errors:0 dropped:0 overruns:0 frame:0

     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

     collisions:0 txqueuelen:100

     RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 

vmnet3  Link encap:Ethernet  HWaddr 00:50:56:C0:00:03

     inet addr:192.168.120.1  Bcast:192.168.120.255  Mask:255.255.255.0

     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

     RX packets:0 errors:0 dropped:0 overruns:0 frame:0

     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

     collisions:0 txqueuelen:100

     RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 

vmnet8  Link encap:Ethernet  HWaddr 00:50:56:C0:00:08

     inet addr:172.16.252.1  Bcast:172.16.252.255  Mask:255.255.255.0

     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

     RX packets:0 errors:0 dropped:0 overruns:0 frame:0

     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

     collisions:0 txqueuelen:100

     RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Теперь проверим, какие процессы работают в системе от имени VMWare Workstation

# ps -ax | grep -v grep | grep vm

 7398 ? S  0:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet1/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet1/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet1.pid vmnet1

 7411 ? S  0:00 /usr/bin/vmware-nmbd -D -l /dev/null -s /etc/vmware/vmnet1/smb/smb.conf -f /var/run/vmware-nmbd-vmnet1.pid

 7431 ? S  0:00 /usr/bin/vmware-smbd -D -l /dev/null -s /etc/vmware/vmnet1/smb/smb.conf -f /var/run/vmware-smbd-vmnet1.pid

 7434 ? S  0:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet2/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet2/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet2.pid vmnet2

 7493 ? S  0:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8

 7516 ? S  0:00 /usr/bin/vmnet-natd -d /var/run/vmnet-natd-8.pid -m /var/run/vmnet-natd-8.mac -c /etc/vmware/vmnet8/nat/nat.conf

 7543 ? S  0:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet3/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet3/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet3.pid vmnet3

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

Все настройки VMWare Workstation хранятся внутри каталога /etc/vmware. Каждая из сетей имеет свою папку внутри вышеназванного каталога. Для наглядности давайте посмотрим на содержимое папки /etc/vmware/vmnet1, в которой хранятся настройки для сети vmnet1. Как вы могли бы догадаться, /etc/vmware/vmnet1/dhcpd/ содержит настройки сервера dhcp, а /etc/vmware/vmnet1/smb/ соответственно является местом хранения конфигурационных файлов усеченной версии сервера Samba.

Для того чтобы остановить сервера DHCP, обслуживающие сети vmnet1 и vmnet3, нужно удалить каталоги /etc/vmware/vmnet1/dhcpd/ и /etc/vmware/vmnet3/dhcpd/. Ну и напоследок стоит убедиться, что в файле /etc/vmware/vmnet2/dhcpd/dhcpd.conf есть вот такая секция:

subnet 192.168.80.0 netmask 255.255.255.0 {

    range 192.168.80.128 192.168.80.254;

    option  broadcast-address 192.168.80.255;

    option  domain-name-servers 192.168.80.1;

    option  domain-name "localdomain";

    option  routers 192.168.80.2;

}

Иногда скрипт конфигурирования сети VMWare Workstation забывает дописать в эту секцию строку option routers, отвечающую за адрес шлюза по умолчанию. Соответственно клиенты при работе с DHCP-сервером успешно получают IP-адреса, но дальше своей родной сети пойти не могут, потому что не знают адреса маршрутизатора. Осталось подправить одну крохотную, но в то же время очень важную настройку. Если мы хотим, чтобы люди из внешнего мира видели наш виртуальный веб-сервер, работающий на машине Linux Mandrake, то нам нужно организовать проброс входящих соединений. Получается, что все соединения, приходящие на 80-й порт реальной машины, нужно заворачивать на 80-й порт виртуального веб-сервера. Делается это очень просто, хотя и не так элементарно, как если бы VMWare Workstation работала под управлением Windwos. Нужно добавить в файл /etc/vmware/vmnet8/nat/nat.conf внутрь секции [incomingtcp] следующие строки.

#  incoming www from outside on port 80

80 = 192.168.40.32:80

Затем необходимо перезапустить серверную часть VMWare Workstation, заставив применить внесенные изменения.

# service vmware restart

Stopping VMware services:

   Virtual machine monitor                             [  OK  ]

   Bridged networking on /dev/vmnet0                   [  OK  ]

   DHCP server on /dev/vmnet1                          [  OK  ]

   SMB share server on /dev/vmnet1                     [  OK  ]

   SMB name server on /dev/vmnet1                      [  OK  ]

   Host-only networking on /dev/vmnet1                 [  OK  ]

   DHCP server on /dev/vmnet2                          [  OK  ]

   Host-only networking on /dev/vmnet2                 [  OK  ]

   DHCP server on /dev/vmnet3                          [  OK  ]

   Host-only networking on /dev/vmnet3                 [  OK  ]

   DHCP server on /dev/vmnet8                          [  OK  ]

   NAT networking on /dev/vmnet8                       [  OK  ]

   Host-only networking on /dev/vmnet8                 [  OK  ]

   Virtual ethernet                                    [  OK  ]

Starting VMware services:

   Virtual machine monitor                             [  OK  ]

   Virtual Ethernet                                    [  OK  ]

   Bridged networking on /dev/vmnet0                   [  OK  ]

   Host-only networking on /dev/vmnet1 (background)    [  OK  ]

   Host-only networking on /dev/vmnet2 (background)    [  OK  ]

   Host-only networking on /dev/vmnet3 (background)    [  OK  ]

   Host-only networking on /dev/vmnet8 (background)    [  OK  ]

   NAT networking on /dev/vmnet8

Судя по выводу скрипта, DHCP-сервера отключились во всех виртуальных сетях разом. На самом деле это не так. Давайте проверим наличие демонов VMWare Workstation в памяти. Делать это нужно все той же доброй старой командой ps:

# ps -ax | grep -v grep | grep vm

 4515 pts/1   S  0:00 /usr/bin/vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 eth0

 4531 pts/1   S  0:00 /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid /dev/vmnet1 vmnet1

 4555 pts/1   S  0:00 /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet2.pid /dev/vmnet2 vmnet2

 4586 ?       S  0:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet2/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet2/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet2.pid vmnet2ї

 4595 pts/1   S  0:00 /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet3.pid /dev/vmnet3 vmnet3

 4645 pts/1   S  0:00 /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid /dev/vmnet8 vmnet8

 4675 ?       S  0:00 /usr/bin/vmnet-natd -d /var/run/vmnet-natd-8.pid -m /var/run/vmnet-natd-8.mac -c /etc/vmware/vmnet8/nat/nat.conf

 4686 ?       S  0:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8

Затаив дыхание, рассматриваем вывод команды. И – о чудо! – судя по надписям, демоны DHCP-сервера вполне нормально обслуживают сети vmnet2 и vmnet8. С начальной настройкой покончено, можно двигаться дальше.

Также стоит посмотреть, что появилось в директории /usr/bin/ после инсталляции:

n  vmnet-bridge – программа для создания устройств «мост»;

n  vmnet-dhcpd – усеченная версия демона dhcp;

n  vmnet-natd – демон, реализующий функции устройства NAT;

n  vmnet-netifup – программа для создания виртуальных сетевых интерфейсов;

n  vmnet-sniffer – перехватчик трафика для виртуальных интерфейсов, например, прослушивать данные, передаваемые через сеть vmnet3, можно с помощью команды vmnet-sniffer -e /dev/vmnet3. Это бывает очень полезно для отладки разных проблем сетевой подсистемы;

n  vmstat – показывает состояние виртуальной машины;

n  vmware – собственно главный исполняемый файл системы VMWare Workstation;

n  vmware-config.pl – наш старый знакомый скрипт настройки;

n  vmware-loop – программа для экспорта данных из виртуальной файловой системы в реальную;

n  vmware-mount.pl – инструмент для управления монтированием разделов виртуальных дисков;

n  vmware-nmbd – усеченная версия сервера имен NETBIOS;

n  vmware-ping – служит для проверки виртуальных сетей;

n  vmware-smbd – усеченная версия демона для работы с SMB/CIFS (Samba);

n  vmware-smbpasswd – программа управления пользователями и паролями из комплекта Samba;

n  vmware-uninstall.pl – скрипт деинсталляции VMWare Workstation;

n  vmware-wizard – программа, используемая внутри VMWare Workstation для создания новых виртуальных машин.

Как вы могли убедиться, VMWare Workstation поставляется с довольно богатым набором инструментов. Возможно, некоторые из них мы будем использовать для диагностики и устранения неполадок, если таковые возникнут в наших виртуальных сетях.

Продолжать злоупотреблять полномочиями пользователя root больше нет необходимости, поэтому нам стоит превратиться в обычного пользователя, под которым мы и будем ежедневно работать с VMWare Workstation.

$ /usr/bin/vmware

Программа должна отработать нормально, и на экране появится главное окно клиентской части VMWare Workstation. Пользуясь меню «Help –> Enter Serial Number», активируем установленное программное обеспечение с помощью тестового серийного номера, присланного нам по почте.

Программа предложит зарегистрироваться в качестве пользователя на сервере vmware.com. Я решил, что делать этого не желаю, и нажал «Cancel». Вы же можете поступать, как захотите, потому что регистрация на сайте – мероприятие сугубо добровольное и на работу не влияющее.

Теперь необходимо проверить, правильно ли сработала активация лицензии. Для этой цели нам пригодится меню «Help –> About».

Если у вас появилось на экране что-то подобное следующему рисунку, значит, дела идут как положено.

Особое внимание cтоит обратить на дату, расположившуюся за надписью Expiration. Она указывает, до какой даты мы сможем пользоваться лицензией, а значит, и самой программой VMWare Workstation.

Итак, закончив с первоначальной настройкой VMWare Workstation, перейдем к созданию наших виртуальных машин. Этот процесс очень подробно описывался в первой статье данного цикла. Если есть желание, можете выполнить его снова. Хотя я думаю, что ничего нового вы для себя не откроете. Ну а я как человек, искренне верящий в слова «лень – двигатель прогресса», поступлю иначе. Если вы помните, от предыдущей статьи нам в наследство остались комплекты файлов виртуальных машин, созданных под Windows. Сейчас мы займемся их переносом под Linux. Машина, на которой происходят все безобразия, описанные в этой статье, имеет на борту две операционных системы – ALT Linux и Windows 2000 Professional. Таким образом, нам нужно примонтировать файловую систему Windows к дереву Linux в директорию /mnt/win_d/VirtualMachines. Выполнив эту задачу, мы получим доступ к файлам наших виртуальных машин. Итак, давайте посмотрим, из каких файлов состоит любая виртуальная машина. В качестве примера возьмем машину Windows 98.

Файлы win98-f001.vmdk и win98.vmdk отвечают за работу с жестким диском. Первый из них содержит образ диска, а второй – его конфигурацию. Далее идет файл nvram, в котором хранится образ и настройки BIOS данной виртуальной машины. Как вы, наверное, уже догадались по названию, vmware.log хранит протоколы работы. Поэтому в случае возникновения каких-либо сбоев в функционировании гостевой системы, устранение неполадок лучше всего начать с просмотра именно этого файла. И наконец, мы подходим к самому интересному из всей коллекции – файлу win98.vmx. Именно он хранит в себе набор необходимых для работы виртуальной машины данных. В качестве таких данных могут выступать:

n  список устройств и их характеристики;