Ce guide vous aidera à configurer un pont WebTunnel pour aider les utilisateurs censurés à se connecter au réseau Tor.
WebTunnel is a pluggable transport that attempts to imitate web browsing activities based on HTTPT.
The requirements for deploying a WebTunnel bridge are:
- Une IPv4 statique (de préférence) ;
- La possibilité d'exposer des ports TCP à l'Internet ( veiller à ce que le NAT ne soit pas un obstacle) ;
- Un site web auto-hébergé, comprenant un serveur web configurable (tel que NGINX ou Apache) et un domaine sous votre contrôle ;
- Un certificat TLS valide.
Le déploiement d'un pont WebTunnel implique la configuration d'un serveur web et d'un pont Tor avec ce transport amovible.
La première partie de ce guide fournit des instructions détaillées pour configurer votre serveur web pour prendre en charge WebTunnel.
The second part, you will choose between two methods for running the WebTunnel bridge: either using Docker or by compiling from the source code.
Veuillez noter que si vous ne remplissez pas les conditions requises pour utiliser un WebTunnel ou un pont obfs4, l'utilisation d'un proxy Snowflake est un excellent moyen de faire don de votre bande passante pour aider les utilisateurs à contourner la censure.
Configuration du serveur web
Étape 1. Configurez votre domaine
Si vous disposez déjà d'un domaine de site web, vous pouvez soit utiliser le domaine principal, soit créer un sous-domaine.
Dans ce guide, le pont WebTunnel est hébergé sur le même serveur que votre site web, mais il est possible de l'héberger sur un autre serveur.
Étape 2. Obtenir un certificat valide
Si votre site n'a pas de certificat TLS, vous pouvez en obtenir un en utilisant acme.sh, qui est un client du protocole ACME écrit en Shell.
2.1. Installer ACME
Remplacez my@example.com
avec votre adresse électronique :
$ curl https://get.acme.sh | sh -s email=my@example.com
Ou
$ wget -O - https://get.acme.sh | sh -s email=my@example.com
2.2. Délivrer un certificat
Remplacez example.com
avec votre nom de domaine de site web.
$ ~/.acme.sh/acme.sh --issue --standalone --domain example.com
Étape 3. Installer NGINX
To coexist with other content on a single port, you should install a reverse proxy, such as NGINX.
Installer NGINX :
$ sudo apt install nginx
Étape 4. Configurer NGINX
4.1. Générer une chaîne aléatoire
Lorsque les clients se connectent à votre serveur web, ils sont redirigé vers votre proxy WebTunnel quand ils utilisent un chemin secret.
Vous pouvez générer une chaîne de caractères aléatoire en exécutant cette commande :
$ echo $(cat /dev/urandom | tr -cd "qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAQWERTUIOP0987654321"|head -c 24)
4.2. Créer ou modifier un serveur vhost NGINX
Créez un nouveau fichier vhost tel que /etc/nginx/sites-available/webtunnel-vhost
qui redirige le trafic vers le pont WebTunnel.
Voici un exemple complet de serveur vhost NGINX avec WebTunnel.
Ou si vous voulez utiliser un serveur vhost existant, vous pouvez simplement l'éditer et y ajouter le bloc location {}
.
Remplacer $PATH
par une chaîne de caractères aléatoire.
# NGINX bloc de serveur virtuel exemple
location = /$PATH {
proxy_pass http://127.0.0.1:15000;
proxy_http_version 1.1;
### Définir les en-têtes WebSocket ###
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
### Définir les en-têtes 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 /dev/null;
}
4.3. Tester la configuration du serveur vhost et recharger NGINX
sudo ln -s /etc/nginx/sites-available/webtunnel-vhost /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Étape 5. Configurez votre pont Tor WebTunnel
Félicitations ! Vous avez configuré avec succès votre serveur web pour qu'il transfère les requêtes vers votre pont Tor.
Vous devez maintenant installer et configurer votre pont pour qu'il reçoive ces requêtes du serveur web.
Veuillez suivre la deuxième partie de ce guide.
Vous avez deux options disponibles : soit compilez un fichier binaire Go à partir du source ou utilisez Docker.