Гид по технологиям

Виртуализация: виртуальные сети и установка гостей

5 min read Виртуализация Обновлено 18 Oct 2025
Виртуализация: сети и установка гостевых ОС
Виртуализация: сети и установка гостевых ОС

Обзор

В этом документе описаны действия по созданию виртуальных сетей (public1, private1) в Virtual Machine Manager, подготовке kickstart-файлов для автоматизированной установки (node01/node02), генерации MAC-адресов и запуску установки гостевых систем через virt-install. Инструкции даются для пользователя с правами root на хосте с Xen/Libvirt.

Важно: не оставляйте окно virt-manager открытым без надобности — оно потребляет много памяти; при проблемах перезапустите Xen.

Содержание

  • Виртуальные сети — создание через virt-manager
  • Kickstart-файлы для node01 и node02
  • Генерация MAC-адресов (macgen.py)
  • Установка гостевых систем через virt-install
  • Чек-листы, критерии приёмки и шпаргалка команд

Виртуальные сети

Запустите virt-manager от root:

virt-manager

Откроется окно Virtual Machine Manager. Вы увидите Domain-0 и ресурсы, которые он использует.

Создание виртуальной сети

  1. В меню выберите «Редактировать (Edit)», затем «Сведения о хосте (Host details)».
  2. В окне Host Details слева появится только «default». Нажмите «Add» (Добавить).
  3. Откроется окно «Create a new virtual network» — нажмите «Forward» (Далее).
  4. Введите имя сети public1 и нажмите «Forward».
  5. Укажите сеть: 192.168.222.0/24 и нажмите «Forward».
  6. Диапазон DHCP: Start: 192.168.222.128 End: 192.168.222.254 — нажмите «Forward».
  7. Выберите «Isolated virtual network» — нажмите «Forward».
  8. Подтвердите сводку и нажмите «Finish».

Сводка будет выглядеть примерно так:

  • Network Name: public1
  • IPV4 network:
    • Network: 192.168.222.0/24
    • Gateway: 192.168.222.1
    • Netmask: 255.255.255.0
  • DHCP:
    • Start address: 192.168.222.128
    • End address: 192.168.222.254
  • Forwarding:
    • Connectivity: Isolated virtual network

Повторите те же шаги для сети private1 с параметрами:

  • Network Name: private1
  • Network: 192.168.100.0/24
  • Gateway: 192.168.100.1
  • Netmask: 255.255.255.0
  • DHCP Start: 192.168.100.128
  • DHCP End: 192.168.100.254
  • Connectivity: Isolated virtual network

Когда закончите, в окне Host Details выберите File > Close, затем File > Quit, чтобы выйти.

Важно: оставлять virt-manager открытым не рекомендуется — он может занять много памяти.

После создания сетей интерфейсы vnet0 и vnet1 будут видны в выводе ifconfig:

ifconfig

Пример вывода:

   vnet0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.222.1  Bcast:192.168.222.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0

              TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7782 (7.5 KiB)
    
    vnet1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
              inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
              inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:7712 (7.5 KiB)

Kickstart-файлы

Ниже представлен kickstart-файл для node01, который можно скопировать и адаптировать для node02 — измените IP-адреса и hostname там, где указано.

node01 (node01_ks.cfg)

#START of node01_ks.cfg
install
text
reboot
#uncomment the line you want to use
# for nfs
nfs --server=192.168.222.1 --dir=/var/ftp/pub/centos5u1
##url --url ftp://:@/
# this will be an anonymous ftp access
#url --url ftp://192.168.222.1/pub/centos5u1/i386
#key --skip
lang en_US.UTF-8
keyboard us
skipx
# private
network --device eth1 --bootproto static --ip 192.168.100.10 --netmask 255.255.255.0 
# public - disabled on initial install
network --device eth0 --bootproto static --ip 192.168.222.10 --netmask 255.255.255.0 --gateway 192.168.222.1 --nameserver 192.168.222.1 --hostname node01.example.com
## password is n0de01pass
rootpw --iscrypted $1$Lqk1Y$Y8TIWCMLiiPjVt1GjRS0F1
## password is n0de02pass
#rootpw --iscrypted $1$Rn47b$DDwgrOv3IFGf3HVhsxv9X0
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Singapore
services --disabled ipsec,iptables,bluetooth,hplip,firstboot,cups,sendmail,xfs
bootloader --location=mbr --driveorder=xvda,xvdb --append="rhgb quiet"
clearpart --all --initlabel --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
%packages
@development-libs
@system-tools
@gnome-software-development
@text-internet
@x-software-development
@dns-server
@core
@authoring-and-publishing
@base
@ftp-server
@network-server
@legacy-software-development
@java
@legacy-software-support
@smb-server
@base-x
@web-server
@printing
@server-cfg
@sql-server
@admin-tools
@development-tools
emacs
lsscsi
gnutls-utils
hwbrowser
audit
iptraf
mesa-libGLU-devel
kexec-tools
device-mapper-multipath
vnc-server
xorg-x11-utils
xorg-x11-server-Xnest
xorg-x11-server-Xvfb
imake
iscsi-initiator-utils
ypserv
-sysreport

