I have recently setup a system with TrueNAS scale and while it’s been mostly smooth sailing (lies), I can’t figure out why TrueNAS itself cannot connect to virtual machines and vice versa, which kinda sucks for me as I have a wireguard server setup on a virtual machine, which works but clients connecting to it cannot connect to anything hosted on the host itself…
(And the whole reason I have wireguard setup like this is because I couldn’t figure out how to setup the wg-quick app, it just refuses to work for unknown to me reasons… and by “work” I mean that the WG clients just cannot connect to it, the webui itself works).
The VMs are set with Virtio as their NIC and truenas itself is set to a static IP and can connect to everything else…
Any help would be appreciated…
[SOLUTION]
This is gonna be a quick overview on how to fix this issue, as it seems to be fairly common. You can find more detailed instructions here: https://forum.level1techs.com/t/truenas-scale-ultimate-home-setup-incl-tailscale/186444
Scroll down to the section titled “Oh but wait”
Note: This problem cannot be fixed through neither the webui, web shell, nor SSH, you need to have physical access to the machine, a display adapter and a monitor to display the TUI on.
-
From the cli menu, go to “Configure network interfaces”
-
Remove DHCP/Any other static alias you have on your main interface by either pressing delete on it or by manually going to it and deleting it, just leave the alias field blank and ipv4_dhcp to “No”, then click on Save
-
Create a new interface by bressing “n”, select type 'BRIDGE", set name to “br0” (without the quotes) and either enable DHCP or add the IP alias that you previously removed from your main interface as an alias here and click on Save
-
Back on the main “Configure network interfaces screen” press “a” to save changes, then “p” to make them permanent (again without the quotes).
-
At this point, your network should drop out and you shouldn’t be able to connect to the WebUI. Reboot the system and everything should work properly again!
-
That’s it! Problem solved. Now you should go and change the NICs of the VMs to use the new br0 and they should able to connect to the truenas host just fine.
From what I understand Scale uses libvirtd and KVM virtualization. You’re probably using the builtin virtio virtual network, which uses macvlan if I recall correctly. Anyway, because of the way it’s set up, communication between the VMs and the host is impossible. I’m guessing that what you need to do is create a bridge on the host, and then assign it directly to each of the VMs. That’s how it works with regular KVM anyway. If TrueNAS are doing something different that might throw a wrench.
This is corect. You need too use a bridge for VMs to communicate with the host. Been doing it like this for about a year. Also i added a special bridge gave the bridge a static IP so i can connect VMs to things like network shares without any fysical network connectivity.
Though if you have hairpin mode on your router/switch I believe it works, just most not bought specific for it don’t have the option
This guide explains what’s going on and how to fix it. Scroll down to the section titled “Oh no but wait”
https://forum.level1techs.com/t/truenas-scale-ultimate-home-setup-incl-tailscale/186444
Here’s the corresponding video