Esta guía te ayudará a configurar un puente WebTunnel para ayudar a los usuarios censurados a conectarse a la red Tor.
WebTunnel es un transporte conectable que intenta imitar las actividades de navegación web basadas en HTTPT.
Los requisitos para implementar un puente WebTunnel son:
- Un IPv4 estático (preferiblemente);
- La capacidad de exponer puertos TCP a Internet (asegúrate de que NAT no se interponga en su camino);
- Un sitio web autohospedado, incluido un servidor web configurable (como NGINX o Apache) y un dominio bajo tu control;
- Un certificado TLS válido.
La implementación de un puente WebTunnel implica configurar tanto un servidor web como un puente Tor con este transporte conectable.
La primera parte de esta guía proporciona instrucciones detalladas para configurar tu servidor web para que admita WebTunnel.
En la segunda parte, elegirás entre dos métodos para ejecutar el puente WebTunnel: usando Docker o compilando desde el código fuente.
Ten en cuenta que si no cumples con los requisitos para ejecutar un WebTunnel o un puente obfs4, ejecutar un Snowflake proxy es una excelente manera de ceder tu ancho de banda para ayudar a los usuarios a eludir la censura.
configuración del servidor web
Paso 1. Configura tu dominio
Si ya tienes un dominio de sitio web, puedes usar el dominio principal o crear un subdominio.
En esta guía, el puente WebTunnel está alojado en el mismo servidor que tu sitio web, pero es posible alojarlo en un servidor diferente.
Paso 2. Obtener un certificado válido
Si tu sitio web no tiene un certificado TLS, puedes obtener uno usando acme.sh, que es un cliente de protocolo ACME escrito en lenguaje Shell. .
2.1. Instalar ACME
Reemplaza mi@ejemplo.com
con tu dirección de correo electrónico:
$ curl https://get.acme.sh | sh -s email=my@example.com
O
$ wget -O - https://get.acme.sh | sh -s email=my@example.com
2.2.Emitir un certificado
Reemplaza example.com
con el dominio de su sitio web.
$ ~/.acme.sh/acme.sh --issue --standalone --domain example.com
Paso 3. Instalar NGINX
Para coexistir con otro contenido en un solo puerto, debes instalar un proxy inverso, como NGINX.
Instalar NGINX:
$ sudo apt install nginx
Paso 4. Configurar NGINX
4.1. Generar una cadena aleatoria
Cuando los clientes se conectan a tu servidor web, serán redirigidos a tu proxy WebTunnel cuando usen una ruta secreta.
Puedes generar una cadena aleatoria ejecutando este comando:
$ echo $(cat /dev/urandom | tr -cd "qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAQWERTUIOP0987654321"|head -c 24)
4.2. Crear o editar un vhost NGINX
Crear un nuevo archivo vhost como /etc/nginx/sites-available/webtunnel-vhost
que reenvíe el tráfico al puente WebTunnel.
He aquí un completo ejemplo NGINX de vhost con WebTunnel.
O si deseas usar un vhost existente, simplemente puedes editarlo y añadir el bloque location {}
.
Reemplaza $PATH
con la cadena aleatoria.
# Ejemplo de bloque vhost NGINX
location = /$PATH {
proxy_pass http://127.0.0.1:15000;
proxy_http_version 1.1;
### Establecer encabezados WebSocket ###
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
### Establecer encabezados de proxy ###
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
proxy_redirect off;
access_log off;
error_log off;
}
4.3. Probar la configuración de vhost y recargar NGINX
sudo ln -s /etc/nginx/sites-available/webtunnel-vhost /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Paso 5. Configura tu puente Tor WebTunnel
¡Felicidades! Has configurado correctamente el servidor web para enviar solicitudes a tu puente Tor.
Ahora, debes instalar y configurar el puente para recibir estas solicitudes del servidor web.
Sigue la segunda parte de esta guía.
Tienes dos opciones disponibles: compilar un Go binario desde sourceo usar Docker.