Qubes Network viewer

If you want to visualise what your Qubes network looks like, I’ve thrown together a simple viewer.
Probably only useful if you have something more complex than the default, but still fun.

You can mouse over qubes for information, highlight qubes, change names, and hide qubes, if you want to share a view.
Here’s what it looks like:

It’s intended to run on a management qube, but you could generate the data file in dom0, copy it in to a qube, and view it there.

Source

10 Likes

Pretty epic! There is already a contribution that aimed to do this, but has been stalled for years!

Maybe this can be an alternative to that proposal?

Very neat! Something like this has been on my wish list for Qubes features ever since I started using it. Thanks!

A very nice tool!

Currently it suppresses template VMs without a netvm. If you just remove line 28 (if value['netvm'] != '-':) of manager.py, templates without netvm will be shown, too.

Just for fun, here is the network topology of my test machine:

2 Likes

It isn’t restricted to Templates, of course, but all qubes with no netvm.
I’ve added the capability to save and reload structures, as well as add
notes, but positioning those is not good.
If you run in a manager qube, then you can use many of the qube control
functions - start/stop/settings - Also right clock on a connector to
open the firewall tab.
I think this is a fair bit of overkill now.

1 Like

One more idea: Show the connections between templates and their AppVMs (standalone VMs are green):

Combining both in one picture would be overwhelming - a real overkill!

2 Likes

Quick update on this -
./manager.py shows network connections.
./manager.py --all shows network connections, and templates/qubes
that are not network connected.
call it as ./manager.py --templates and you can see the connections
between templates and their AppVMs, with StandaloneVMs in blue - any
network connected Templates are highlighted, and the connection to netvm
shown.

Not combined in to one picture (yet)

2 Likes

Phantastic - it gets better any day!!!

(For me, it is a very good help in teaching the structure of a multitude of VMs used for different purposses.)

One more idea: If you enter the following after line 56, standalone VMs are somewhat highlighted:

    else:
        if d[qube]['klass'] == 'StandaloneVM':
            G.nodes[qube]['label_fill'] = 'green'

This is already in the NodeToken class, but marked as blue, which
should make them stand out.
Just save and reload now, but I’m having problems with loading a
Template view after a network view, and vice versa.

In a similar vein:

I keep thinking it would be handy to have a drag and drop interface for daisy-chaining VMs along their path to Netvm. In music or video production it’s easy to draw strings between different blocks along a grid to assign parameters. Maybe harder to execute with multiple vms taking multiple paths, but on a 1:1 basis, could provide a more fool proof way of confirming the pathways you’ve established. Maybe with a prompt to check firewall rules after each remapping.

1 Like