Итак, задача: создать виртуальную (для начала одну) машину с Ubuntu 8.10, которая будет доступна в локальной сети. Хост-система - Ubuntu 8.10, выступает в роли роутера для локальной сети, имеет на себе DHCP-сервер. Настройки сети виртуальная машинка должна получать по DHCP, роутиться другим роутером (два провайдера). Задача осложняется тем, что из intrepid убрали поддержку виртуализации посредством OpenVZ и сделали упор на KVM. Так как имеем машинку на базе AMD Duron (900MHz) то приходится выкручиваться. Опыт, как говорится, бесценен.
Пару слов о состоянии виртуализации в Ubuntu:
Итогом чтения доки стала установка VMWare Server, и обошлось без косяков. Но снес его через несколько часов.
Во-первых, одновременно с VMWare Server нельзя пользоваться комплектом netatalk.
Во-вторых, теперь у VMWare Server появилась вебморда. И все бы ничего, если б не ее тормознутость. Посмотрев список процессов - sun-jre, apache-tomcat. Не знаю у кого как, но на столь небыстрой машинке вебморда тормозила и лагала безбожно. Некогда был Remote Console, но я так и не смог его найти.
Таким образом я пришел к OpenVZ.
Для начала я прописал в /etc/apt/sources.list репозиторий от 8.04:
Далее - по учебнику:
Получил ядро linux-image-2.6.24-23-openvz и проверил, что пакет linux-restricted-modules-openvz потянул за собой linux-restricted-modules-common. Пользуясь aptitude установил версию 2.6.24.16-23.56.
Так как сервер уже работал роутером, то изменений в /etc/sysctl.conf я не вносил - более-менее с рекомендациями мои значения совпали.
Со странички шаблонов стянул ubuntu-8.10-x86.tar.gz:
Затем создал виртуальный контейнер
задал виртуальной машине hostname
и добавил запуск этой VPS вместе с запуском OpenVZ (/etc/init.d/vz)
Чудесно. На данный момент имеем виртуальную машину без сети. Для того чтоб она была видна в локальной сети нужно соорудить bridge. Для этого понадобится пакет bridge-utils:
Теперь подправил /etc/network/interfaces:
Заодно подправил интерфейс в /etc/default/dhcp3-server:
Затем применил настройки:
…и лишился сети. Сам не понял что и как, но после ребута роутера и сидения перед его консолью все заработало самостоятельно. Хм.
Добавил сетевой интерфейс в виртуальную машину:
В vzctl версии >3.0.22 можно указать еще и bridge, к которому присоединяться. Но в ubuntu 8.10 версия 3.0.22, и поэтому пришлось дописывать небольшой скрипт. А заодно исправить мелкий баг.
Итак, в /etc/vz/conf/101.conf нужно дописать
Теперь создадим скрипт /etc/vz/bin/vznetaddbr
с таким содержимым
и затем создадим /etc/vz/vznet.conf со следующим содержимым:
Теперь про баг (устраненный в 3.0.23): в процессе старта при наличии vznet.conf вызывается скрипт /usr/sbin/vznetcfg. Так как в debian/ubuntu используется dash (/bin/sh), то там по чистой случайности нету команды source, а оттого ошибка появляется на строке 20:
Решение - заменить на
Заменить можно через sed (I’m loving it!):
Соответственно теперь выполним
В конце мы должны увидеть нечто похожее на veth101.0:
Если все удалось - то можно смело идти в виртуальную машину
и делать все чего хочется.
По поводу роутинга через другого провайдера: подсмотрев в ifconfig -a внутри виртуальной машинки мак-адрес сетевого интерфейса достаточно в /etc/dhcp3/dhcpd.conf на хост-машине (я же говорил - она еще и роутер) прописать что-то вроде:
где 192.168.1.2 - второй роутер в той же сети.
По материалам:
PS: не забывайте про GNU Screen. Это избавляет от многих проблем, особенно при конфигурации сети.
Источник: http://dmitry.shaposhnik.name/2009/03/01/openvz-on-ubuntu-810/
Комментарии
Отправить комментарий