snowflake/client
2021-08-05 16:13:24 -06:00
..
lib Implement ampCacheRendezvous. 2021-08-05 16:13:24 -06:00
README.md Cleaned up and reorganized READMEs 2021-07-19 10:16:26 -04:00
snowflake.go Skeleton of ampCacheRendezvous. 2021-08-05 16:13:24 -06:00
torrc Update example torrc file for client 2021-06-24 13:46:11 -04:00
torrc-localhost Change dummy address for snowflake 2020-04-01 12:55:37 -04:00

Table of Contents

This is the Tor client component of Snowflake.

It is based on the goptlib pluggable transports library for Tor.

Dependencies

  • Go 1.13+
  • We use the pion/webrtc library for WebRTC communication with Snowflake proxies. Note: running go get will fetch this dependency automatically during the build process.

Building the Snowflake client

To build the Snowflake client, make sure you are in the client/ directory, and then run:

go get
go build

Running the Snowflake client with Tor

We have an example torrc file in this repository. The client uses these following torrc options by default:

UseBridges 1

ClientTransportPlugin snowflake exec ./client \
-url https://snowflake-broker.torproject.net.global.prod.fastly.net/ \
-front cdn.sstatic.net \
-ice stun:stun.voip.blackberry.com:3478,stun:stun.altar.com.pl:3478,stun:stun.antisip.com:3478,stun:stun.bluesip.net:3478,stun:stun.dus.net:3478,stun:stun.epygi.com:3478,stun:stun.sonetel.com:3478,stun:stun.sonetel.net:3478,stun:stun.stunprotocol.org:3478,stun:stun.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478

Bridge snowflake 192.0.2.3:1

-url is the URL of a broker instance. If you would like to try out Snowflake with your own broker, simply provide the URL of your broker instance with this option.

-front is an optional front domain for the broker request.

-ice is a comma-separated list of ICE servers. These can be STUN or TURN servers. We recommend using servers that have implemented NAT discovery. See our wiki page on NAT traversal for more information.

To bootstrap Tor, run:

tor -f torrc

This should start the client plugin, bootstrapping to 100% using WebRTC.