%post
cat <> /etc/hosts
# private  or replace with nodeXY-
192.168.100.10  node01-priv
192.168.100.20  node02-priv
192.168.100.1   node00-priv

#public or replace with nodeXY
192.168.222.10 node01
192.168.222.20 node02
192.168.222.1  node00
EOT

# yum local repo
mv /etc/yum.repos.d/*.repo /tmp
cat > /etc/yum.repos.d/centos5.repo << EOF
[centos5-Server]
name=CEntos5 Server
baseurl=http://node00/centos5u1/i386
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
EOF

#change default runlevel
ed /etc/inittab << EOF

,s/id:5:initdefault:/id:3:initdefault:/g
.
w
EOF

# vncserver stuff
cat << EOT > /opt/vnc_xstartup
#!/bin/sh

# run vncserver and copy to your $HOME/.vnc/xstartup file
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 130x30+12+12 -ls -bg black -fg green -title "$VNCDESKTOP Desktop" &
mwm &
EOT
# END of nod01_ks.cfg

node02

Скопируйте node01_ks.cfg в node02_ks.cfg и изменитеые записи для node02 (hostname и IP-адреса).


Установка гостевых систем (node01 и node02)

Установку запускают из командной строки с помощью virt-install.

Генерация MAC-адресов

Для генерации MAC-адресов можно использовать скрипт macgen.py из руководства Red Hat:

#!/usr/bin/python
# macgen.py script to generate a MAC address for Red Hat Virtualization guests
import random
#
def randomMAC():
   mac = [ 0x00, 0x16, 0x3e,
     random.randint(0x00, 0x7f),

     random.randint(0x00, 0xff),
     random.randint(0x00, 0xff) ]
   return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
# careful with the indention
# this is from the Virtualization guide from redhat.com
# http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Virtualization/index.html

Пример использования для node01:

node01 NICs  
# for eth0 . public1  
[root@node00 ~]# ./macgen.py  
00:16:3e:33:32:07  
# for eth1 . private1  
[root@ node00 ~]# ./macgen.py  
00:16:3e:55:6b:83

Сгенерируйте аналогично для node02.

Команда virt-install для node01

virt-install -p -n node01 -r 768 -f /dev/Virtual00VG/lvNODE01 -m 00:16:3e:33:32:07 \  
-w network:public1 -m 00:16:3e:55:6b:83 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node01_ks.cfg" --vnc

Параметры (кратко):

  • -n node01 — имя гостя
  • -r 768 — оперативная память в МБ
  • -f /dev/Virtual00VG/lvNODE01 — диск гостя (может быть раздел/логический том)
  • -m — MAC-адрес для интерфейса
  • -w network:public1 — сеть для интерфейса eth0
  • -w network:private1 — сеть для интерфейса eth1
  • -l nfs:… — источник установки
  • -x “ksdevice=eth0 ks=…” — kickstart-параметры
  • –vnc — открытие VNC-консоли для просмотра установки

Команда virt-install для node02

virt-install -p -n node02 -r 768 -f /dev/Virtual00VG/lvNODE02 -m 00:16:3e:1e:05:b6 \  
-w network:public1 -m 00:16:3e:40:3d:b0 -w network:private1 \  
-l nfs:192.168.222.1:/var/ftp/pub/centos5u1/i386 \  
-x "ksdevice=eth0 ks=http://192.168.222.1/centos5u1/node02_ks.cfg" --vnc

Совет: запуск virt-install внутри VNC-сессии хоста позволяет автоматически видеть экраны установки. Если запуск на консоли хоста, установка будет проходить в фоне; открыть экраны можно через virt-manager и подключение к созданным гостям.


Когда этот подход не подходит

  • Если требуется внешняя маршрутизация между сетями — «Isolated virtual network» не подходит.
  • Для высокопроизводительных сетевых нагрузок лучше использовать SR-IOV или мостовые сетевые драйверы.
  • Если хост использует другой гипервизор (KVM без libvirt, VMware, Hyper-V), команды и интерфейсы отличаются.

Альтернативные подходы

  • Использовать сетевые мосты (bridge) для прямого доступа к физической сети.
  • Использовать Open vSwitch для более гибкой виртуальной сети и VLAN.
  • Развернуть отдельный DHCP/DNS сервер на узле управления вместо DHCP внутри виртуальной сети.

Чек-лист ролей

  • Администратор хоста:

    • Проверить наличие свободного дискового пространства и LVM-томов.
    • Создать виртуальные сети через virt-manager.
    • Настроить NFS/FTP-репозиторий с инсталляционными файлами.
  • Инженер установки:

    • Подготовить kickstart-файлы для каждой машины.
    • Сгенерировать MAC-адреса и зафиксировать их в документации.
    • Запустить virt-install и проверить VNC-консоль установки.
  • Оператор после установки:

    • Убедиться, что сетевые интерфейсы настроены и доступны.
    • Проверить /etc/hosts и локальный yum-репозиторий.

Критерии приёмки

  • Виртуальные интерфейсы vnet0 и vnet1 присутствуют и имеют адреса 192.168.222.1 и 192.168.100.1 соответственно.
  • Гость загружается после установки и отвечает по SSH (если включён).
  • IP-адреса гостей соответствуют указанным в kickstart-файле.
  • NFS/FTP-источник установки доступен с гостя.

Шпаргалка команд

  • Запуск GUI менеджера: virt-manager
  • Проверить интерфейсы: ifconfig или ip addr show
  • Генерация MAC: ./macgen.py
  • Запуск установки: virt-install [параметры]

Мини-методология (быстрая последовательность действий)

  1. Подготовить NFS/FTP с образом и kickstart.
  2. Создать виртуальные сети в virt-manager (public1, private1).
  3. Сгенерировать MAC-адреса и зафиксировать.
  4. Запустить virt-install с указанием ks и MAC.
  5. Проверить доступность гостя и выполнить post-install проверки.

Ключевые числа

  • Диапазоны DHCP: 192.168.222.128–254 и 192.168.100.128–254
  • Сеть: /24 (маска 255.255.255.0)
  • Стартовая память для гостя в примерах: 768 МБ
  • Префикс MAC из примера: 00:16:3e

Глоссарий — 1 строка

  • kickstart — файл автоматической установки для RHEL/CentOS.
  • virt-install — утилита командной строки для создания и установки виртуальных машин.
  • virt-manager — графическая оболочка для управления виртуальными машинами.

Короткое резюме

  • Настройте два изолированных виртуальных сегмента (public1, private1).
  • Подготовьте kickstart и источник установки, сгенерируйте MAC-адреса.
  • Запустите virt-install с параметрами и проверьте соответствие конфигурации.

Важно: проверяйте конфигурацию сетей и kickstart-файлов в тестовой среде перед массовым развертыванием.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как читать электронные книги на компьютере
Электронные книги

Как читать электронные книги на компьютере

Как создать Snapchat Lens на телефоне
Социальные сети

Как создать Snapchat Lens на телефоне

Объединить подписки в дайджест с Unroll.me
Почта

Объединить подписки в дайджест с Unroll.me

Как следить за новыми книгами любимого автора
Книги

Как следить за новыми книгами любимого автора

Перевести участника Microsoft Family в статус «Ребёнок»
Руководство

Перевести участника Microsoft Family в статус «Ребёнок»

Как работает одалживание книг в Kindle
Электронные книги

Как работает одалживание книг в Kindle