This article addresses a common issue faced by some users: the inability to connect to the Tor directory server after running brew install tor and tor. This failure prevents the further retrieval of relay nodes to establish a path within the Tor network.

To facilitate successful connections to the Tor directory server, the Tor Project developed several methods known as Pluggable Transports. These include obfs4 and meek, among others. Meek, in particular, repackages traffic to resemble HTTPS, making it harder to identify. Other methods interestingly repackage traffic to mimic Skype.

Focusing on the Meek pluggable transport, this article guides you through the process of accessing the Tor directory server. After installing Tor with brew install tor, the next step

is to clone the Meek tool from the Tor Project’s Git repository:

git clone https://git.torproject.org/pluggable-transports/meek.git

Navigate to /meek/meek-client and execute make (ensure that Go is installed and resolve any package errors with the provided links). If successful, you will see a meek-client executable.

Move this meek-client executable to /usr/local/etc/tor.

The next step is to edit the Tor configuration file at /usr/local/etc/tor/torrc. This does not require sudo privileges. Add the following lines at the top of the file, specifying the use of a bridge, the bridge address (using Azure as an example), and the Meek plugin:

UseBridges 1
Bridge meek 0.0.2.0:3 url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
ClientTransportPlugin meek exec ./meek-client --log meek-client.log

Save the changes to torrc. The final step is to run tor in the terminal.

Potential Errors

Even with correct settings, you might encounter errors preventing Tor from running:

In such cases, try deleting the log files in /usr/local/etc/tor. This often resolves the issue.

References:

  1. List of Pluggable Transports
  2. Meek and Domain Fronting Presentation