Subject: NNCP road warrior

From: John Goerzen <[email-masked]>
Date: Thu, 06 Jan 2022 14:54:39 -0600

So I have been reflecting on the recent conversations about two
different routes and such, and thought "can we solve this problem at a
different layer?"

I've been looking into two options that would be very interesting here.

One is Yggdrasil network, https://yggdrasil-network.github.io/ .  This
is an overlay network atop the public Internet, that is fully end-to-end
encrypted all the time.  More particularly, the entire global network is
an auto-healing mesh, so if you take your laptop from home to work, it
will find a new path online (or re-establish a link with the same peer)
and your IP address remains the same.  IP addresses are v6 only and are
derived from the node's public key, so each person gets basically a
globally-routable static IP, plus also a /64 subnet if you like.  You
can also run Yggdrasil in an entirely closed network by simply never
connecting any of the nodes to a public peer on the main network (though
the moment one node is connected to the main network, they all are
reachable there via mesh routing)

Tinc vpn https://tinc-vpn.org/ is another option.  While it came along
long before Yggdrasil, I think of it as sort of a private-only
alternative.  Like Yggdrasil, it has mesh routing so you can reach any
of your nodes via any others so long as there is a path somewhere,
somehow.  Unlike Yggdrasil, it's aimed more at traditional VPN uses and
lets you specify your own IP ranges, routing between networks, etc.

A sort of third option is Tor.  I've tried this for awhile, and operate
a couple of nncp-daemons as a Tor onion service.  This achieves the
portability I'm looking for, but is slow.  EXTREMELY slow.  So slow, in
fact, that NNCP seems to have a 10-second timeout on connect that often
gets triggered.

Here's my idea...  for, say, sending things out from my laptop: I can
have the default addr for the destination (say, lan) be hardcoded to an
IP that is only reachable on the lan.  Then, when I am traveling, I can
optionally manually trigger a call to a different address -- its tinc or
Yggdrasil one -- if I am at a place with good enough Internet service,
etc.  I think that should all work reasonably well.  Of course, if I
don't care about sending 10GB backups over tethered 4G, I could just
always use the tinc or Yggdrasil IP instead.

This doesn't resolve EVERY use case -- for instance, if my home box is
down and I still want to get backups out by sending some stuff via
something else -- but it does help, I think.

John