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

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

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
Автор
Редакция

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

Сохранить парковку в Google Maps вручную
Навигация

Сохранить парковку в Google Maps вручную

Prime Video не работает на iPhone — как исправить
Устранение неполадок

Prime Video не работает на iPhone — как исправить

Криптоарбитраж: стратегия, боты и практический план
Трейдинг

Криптоарбитраж: стратегия, боты и практический план

Стать инфлюенсером в Великобритании через Instagram
Социальные сети

Стать инфлюенсером в Великобритании через Instagram

Плавающие окна в Android 7.0 Nougat — как включить
Android.

Плавающие окна в Android 7.0 Nougat — как включить

Добавление и удаление пользователей в Ubuntu
Linux

Добавление и удаление пользователей в Ubuntu