Еще немного заметок по KVM/LibVirt

Как я собственно и обещал продолжаем разбираться с Libvirt/KVM, но уже на более глубоком уровне.

Создаем сетевой мост при помощи NetPlan

Для интеграции виртуальных машин в локальную сеть организации будем использовать сетевой мост который в современных дистрибутивах Ubuntu создается при помощи NetPlan.

По умолчанию всему нашими настройками на десктопе управляет Network Manager.

# cat /etc/netplan/01-network-manager-all.yaml 
# This file was written by calamares.
# Let NetworkManager manage all devices on this system.
# For more information, see netplan(5).
network:
  version: 2
  renderer: NetworkManager

Перепишем таким образом, чтобы мы управляли параметрами сети вручную. И переключаемся с Network Manager на systemd-networkd.

# systemctl enable systemd-networkd

Конфигурация с мостом.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp7s0:
      dhcp4: no
  bridges:
    vbridge-1:
      dhcp4: yes
      interfaces:
        - enp7s0

Проверяем корректность настроек.

# netplan try --config-file ./01-network-manager-all.yaml

После применения настроек у нас появляется сетевой мост.

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vbridge-1 state UP group default qlen 1000
    link/ether a8:a1:59:06:37:e4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::b0ea:88ec:dfac:cf82/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: vbridge-1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 1e:aa:4e:c7:43:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.117/24 metric 100 brd 192.168.3.255 scope global dynamic vbridge-1
       valid_lft 572sec preferred_lft 572sec
    inet6 fe80::1caa:4eff:fec7:43dd/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

Отключаем Network Manager так как он нам больше не нужен.

# systemctl disable NetworkManager.service
# systemctl disable NetworkManager-wait-online.service
# systemctl stop NetworkManager.service
# systemctl stop NetworkManager-wait-online.service

Получаем список зарегистрированных сетей LibVirt при помощи утилиты virsh.

# virsh net-list --all

Смотрим XML-описание нашей сети default.

$ virsh net-dumpxml default
<network>
  <name>default</name>
  <uuid>f5e8be56-0747-48de-8c85-3d098c68347b</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:9a:f3:61'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

Как мы видим это и есть наша NAT-сеть. Создаем XML-описание сети типа мост bridge.xml.

<network>
    <name>main-bridge</name>
    <forward mode="bridge" />
    <bridge name="vbridge-1" />
</network>

Применяем описание сети, ставим на автостарт и запускаем.

$ virsh net-define ./bridge.xml
$ virsh net-start main-bridge
$ virsh net-autostart main-bridge

Основы работы с утилитой Virsh

Список всех виртуальных машин (включая отключенные).

# virsh list --all
 Id   Name                     State
-----------------------------------------
 -    srv-remoteapp-01         shut off
 -    srv-remoteapp-01-clone   shut off

Подробная информация о виртуальной машине.

# virsh dominfo srv-remoteapp-01-clone
Id:             -
Name:           srv-remoteapp-01-clone
UUID:           981248c6-7d00-4add-84a3-41cbd501b4f3
OS Type:        hvm
State:          shut off
CPU(s):         2
Max memory:     4194304 KiB
Used memory:    4194304 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: apparmor
Security DOI:   0

Старт-стоп-перезагрузка виртуальной машины.

# virsh start srv-remoteapp-01-clone
# virsh shutdown srv-remoteapp-01-clone
# virsh reboot srv-remoteapp-01-clone

Принудительная остановка (по питанию).

$ virsh destroy srv-remoteapp-01-clone

Подключение к виртуальной машине (отдельная утилита).

$ virt-viewer srv-remoteapp-01-clone
virt-viewer утилита для подключения к консоли гостевых VM

Установка флага автозапуска виртуальной машины при загрузке.

$ virsh autostart vadersrv-remoteapp-01-clone

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *