[tahoe-lafs-trac-stream] [Tahoe-LAFS] #517: make tahoe Tor- and I2P-friendly

Tahoe-LAFS trac at tahoe-lafs.org
Tue Sep 8 23:50:26 UTC 2015


#517: make tahoe Tor- and I2P-friendly
-------------------------+-------------------------------------------------
     Reporter:  warner   |      Owner:  ioerror
         Type:           |     Status:  new
  enhancement            |  Milestone:  undecided
     Priority:  minor    |    Version:  1.2.0
    Component:  code-    |   Keywords:  privacy anonymity anti-censorship
  network                |  i2p tor-protocol usability
   Resolution:           |
Launchpad Bug:           |
-------------------------+-------------------------------------------------

Comment (by str4d):

 Replying to [comment:34 warner]:
 > From today's meeting, folks seemed comfortable with the following
 tahoe.cfg syntax to configure the client side:
 >
 > {{{
 > [node]
 > anonymous = true
 >
 > [connections]
 > tor.socks-proxy = HOST:PORT
 > tor.(otherstuff)=??
 >
 > tcp.socks-proxy = HOST:PORT
 >
 > i2p.connect-proxy = URL
 > }}}
 >
 > The presence of `[connections]tor.socks-proxy=` will cause Tahoe to
 install a Foolscap connection plugin that handles FURL connection-hints
 which begin with `tor:` by sending them to the given SOCKS5 proxy. The
 presence of `tcp.socks-proxy=` makes it remove all plugins and then
 install a similar plugin that handles `tcp:` connection hints. And the i2p
 plugin is similar, but uses an HTTP "CONNECT" proxy instead of SOCKS,
 since apparently that's how the I2P client does it.

 That is how I2P does it ''now'', using duck's HTTP proxy patch. But that
 was only because it was the simplest patch; as I believe was raised in
 that ticket's thread, Tahoe / Foolscap isn't really an HTTP protocol. And
 I2P could just as easily use a SOCKS proxy. But this is only useful for
 clients.

 This line of discussion raises the question: for this initial client-only
 phase, is the intention to just use plain SOCKS (via `txsocksx`) and HTTP
 (via something like duck's I2P patch) proxies, rather than `txtorcon` and
 `txi2p`?

 If `txi2p` is going to be used, then the option needs to be `i2p.sam-
 api=`. I assume that `tor.socks-proxy` and `i2p.sam-api` would be allowed
 to be empty, which would mean "use the default value".

 >
 > If `[node]anonymous` is true, we'll enforce two things, as per #1010:
 >
 > * `[node]tub.location` does not contain "AUTO"
 > * `[connections]tcp.socks-proxy` is set

 Should this be "one of `tcp.socks-proxy`, `tor.socks-proxy`, or `i2p.sam-
 api`"?

 >
 > (We could make this stronger: require tub.location to only contain
 `tor:` or `i2p:` hints, require the hostnames in tub.location to end in
 `.onion` or `.i2p`, and maybe require the tcp.socks-proxy to point at
 127.0.0.1 instead of some potentially-exterior host. But for now I think
 these two are sufficient)
 >
 > We'd like to allow tub.location to be empty. We need to make sure
 Foolscap can handle that (on both server and client sides), and then
 eventually we want `tahoe create-client` to leave tub.location and
 tub.port (meaning "don't listen at all").
 >
 > For this first step, we'll just do the client side, and only in
 tahoe.cfg. This should be enough to:
 >
 > * use a previously-configured (and running) Tor/I2P client
 > * manually configure Tor/I2P to forward inbound connections to a tahoe
 server
 > * advertise `tor:` or `i2p:` connection hints (via `tub.listen`)

 I assume that `tub.location` is meant, which would be empty for clients.
 And while only the SOCKS/HTTP proxy side is implemented, then with
 `[node]anonymous = True`, `tub.listen` would be empty because there would
 be no way to create a Tor HS or I2P Destination.

 > * utilize `tor:` and `i2p:` connection hints from others
 >
 > In a second phase, we'll use the `tor.(otherstuff)` fields (which might
 not want to live in `[connections]`, I dunno) to launch a Tor daemon at
 node startup (maybe using a pre-configured base directory under
 `~/.tahoe/`, maybe with a config file that's built from the tahoe.cfg
 options). Then in the third phase, we make changes to the `tahoe create-
 client`/`tahoe create-node` arguments, to configure that Tor daemon (and
 allocate onion servers, etc).
 >
 > But for now, I think these tahoe.cfg changes will enable manual Tor/I2P
 setup without needing to figure out the `--tor-only` / `--listen-on-tor` /
 etc arguments just yet.

 +1.

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/517#comment:36>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list