Esta guía te ayudará a configurar un proxy Snowflake independiente en un servidor para ayudar a los usuarios censurados a conectarse a la red Tor. El único requerimiento es conectividad a Internet, sin embargo, una de las principales ventajas de los proxies Snowflake independientes es que pueden ser instalados en servidores, y ofrecen un ancho de banda más alto y una opción más confiable para usuarios detrás de NATs y cortafuegos restrictivos. Por lo tanto, recomendamos especialmente:

  1. Conectividad 24/7 a Internet
  2. Un NAT uno a uno (puedes usar esta herramienta para comportamiento de NAT para probar qué tipo de NAT tienes. Las propiedades deseables son mapeo independiente de la dirección, y filtrado independiente o bien dependiente de la dirección)
  3. Un servidor sin NAT o sin restricciones, con UDP entrante en todo el rango de puertos de cat /proc/sys/net/ipv4/ip_local_port_range abierto (o el rango establecido con el indicador opcional -ephemeral-ports-range).

Hay varias maneras de configurar y mantener un proxy snowflake independiente.

Configuración con Docker

Primero debes tener Docker y docker-compose instalados.

Tenemos una imagen Docker para facilitar la configuración de un proxy snowflake. Primero descarga docker-compose.yml. Luego, despliega el proxy ejecutando:

docker-compose up -d snowflake-proxy

Ahora deberías ver la salida:

Creating snowflake-proxy ... done

¡y tu proxy está corriendo!

docker-compose.yml contiene un contenedor watchtower, configurado para buscar automáticamente actualizaciones del docker acoplable Snowflake todos los días, descargarlas y ejecutarlas. Entonces, si estás usando eso, ¡tu proxy de snowflake se mantendrá actualizado automáticamente! De lo contrario, deberá extraer periódicamente el contenedor más reciente y reiniciarlo manualmente.

Ansible

Ahora existe un rol Ansible para instalar un proxy Snowflake en Debian, Fedora, Arch Linux, FreeBSD y Ubuntu creado por Jacobo Nájera. Sigue la guía para ejecutar un Snowflake con Ansible.

Compilar y ejecutar desde el código fuente

  1. Primero tendrás que instalar y configurar el compilador de Go para construir el proxy independiente del código fuente. Inicia sesión con una cuenta de usuario con derechos sudo o directamente con root (en el último caso, omite la parte sudo en los siguientes comandos). Si estás ejecutando Ubuntu o Debian, puedes instalar Go ejecutando sudo apt install golang. Si usas Fedora, Red Hat o Amazon Linux con sudo yum install golang o sudo dnf install golang. También puedes visitar https://golang.org/dl/. Necesitará Go 1.20 o posterior para ejecutar el proxy Snowflake. Puedes verificar la versión instalada usando el comando go version.

  2. En segundo lugar necesitas el cliente git para descargar el código fuente de Snowflake. Inicia sesión con una cuenta de usuario con derechos sudo o directamente con root (en el último caso, omite sudo de los siguientes comandos). Si utilizas Ubuntu o Debian, puedes instalar git ejecutando sudo apt install git. Si usas Fedora, Red Hat o Amazon Linux con sudo yum install git o sudo dnf install git. De lo contrario, consulta la documentación de tu sistema operativo.

  3. Por favor sigue los siguientes pasos con la cuenta de usuario en la que se ha de ejecutar el proxy. No uses root. Se recomienda crear una cuenta separada snowflake con derechos restringidos en el sistema.

  4. Clona el source code.

    git clone https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
    
  5. Crea el proxy Snowflake.

    cd snowflake/proxy
    go build
    
  6. Ejecuta el proxy Snowflake.

    nohup ./proxy &
    

    Si deseas guardar la salida del proxy en un archivo de registro, puedes usar:

    nohup ./proxy >snowflake.log 2>&1 &
    
  7. Asegúrate de que el proxy se inicia tras reiniciar el sistema:

    crontab -e
    

    Ingresa la siguiente línea (ejemplo, adapta la trayectoria a tu situación)

    @reboot nohup /home/snowflake/snowflake/proxy/proxy > /home/snowflake/snowflake/proxy/snowflake.log 2>&1 &
    

    Verifica si esto funciona reiniciando el sistema y verificando el registro. En algunas instalaciones de Linux, esto podría no funcionar.

Para mantener actualizado tu proxy de snowflake, ejecuta los siguientes comandos cada pocas semanas (inicie sesión con la cuenta de usuario utilizada durante la instalación del proxy):

kill -9 $(pidof proxy)
cd snowflake/
git pull
cd proxy
go build
nohup ./proxy >snowflake.log 2>&1 &