Настройка роутинга для KVM

Для настройки сети гостевых машин необходимо /etc/network/interfaces привести к виду:

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto enp2s0
iface enp2s0 inet manual
auto br0
iface br0 inet dhcp
  bridge_ports enp2s0
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0

где enp2s0 — это сетевой интерфейс хостовой машины.

После этого при создании новой гостевой ОС необходимо выбирать интерфейс br0

Однако в некоторых случаях эти настройки не срабатывают, поскольку модуль br_netfilter отправляет эти пакеты в iptables, правила которого не пропускает пакеты от гостевых машин.

Одно из решений состоит в том что бы обойти отправку пакетов в iptables:

  • Создать файл /etc/sysctl.d/bridge.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
  • Создать файл /etc/udev/rules.d/99-bridge.rules
ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/lib/systemd/systemd-sysctl --prefix=/net/bridge"

Перезапустить сетевую службу, или перезагузить хостовую машину

По мотивам askubuntu.com

Полезности KVM

Создание виртулаки

virt-install -n VMName \
--autostart \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=2 --cpu host --check-cpu \
--disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
--cdrom /kvm/iso/ubuntu-18.04.3-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc_password \
--os-type linux --os-variant=ubuntu18.04 --boot cdrom,hd,menu=on

Если доступ будет только из консоли, то нужно передать доп. аргументы

sudo virt-install --name=VMName \
--vcpu=1 --ram=2048 --os-type linux  \
--graphics vnc,listen=0.0.0.0,password=secret \
--console pty,target_type=serial \
--location=/home/ytzh/tmp/debian-10.6.0-amd64-xfce-CD-1.iso \
--network bridge:br0 \
--extra-args 'console=ttyS0,115200n8 serial' \
--force --debug  \
--disk pool=default,size=20,bus=virtio,format=qcow2  \
--autostart  \
--noautoconsole

  • --cdrom можно заменить на --location, в котором передать ссылку на образ (
  • —graphics настройки дисплея гостевой машины

Подключение к виртуалке VNC

К 5900 прибавить вывод virsh vncdisplay VM1. и скормить клиенту VNC

Основные команды

  • virsh list --all просмотр всех ВМ
  • virsh start VMname — запустить ВМ
  • virsh shutdown VMname — выключить ВМ
  • virsh destroy VMName — остановить ВМ
  • virsh undefine dev --remove-all-storage удалить машину со всеми дисками
  • virsh autostart VMname — автозапуск вместе с хостом
  • virsh edit VMname — конфигурирование
  • virsh attach-interface --domain VMname --type network --source default --model virtio --config --live — добавить сетевой интерфейс.
  • virsh attach-interface --domain VMname --type bridge --source br0 --model rtl8139 --config --live интерфейс через мост
  • virsh detach-interface VMname --type bridge --mac 52:54:00:2e:a9:4d — удалить сетевой интерфейс
  • virsh net-dhcp-leases default — выданные адреса
  • virsh domblklist VMname — список дисков ВМ
  • qemu-img resize /data/kvm/vhdd/VMname-disk1.img +100G — Добавить места на диск (ВМ выключена)
  • qemu-img info /data/kvm/vhdd/VMname-disk1.img — инфо о диске
  • virsh blockresize UBU /data/kvm/vhdd/VMname-disk1.img 200G измить размер блочного устройства. (200G — общий размер)
Закладка Постоянная ссылка.