On 7/1/24 21:55, daggs via Users wrote: >> Sent: Monday, July 01, 2024 at 2:32 PM >> From: "Michal Prívozník" <mprivozn@xxxxxxxxxx> >> To: "daggs" <daggs@xxxxxxx> >> Cc: users@xxxxxxxxxxxxxxxxx >> Subject: Re: per user vm isolation with shared network >> >> On 7/1/24 12:28, daggs wrote: >>> Greetings, >>> >>>> Sent: Monday, July 01, 2024 at 10:35 AM >>>> From: "Michal Prívozník" <mprivozn@xxxxxxxxxx> >>>> To: "daggs" <daggs@xxxxxxx>, users@xxxxxxxxxxxxxxxxx >>>> Subject: Re: per user vm isolation with shared network >>>> >>>> On 6/30/24 01:01, daggs via Users wrote: >>>>> Greetings, >>>>> >>>>> I have two vm which I want to isolate per user, if I'm not mistaken, I can to that with per session uri. >>>>> but I want to setup a virtual bridge so they will get connected with each other. >>>>> looks like that if I define the network as system, it isn't visible in the session. >>>>> is there a way to do that? if I define the same network in both sessions, will it work? >>>>> >>>>> Thanks, >>>>> >>>>> Dagg >>>>> >>>> >>>> Yeah, this is known issue: >>>> >>>> https://gitlab.com/libvirt/libvirt/-/issues/438 >>>> >>>> what you can do is create a bridge and then use qemu-bridge-helper to >>>> plug TAPs from qemu:///session VMs into the bridge. Theoretically, you >>>> could even misuse virbr0. >>>> >>>> Michal >>> >>> thanks, I've started looking into it however I'm unable to see the network from the dedicated user, see: >>> $ id; virsh -c qemu:///session net-list --all; virsh -c qemu:///system net-list --all >>> uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) >>> Name State Autostart Persistent >>> -------------------------------------------- >>> default active yes yes >>> >>> Name State Autostart Persistent >>> -------------------------------------------- >>> default active yes yes >>> >>> $ su -c "id; virsh -c qemu:///session net-list --all; virsh -c qemu:///system net-list --all" foo >>> uid=1002(foo) gid=1002(foo) groups=1002(foo),34(kvm),36(qemu),102(libvirt) >>> Name State Autostart Persistent >>> ---------------------------------------- >>> >>> error: failed to connect to the hypervisor >>> error: internal error: Unable to get system bus connection: Could not connect: No such file or directory >> >> This is expected and in fact it's what the issue I've linked earlier is >> all about. >> >>> $ cat /etc/qemu/bridge.conf >>> # This should have the following permissions: root:qemu 0640 >>> >>> # Allow users in the "qemu" group to add devices to "br0". >>> allow br0 >> >> put "allow virbr0" here. >> >> And then have your qemu:///session domain use: >> >> <interface type='bridge'> >> <source bridge='virbr0'/> >> </interface> >> >> OR, if you don't want to use virbr0 from qemu:///system you can >> s/virbr0/br0/ in the XML snippet and create br0 yourself. virbr0 has NAT >> which is something you may not want. >> >> Michal >> >> > > thanks, seems like I'm past this part, the vm start fails because of insufficient permissions to detach/reattach the pci nodes, I assumed that there is no fast solution so > I fixed it with a script that uses doas to preform the detach/reattach. No sysadmin wants to allow regular users to bind PCI devices to "random" drivers, surely. PCI devices must be "detached" (i.e. bound to vfio driver) by sysadmin (e.g. virsh -c qemu:///system nodedev-detach ...) BEFORE qemu:///session domain wants to use the device. > now I get this error: error: Unable to create tap device vnet0: Operation not permitted > > seems like I need special permissions to create the tap device. > to I need to create the tap device and attach it to the bridge as part of the prepare stage? > I'm not sure why your system refuses that. Works on my machine just fine. You should talk to your distro vendor about that decission. Michal