"Manual" blocking/removing of Tor nodes
- Truncate descriptions
We've been looking into using Arti as a Tor library for mobile apps. In our settings, the amount of daily data sent (kilobytes) is very small compared to retrieving the consensus (megabytes). To reduce mobile bandwidth load, we made some modifications to Arti to run with a smaller consensus that is updated less frequently. See LightArti and Issue #267 (closed).
As a result of using a smaller long-term consensus, it sometimes contains nodes that are no longer reachable. To limit the number of nodes that will go offline, LightArti aims to pick stable nodes. This is not always enough to ensure reliable path establishment when the consensus is older than a few days. Therefore LightArti also has functionality to provide an additional blocklist of nodes that should not be used.
To facilitate this, we modified our forked Arti to allow access to the list of nodes in the (side-loaded) consensus/directory and to remove unavailable nodes from it. We achieved this by modifying the module tor-netdoc
in the following manner:
- The field
consensus
of the structureUnvalidatedConsensus
and the fieldrouters
of the structureConsensus
are set as public to be able to remove churned routers appearing over time.
You can find a (rough) diff wrt an older version of arti here.
Ideally we would prefer to extend stock Arti to provided by Arti that enables making these modifications. For example:
- Adding the ability to retrieve, modify and set the list of nodes in
netdir
; or - Adding the ability to directly remove nodes from the consensus
- Show labels
- Show closed items