Skip to content

Client README recommends command-line options rather than bridge line arguments

snowflake-client, for backward compatibility reasons, accepts some configuration options as command line options (e.g. -front, -ice) as an alternative to the (preferred) format of setting those options in a bridge line (e.g. front=, ice=). The command-line versions are needed only for very very old versions of tor. The bridge line args are preferred because the scope of command-line options is global, while bridge line args are specific to a single tor SOCKS connection (so you can have multiple bridge lines with different options).

The client README still documents and recommends the old command-line options:

https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/blob/d434549df88292ff6e61830dc06a49b0ac1b21c6/client/README.md#running-the-snowflake-client-with-tor

The Snowflake client can be configured with either command line options or SOCKS options. We have a few example torrc files in this directory. We recommend the 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.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.uls.co.za:3478,stun:stun.voipgate.com:3478,stun:stun.voys.nl:3478

Bridge snowflake 192.0.2.3:1

We should update these to recommend bridge line args instead, as is already the case in torrc. The command-line options don't even need to be documented IMO.

Here's a case of a user on NTC being confused by the README: https://ntc.party/t/in-case-snowflake-rendezvous-gets-blocked/1857/28.