I want to locally run a PT in unmanaged mode. I have set up a bridge for a local test using the following torrc:

BridgeRelay 1
Nickname "DummyTest"

SOCKSPort 5001
ORPort 65535
ControlPort auto

ExitPolicy reject *:*

AssumeReachable 1
PublishServerDescriptor 0

DataDirectory /tmp/dummy-server
Log debug file /tmp/dummy-server/debug.log
Log notice stdout

Then I run the dummy PT server as:

python obfsproxy/pyobfsproxy.py dummy server --dest

and the dummy PT client as:

python obfsproxy/pyobfsproxy.py dummy client --dest

At this point I'm able to browse the Web using the Tor Browser configured with the SOCKS proxy to So, the bridge and the PT seem to be working correctly.


However, when I run Tor using the following torrc:

UseBridges 1
Bridge dummy localhost:65535
ClientTransportPlugin dummy socks5 localhost:4999

SOCKSPort 4998

DataDirectory /tmp/dummy-client
Log debug file /tmp/dummy-client/debug.log
Log notice stdout

and I try to connect using the Tor browser through the port 4998. I get the following errors.

  • In the Tor bridge:

[notice] No Tor server allows exit to [scrubbed]:65535. Rejecting.

  • In the Tor Onion Proxy:

[warn] Proxy Client: unable to connect to ("connection not allowed by ruleset")

I also have tried with different exit policies and including parameters like:

ExitPolicyRejectPrivate 0
ClientDNSRejectInternalAddresses 0
ClientRejectInternalAddresses 0

in the torrc of the bridge and the client, but none of them worked.

  • Unmanaged mode is meant to allow usage of pluggable transports with other applications than Tor (e.g. OpenVPN). It's hard to see why someone would want to use unmanaged mode with Tor…
    – Lunar
    Commented May 24, 2014 at 7:19

1 Answer 1

python obfsproxy/pyobfsproxy.py dummy server --dest

Bridges don't expose the SOCKSPort (you can remove the line entirely). The only ports of relevance are the ORPort (or ExtORPort, but don't use that for this config).

python obfsproxy/pyobfsproxy.py dummy socks

tor will pass the desired destination (the bridge's dummy server) via SOCKS to the client side obfsproxy.

Bridge dummy localhost:5000

The Bridge line tells tor what transport ("dummy" in this case) to use, and what the IP address/port the transport should connect to (dummy server is listening on Port 5000).

You will end up with something like:

  • Firefox <-> Client tor (Client torrc SOCKSPort)
  • Client tor <-> dummy client (Port listed in ClientTransportPlugin, client pyobfsproxy line)
  • dummy client <-> dummy server (Port listed on the Bridge line, bridge pyobfsproxy line)
  • dummy server <-> Bridge tor ORPort (Bridge torrc ORPort)
  • Thanks @Yawning! It works now. Btw, I think the line Bridge dummy socks5 localhost:5000 should not include socks5.
    – synack
    Commented May 25, 2014 at 17:32
  • Indeed. Fixed. :)
    – user78
    Commented May 25, 2014 at 23:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .