LINUX.ORG.RU

67
Всего сообщений: 533

соединить две VM на одной машине через бридж

Настраиваю light-weigh виртуальную машину lkvm (http://git//git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git) для общения между собой. VM при запуске создает tun интерфейсы на хостеь (аналогично тому как делают другие VM).


               VM1                          VM2
          +----------+                 +-----------+
          |          |                 |           |
tap0 -----+eth0  eth1+--tap1-----tap2--+eth0   eth1+--tap3-
          |          |                 |           |
          +----------+                 +-----------+

1) на обоих VM включена маршрутизация, на всякий случай отключен rp_filter

2) на обоих VM установлены соответствующие маршруты

3) на всех VM прописаны IP адреса на интерфейсах

4) создаем и поднимаем bridge девайс на хосте, интерфейсы tap1 and tap2 добавлены в bridge, на tap1/tap2/bridge IP адреса не прописаны (не уверен нужно ли??)

5) включена маршрутизация на хосте

6) адреса следующие:

   VM1 eth0 20.20.20.2/24
       eth1 30.30.30.2/24
   VM2 eth0 30.30.30.3/24
       eth1 40.40.40.2/24

Но по каким-то причинам не работает, пинг не ходит с VM1 eth1->tap1->br->tap2->eth0 (хотя вижу пакеты на tap1 and bridge девайсе, но не на tap2.) или наоборот с VM2.

Что я делаю не так?

 , , ,

cruz7 ()

qemu не запускает /etc/qemu-ifup

Пытаемся запустить qemu от обычного пользователя:

ne-vlezay80@ne-vlezay80:~$ switch=no-managed qemu-system-x86_64 -enable-kvm -m 256M -netdev tap,ifname=test0,id=test0,vhost=off -device virtio-net-pci,id=vio.0,netdev=test0
qemu-system-x86_64: -netdev tap,ifname=test0,id=test0,vhost=off: could not configure /dev/net/tun (test0): Operation not permitted
как я обнаружил, скрипт /etc/qemu-ifup даже не пытается запуститься, пока qemu не создаст сетевой интерфейс. Почему бы разработчикам не запилить простой запуск скрипта, и зачем создавать интерфейс, когда это может сделать скрипт?

 ,

ne-vlezay ()

Постоянная нагрузка от qemy-kvm

Есть ubuntu 16.04. Поднят на нем qemu-kvm с единственной на данный момент виртуалкой. В виртуалке крутиться nextcloud. Но это не суть. Сама виртуалка в простое. Там нет сейчас никакой нагрузки

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1245 root      20   0   43060   3652   3068 R   0,3  0,4   0:00.10 top
    1 root      20   0  119592   5652   3908 S   0,0  0,6   0:01.40 systemd
    2 root      20   0       0      0      0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S   0,0  0,0   0:00.05 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H


но на хосте постоянно нагрузка в районе 8-10% от виртуальной машины
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1510 root      20   0 2100256 571540  23028 S   8,3  7,1   1:11.28 qemu-system-x86
   31 root      25   5       0      0      0 S   4,3  0,0   0:06.05 ksmd
    7 root      20   0       0      0      0 S   0,3  0,0   0:00.81 rcu_sched
   41 root      20   0       0      0      0 S   0,3  0,0   0:00.17 kworker/1:1
 1048 nobody    20   0   43860   5696   4828 S   0,3  0,1   0:00.43 openvpn


гостевая машина запущена командой
qemu-system-x86_64 -enable-kvm -name cloud -m 1024 -drive file=/kvm/cloud.img,media=disk,index=0,if=ide,format=raw -boot c -net tap,vlan=0,script=/kvm/cloud-eth0.sh -net nic,vlan=0,macaddr=02:54:00:FF:75:AF -vnc :3,password,websocket=5703 -usbdevice tablet -monitor tcp:127.0.0.1:40000,server -smp 2


Это нормальное поведение? В интернете встречаются подобные жалобы в случае если гоствевая машина win. У меня же там LAMP, тестовая среда.

 , ,

as_lan ()

Как лучше построить сеть? Накидайте своих идей и мыслей.

http://dump.bitcheese.net/files/jahonik/scrot.png

http://dump.bitcheese.net/files/xynokef/scrot.png

И так, друзья, шёл третий день как я развлекаюсь с виртуалками. Наверное, в 2077 году так будут называть кибер-девушек с низкой социальной ответственностью, но на сегодняшний день, к сожалению, это виртуальные машины KVM.

Во-первых, удалось с использованием бриджа построить локальную сеть, интерфейсу br0 присваивается 10.0.0.1/8, а когда запускается KVM, она автоматически поднимает интерфейс tap0, который цепляется к br0, затем отрабатывает ISC DHCP раздавая IP. Всё работает. Подробнее тут: Виртуалы не видят друг друга o_O

Во-вторых, удалось с использованием того же бриджа, без всяких пробросов PCI, пробросить MAC виртуальной машины на сетевую карту. Зачем это надо? В ПК подключён шнур провайдера, сетевая карта получает IP-адрес по маку и я в интернетах. Я хочу чтобы сетевая карта не получала IP адрес, а просто находилась в режиме UP, но когда я запускаю виртуалку с моим маком — виртуалка получала этот IP и находилась в интернете. Получается будто бы виртуалка сидит в танке. Действительно, что в таком случае способно грохнуть хост-систему? Наверное уже ничего, кроме физического воздействия, или очередного Spectre/Meltdown, но это ещё придётся и виртуалку взламывать, короче защита о-го-го.

Я не знаю, правильно ли я всё сделал, но делал это так:

# создаём бридж
ip link add name br0 type bridge
ip link set br0 up

# после запуска виртуалки c -nic tap включаем и tap0
ip link set tap0 address "мой мак"
ip link set tap0 master br0
ip link set tap0 up

# сетевая карта с провайдером
ip link set enp1s0 master br0
ip link set enp1s0 up

Я не знаю как, но это заработало, чёрт, я запустил qemu, в SeaBIOS набрал dhcp и увидел что по моему маку выдался мой внешний айпишник. О как.

Получив теперь «бессмертный хост», в котором взломанная (ключевое слово !если!) виртуалка просто перезапускается в три секунды... Надо что-то делать дальше.

Хочу:

1) Насоздавать кучу других виртуалок под каждый сервис в отдельности. Это ок.

2) Все эти виртуалки надо связать в единую локальную сеть ИИИ чтобы к этой сети могли так же подключаться другие устройства, а эти виртуалки выглядят как рядовые устройства в сети. Эту сеть надо вывести обратно на вторую физическую сетевую карту.

Что я от вас хочу услышать. Я хочу чтобы вы предложили мне свою идею для топологии сети. И всё. Я не архитектор, я макака с консолью, уж что правда то правда.

Стоит ли все реальные устройства объединять в сеть 192.168.0.0/16, а виртуалки держать отдельно в 10.0.0.0/8? Или лучше сделать чтобы все они были в одной подсети? Какие адреса и для чего красивше будет использовать? Как бы сделали вы? Поделитесь идеями.

Спасибо.

 , ,

Spoofing ()

Виртуалы не видят друг друга o_O

Запускаю две qemu kvm, я их пингую, они меня пингуют, они пингуют интернет, но внезапно, они не видят друг друга в рамках своей же локальной сети построенной на бридже. Может я что-то упустил...

Запускаем две KVM отличающиеся только именами интерфейсов.

for TAP in tap0 tap1; do

  qemu-system-x86_64 -bios OVMF.fd \
    -enable-kvm \
    -snapshot \
    -boot c \
    -drive file=CRUX.qemu-image.raw,format=raw \
    -nic tap,ifname=$TAP

done

Как положено qemu дёргает /etc/qemu-{ifup,ifdown}, содержания:

#!/bin/bash

NETWORK_BRIDGE="br0"
NETWORK_INTERFACE="$1"

/sbin/ip link set $NETWORK_INTERFACE master $NETWORK_BRIDGE
/sbin/ip link set $NETWORK_INTERFACE up

На хост системе в ifconfig виднеются два сетевых интерфейса, tap0 и tap1, без IP-адресов, но в режиме UP, будем считать что так быть и должно(?).

br0 это виртуальный сетевой интерфейс (бридж), который поднимается при запуске хост системы в /etc/rc.local

ip link add br0 type bridge
ip link set br0 up
ip addr add 10.0.0.1/8 dev br0 broadcast +

Которому, конечно, присваивается огроменная подсеть для моего подкроватного энтерпрайза уровня локалхост.

ISC DHCP раздаёт адреса в этой подсети.

subnet 10.0.0.0 netmask 255.0.0.0 {
  option domain-name "VirtualMachine";
  option domain-name-servers 10.0.0.1;
  option routers 10.0.0.1;

  range 10.0.0.2 10.255.255.254;
}

Простым запуском qemu без всяких параметров можно убедиться что оно работает, нажать Ctrl + B для захода в консоль SeaBIOS'а и выполнить dhcp, и убедиться что IP-адрес выдал именно наш DHCP, работающий на br0.

Ну и iptables, в том же /etc/rc.local, который всё это дело маршрутизирует.

WAN=enp2s0 # интерфейс с интернетами провайдера

iptables -P FORWARD DROP
iptables -t filter -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -i br0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o $WAN -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

Так почему же виртуальные машины не видят друг друга, но видят интернет, и я вижу их с хост системы?

 ,

Spoofing ()

Пара вопросов о QEMU перед началом работы

Первое знакомство с QEMU было в бородатые нулевые, когда запуск на одноядерном пентиуме приводил к невероятным тормозам. С тех пор как-то скептически относился к виртуализации, но теперь (уже 10 лет как, хех) добавили VT-d в консьюмерские процессоры и стало возможным работать с виртуализацией на аппаратном уровне.

Я впечатлён! Одна опция -snapshot чего стоит! Система работает в штатном режиме, но на самом деле находится в read-only, и никакие вообще изменения не сохраняются! Это же чудо! Это делает систему «unhackable». Теперь только успевай делать снапшоты данных, а в системе исправлять дыры и перезапускать пофикшенные виртуалки. Но знакомство с QEMU только началось и есть ряд вопросов.

1) MBR или GPT? UEFI или классический BIOS? Из коробки QEMU не умеет загружаться в UEFI, нужно отдельно скачивать OVMF прошивку. Стоит ли оно того? С одной стороны классический BIOS пережиток прошлого, вендоры вообще обещают зарезать legacy-режим в материнских платах к 2021 году, так что, чтобы в будущем образы систем стали легко переносимы, следует ли сразу ориентироваться на загрузку в UEFI? И забыть про lilo/syslinux?

2) Началась виртуализация головного мозга, так вот, возможно ли запустить qemu так, чтобы она напрямую общалась с устройством, а конкретно — сетевой картой? Хочу чтобы хост-система оставалась без IP-адреса, физический сетевой интерфейс был разве что в режиме UP, но при этом получение IP-адреса по маку осуществлялось прямиком на запущенную виртуалку, которая в дальнешем будет корневым шлюзом в сети. Возможно ли так пробросить сетевую карту в qemu?

И да, с разморозкой меня.

 

Spoofing ()

Мои скрипты управления виртуальными машинами

https://github.com/ne-vlezay80/VPSD

Данные скрипты я писал для себя, и они используются на моём домашнем гипервайзере.
Данные скрипты используются для управления виртуальными машинами qemu на гепервайзерах.Можно также их использовать на домашнем компьютере.

 , ,

ne-vlezay ()

«Advent Calendar» для QEMU

Типа, чуваки готовятся к рождеству =)

https://www.qemu-advent-calendar.org/2018/

 

Bass ()

QEMU отладка прошивки arm

Добрый день, пытаюсь отладить

qemu-system-arm -S -gdb tcp::1234,ipv4 -drive file=C:\cygwin64\home\flash.bin,if=mtd,format=raw -M palmetto-bmc -cpu arm926 -m 256

Фишка в том, что qemu предлагает n25q256a - 256 Мб флеш. Мне нужна флеш 4 Мб, потому что у меня адресация RAM начинается с 0x80000000.

Методом тыка нашел, что

qemu-system-arm -S -gdb tcp::1234,ipv4 -drive file=C:\cygwin64\home\full.img,if=mtd,format=raw,size=4194304 -M palmetto-bmc -cpu arm926 -m 256 

Но qemu выдает failed to read the initial flash content, даже не смотря на то, что я предлагаю 4 Мб образ. а вот size поставить 256Мб и образ соответсвующий, то все проходит успешно. В документации параметр size я вообще не нашел. Посоветуйте куда копать. Смотреть исходники? Неужели документация на такую серьезнуб программу не полная... _-

 , ,

Siemann ()

проброс видеокарты, игры тормозят

#!/bin/bash

