Hello, folks!
After a long hiatus because of reasons, I'm happy to announce
Qubes network server -- an add-on to Qubes OS that allows you to
expose selected AppVMs to other VMs and to other machines in your
LAN as well. The latest tagged release is compatible with Qubes
4.0.
The URL to check is:
https://github.com/Rudd-O/qubes-network-server
An excerpt from the README.md file follows here. I hope this helps you understand what possibilities Qubes network server opens up for you.
I'm happy to report that, with a minor readjustment (attaching my
networked AppVMs to NetVMs instead of ProxyVMs), this functions as
an adequate replacement for Qubes network server from release 3.2.
--------------------------------------------------------------
This software lets you turn your [Qubes OS
4.0](https://www.qubes-os.org/) machine into
a network server, enjoying all the benefits of Qubes OS
(isolation, secure
inter-VM process communication, ease of use) with none of the
drawbacks
of setting up your own Xen server.
Qubes OS is a magnificent operating system, but there are so many
use cases that its networking model cannot crack:
The traditional Qubes OS networking model contemplates a client-only use case. User VMs (AppVMs or StandaloneVMs) are attached to ProxyVMs, which give the user control over outbound connections taking place from user VMs. ProxyVMs in turn attach to NetVMs, which provide outbound connectivity for ProxyVMs and other user VMs alike.
No provision is made for running a server in a virtualized
environment, such that the server's ports are accessible by (a)
other VMs (b) machines beyond the perimeter of the NetVM. To the
extent that such a thing is possible, it is only possible by
painstakingly maintaining firewall rules for multiple VMs, which
need to carefully override the existing firewall rules, and
require careful thought not to open the system to unexpected
attack vectors. The Qubes OS user interface provides no help
either.
Qubes network server changes all that.
With the Qubes network server software, it becomes possible to
make network servers in user VMs available to other machines, be
them peer VMs in the same Qubes OS system or machines connected to
a physical link shared by a NetVM. Those network server VMs also
obey the Qubes OS outbound firewall rules controls, letting you
run services with outbound connections restricted.
This is all, of course, opt-in, so the standard Qubes OS network
security model remains in effect until you decide to enable the
feature on any particular VM.
The only drawback of this method is that it requires you to attach
VMs meant to be exposed to the network directly to a NetVM, rather
than through a ProxyVM. VMs exposed through a ProxyVM will not be
visible to machines on the same network as the NetVM.
Once installed (see the full README.md at the URL posted above),
usage of the software is straightforward.
These sample instructions assume you already have an AppVM VM set
up, named testvm, and that your sys-net VM is
attached to a LAN with
subnet 192.168.16.0/24.
First, attach the VM you want to expose to the network to a NetVM
that has an active network connection:
qvm-prefs -s testvm netvm sys-net
Then, set an IP address on the VM:
qvm-prefs -s testvm ip 192.168.16.25
(The step above requires you restart the testvm VM if it
was running.)
Then, to enable the network server feature for your testvm
VM, all you have to do in your AdminVM (dom0) is run the
following command:
qvm-features testvm routing-method forward
Now testvm is exposed to the network with address 192.168.16.25,
as well as to other VMs attached to its sys-net NetVM.
Do note that testvm will have the standard Qubes OS
firewall rules stopping inbound traffic. To solve that issue, you
can [use the standard rc.local Qubes OS mechanism to alter the
firewall
rules](https://www.qubes-os.org/doc/firewall/#where-to-put-firewall-rules)
in your testvm AppVM.
--
Rudd-O
http://rudd-o.com/