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