echo "0000:01:00.0" > /sys/bus/pci/devices/0000\:01\:00.0/driver/unbind
echo "0000:01:00.1" > /sys/bus/pci/devices/0000\:01\:00.1/driver/unbind
echo "10de 1401" > /sys/bus/pci/drivers/vfio-pci/new_id
echo "10de 0fba" > /sys/bus/pci/drivers/vfio-pci/new_id

qemu-system-x86_64 \
-boot d \
-drive file=/media/windows/win10.img,if=virtio \
-enable-kvm \
-machine q35,accel=kvm \
-m 9G \
-cpu host,kvm=off \
-smp 4,sockets=1,cores=4,threads=1 \
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2-ovmf/OVMF.fd \
-drive if=pflash,format=raw,file=/var/lib/libvirt/qemu/nvram/win10_VARS.fd \
-vga none \
-soundhw hda \
-device vfio-pci,host=01:00.1 \
-device vfio-pci,host=01:00.0,multifunction=on \
-usb \
-drive file=/media/media/games0.img,if=virtio,cache=none,aio=native \
-device usb-host,hostbus=1,hostaddr=2 \
-device usb-host,hostbus=1,hostaddr=3 \
-nic user,model=virtio-net-pci \

помогите пожалуйста! В первый раз пробросил визеокарту, игры тормозят. Может я что-то не так делаю? На первый взглятд нагрузка на процессор высокая в госте. Пробовал отключать retpoline и запускал с nopti разницы никакой.

qemu используется всего 50% cpu, получается 2 из 4 потока хотя в госте 4 ядра

Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz

NVIDIA Corporation GM206 [GeForce GTX 960]

4.14.78-gentoo

QEMU emulator version 2.12.1

dmesg

[I] app-emulation/qemu
     Установленные версии:  2.12.1(21:07:51 28.10.2018)(accessibility aio alsa bluetooth bzip2 caps curl fdt filecaps gtk jpeg ncurses nls opengl pin-upstream-blobs png pulseaudio sdl sdl2 seccomp spice usb vhost-net virgl virtfs vnc xattr -capstone -debug -glusterfs -gnutls -gtk2 -infiniband -iscsi -lzo -nfs -numa -python -rbd -sasl -selinux -smartcard -snappy -ssh -static -static-user -systemtap -tci -test -usbredir -vde -vte -xen -xfs KERNEL="linux -FreeBSD" PYTHON_TARGETS="python2_7 python3_6 -python3_4 -python3_5" QEMU_SOFTMMU_TARGETS="x86_64 -aarch64 -alpha -arm -cris -hppa -i386 -lm32 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -moxie -nios2 -or1k -ppc -ppc64 -ppcemb -riscv32 -riscv64 -s390x -sh4 -sh4eb -sparc -sparc64 -tricore -unicore32 -xtensa -xtensaeb" QEMU_USER_TARGETS="x86_64 -aarch64 -aarch64_be -alpha -arm -armeb -cris -hppa -i386 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -mipsn32 -mipsn32el -nios2 -or1k -ppc -ppc64 -ppc64abi32 -ppc64le -riscv32 -riscv64 -s390x -sh4 -sh4eb -sparc -sparc32plus -sparc64 -tilegx -xtensa -xtensaeb")

 , , ,

fearOfSociety ()

Адекватный способ пробрасывать партицию в Qemu

Здрасте. Какой сейчас в qemu адекватный способ пробрасывать раздел без необходимости привязывать к виртуалке весь диск ? Диск вот у меня легко прокидывается, но он используется в хосте, так что привязывать его целиком - не вариант. Нужен всего один раздел. Самбу поднимать тоже не вариант, нужно чтобы в госте был логический раздел, а не сетевой диск или шара.

 , , ,

Dred ()

менеджер виртуальных машин

А подскажите, кто знает... в какую сторону копать. Менеджер виртуалок, но такой, который позволяет оперировать VM в рамках сети из рабочих станций на которых и крутятся наборы этих виртуалок. Т.е. есть некий учебный класс с одинаковыми linux-ами, на каждой необходимо запускать виртуальную машину для обучения, которая одинаковая для всех (хочется одну настроить как образец и на все станции разлить) и VM таких не одна, а несколько с разными настройками.

 ,

karasic ()

Не ставиться Windows на виртуальную машину

Создал виртуальную машину на Qemu, начал устанавливать Windows XP, после копирования файлов выходит чистый голубой экран, и ничего не происходит, в чем причина? Надо ставить ОС 2000? Или 98? Сижу на Малинке.

 ,

