Андрей Бешков
В первой статье этого цикла, опубликованной в сентябрьском номере журнала
«Системный администратор», я довольно подробно описал, что такое технология
виртуальных машин 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 список устройств и их характеристики;