There are applications where private relays, not listed in public consensus directories, would perhaps be useful. For example, one might use four-relay circuits with private entry guards and exit relays.
In How to create a private exit node?, weasel - Peter Palfrader
notes: "The routing protocol allows for [private exit nodes], but there is no support in Tor or its directory layer for what you ask." However, I see in the manpage:
PublishServerDescriptor 0|1|v1|v2|v3|bridge,…
This option specifies which descriptors Tor will publish when acting as a relay. You can choose multiple arguments, separated by commas.
If this option is set to 0, Tor will not publish its descriptors to any directories. (This is useful if you’re testing out your server, or if you’re using a Tor controller that handles directory publishing for you.) Otherwise, Tor will publish its descriptors of all type(s) specified. The default is "1", which means "if running as a server, publish the appropriate descriptors to the authorities".
So if I set PublishServerDescriptor 0
in a relay, it won't appear in any directories, right? But a client can still specify it as an exit, right?
Also, in that case, will information about my relay be forwarded beyond any adjacent relays in circuits specified by clients?
And just to be clear, is it true that none of the considerations discussed in The lifecycle of a new relay apply to unlisted relays?
The entry-guard piece seems trivial: bridges, perhaps obfuscated. But there is some ambiguity. I see in the manpage:
BridgeRelay 0|1
Sets the relay to act as a "bridge" with respect to relaying connections from bridge users to the Tor network. It mainly causes Tor to publish a server descriptor to the bridge database, rather than publishing a relay descriptor to the public directory authorities.
So if I set PublishServerDescriptor 0
and BridgeRelay 1
in a relay, will it be usable as a bridge, and yet not appear in any public directory?
For using it as a bridge, I see in the manpage:
Bridge [transport] IP:ORPort [fingerprint]
When set along with UseBridges, instructs Tor to use the relay at "IP:ORPort" as a "bridge" relaying into the Tor network. If "fingerprint" is provided (using the same format as for DirAuthority), we will verify that the relay running at that location has the right fingerprint. We also use fingerprint to look up the bridge descriptor at the bridge authority, if it’s provided and if UpdateBridgesFromAuthority is set too.
If UpdateBridgesFromAuthority
is not set, will the Tor client check the fingerprint by directly accessing the bridge, without "look[ing] up the bridge descriptor at the bridge authority"? In other words, will the client use bridges that aren't in the bridge authority?