Finby ()

QEMU отключение интеграции мыши

Компилировал так:

./configure --enable-sdl --with-sdlabi=2.0 --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --target-list=x86_64-softmmu --enable-kvm

Запускаю так:

./Soft/source/qemu-3.0.0/x86_64-softmmu/qemu-system-x86_64 -cpu host -m 2048 -hda qemu/arch/disk.img -device virtio-vga,virgl=on -soundhw ac97 -display sdl,gl=on -smp cores=2 -enable-kvm

В играх курсор сходит с ума. В виртуалбоксе чинил это путем отключения автоинтеграции мыши,можно ли как нибудь провернуть такое же в QEMU?

 ,

Elmer_ ()

LXC с неродной архитектурой

Можно ли в LXC запустить контейнер с архитектурой, отличной от архитектуры хоста? Технически можно реализовать с помощью qemu-user, но кто-нибудь реально это делал? Есть поддержка в самом LXC?
Судя по этому скриншоту, возможность выбора архитектуры в virt-manager предусмотрена, однако у себя я этой опции не нашёл.
При попытке ручного редактирования xml, так что блок os стал выглядеть так:

  <os>
    <type arch='aarch64'>exe</type>
    <init>/sbin/init</init>
  </os>
Чуда не случилось и я получил следующую ошибку: invalid argument: could not find capabilities for ostype=exe arch=aarch64 domaintype=lxc.

 , , , ,

CYB3R ()

osimg.ru — автоматически собираемые образы Linux

https://osimg.ru

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

  • Arch Linux
  • CentOS 7
  • Debian 9
  • Ubuntu 18.04

Во всех самых распространенных форматах:

  • QEMU Qcow2
  • VirtualBox VDI
  • Hyper-V VHDX
  • VMware VMDK

Удобно для тестирования софта, установщиков, скриптов.
В отличии от https://www.osboxes.org/ - образы минималистичные, без графики.
Плюс прямые ссылки и раздача через CDN на хороших скоростях. Можно скачивать утилитами curl/wget.

Скрипты сборки выложены на https://github.com/osimg

Интересно ваше мнение: какие ОС добавить, каких пакетов не хватает, настроек? Может найдете ошибки или обнаружите что что-то не работает.

 , , , ,

delfer ()

Можно ли делать снапшёты виртуальных машин qemu, если используется вложенная виртуализация

Такой вопрос:
у меня есть виртуальные машины, внутри которой запущенны виртуальные машины. На сайте разбаботчиков написанно:

linux-kvm

Attempting to migrate or save & load an L1 guest while an L2 guest is running will result in undefined behavior. You might see a kernel BUG! entry in dmesg, a kernel oops, or an outright kernel panic. At any rate, a thus migrated or loaded L1 guest can no longer be considered stable or secure, and must be restarted.

какая вероятность того, что гипервайзер может уйти в kernel panic?

 , , ,

ne-vlezay ()

qemu 3.0.0 -cpu host : windows 10 не инициализирует cpu

Собственно сабж. Хост Arch linux (4.18.9) Решил обновить qemu c 2.9.0 до текущей, ибо пофиксили очень проблемный баг, связанный с работой ssd Но, теперь винда виснет прямо сходу, все что я вижу - логотип винды (без вертящихся точек, типо загрузки) Опытным путем выяснил, что собака зарыта в этой строчке: Так не стартует

-enable-kvm -m 10G -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_vendor_id=fucknvidia,kvm=off  \

а так стартует:

-enable-kvm -m 10G \

Гуглеж решения не дает. Мб тут кто вкурсе?

 , ,

Rockon ()

steam-launcher это виртуальная машина или нет?

1) Исходя из списка зависимостей на странице
https://wiki.gentoo.org/wiki/Steam

получается, что Steam напрямую выполняется на компьютере и рисует на X-Server-е.

Хотелось бы почитать, как установить Steam внутри qemu, потому что запускать чужие игру просто так страшно (вдруг они захватят комп?)

 ,

Einstok_Fair ()

Фреймбуфер QEMU

Уважаемые специалисты. Подскажите пожалуйста как посмотреть какой в запущенной системе QEMU действует видеобуфер и как адрес этого буфера можно задать. Если это возможно, как аргумент qemu-system. Или в каком файле он прописывается, если его аргументом изменить невозможно.

 

Viktor2004 ()