Для настройки сети гостевых машин необходимо /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 — общий размер)