Настройка сети в QEMU/KVM

Модератор: Модераторы разделов

voltron
Сообщения: 11
ОС: Slackware 14.0

Настройка сети в QEMU/KVM

Сообщение voltron »

Осваиваю QEMU/KVM, которые планирую использовать для запуска Windows 7 и, возможно, 10. С созданием ВМ более-менее разобрался, осталось настроить сеть. Хочется, чтобы виртуальная машина имела выход в интернет через соединение хоста и при этом сеть была с максимально возможной производительностью.

Читал статью на ArchWiki, как понял, самый простой и не требующий настройки вариант — user-mode networking, но производительность у него ниже. Наиболее производительным должно быть использование tap networking с включенным vhost. Но не могу разобраться как прописать это в команде запуска ВМ. Сейчас она выглядит так

Код: Выделить всё

#!/usr/bin/env bash

SPICE_HOST="127.0.0.1"
SPICE_PORT="5930"
VM_NAME="Windows 7"
CPU_COUNT="2"
RAM_COUNT="2048"
DRIVE="Windows7.qcow2"

export QEMU_AUDIO_DRV=alsa

qemu-system-x86_64 \
    -name "$VM_NAME" \
    -cpu host \
    -enable-kvm \
    -smp $CPU_COUNT \
    -m $RAM_COUNT \
    -acpitable file=slic.bin \
    -drive file="$DRIVE",media=disk,if=virtio \
    -vga qxl \
    -spice port=$SPICE_PORT,disable-ticketing \
    -device virtio-serial-pci \
    -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
    -chardev spicevmc,id=spicechannel0,name=vdagent \
    -rtc base=localtime \
    -soundhw ac97 \
    -usb \
    -usbdevice tablet \
    -device virtio-serial \
    -chardev spicevmc,id=vdagent,name=vdagent \
    -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
    -chardev spicevmc,name=usbredir,id=usbredirchardev1 \
    -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 \
    -chardev spicevmc,name=usbredir,id=usbredirchardev2 \
    -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 \
    -chardev spicevmc,name=usbredir,id=usbredirchardev3 \
    -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3 \

Пробовал создать ВМ через virt-manager и посмотреть команду запуска, нашел такие строчки

Код: Выделить всё

    -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26
    -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:b4:2c:53,bus=pci.0,addr=0x3

Но при их добавлении к своей команде получаю ошибку

Код: Выделить всё

TUNGETIFF ioctl() failed: Bad file descriptor
TUNSETOFFLOAD ioctl() failed: Bad file descriptor
qemu-system-x86_64: -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26: vhost-net requested but could not be initialized
qemu-system-x86_64: -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26: Device 'tap' could not be initialized

Как все же правильно настроить сеть?

Про libvirt и virt-manager знаю, но хочется немного разобраться именно с «чистым», без всяких оберток, QEMU/KVM.

ОС Debian 8.2, ядро 4.2.0-0.bpo.1-amd64 из бэкпоротов, все остальные пакеты из стандартного репозитория.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18639
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Настройка сети в QEMU/KVM

Сообщение Bizdelnick »

fd=h can be used to specify the handle of an already opened host TAP interface.
Очевидно, его открывает libvirt. Ваш же скрипт его не открывает, значит передавать этот параметр не надо, благо он опциональный.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: