Intro
Comme certains le savent déjà je suis très attaché a la possibilité de faire fonctionner duniter à l’intérieur du réseau tor, j’ai donc entrepris le chantier permettant d’avoir un nœud fonctionnel entièrement derrière tor, et la bonne nouvelle c’est qu’après un gros WE de dev (+lundi soir) j’ai réussi
Alors les plus connaisseurs me diront qu’il était déjà possible de faire fonctionner duniter entièrement derrière tor et l’encapsulant dans une VM dont tout le trafic internet serait redirigé vers un proxy tor, oui mais non, cela fonctionne pour le trafic sortant mais pas pour le trafic entrant, comme fait-on pour vous contacter ?
Pour cela il faut que l’api inter-nœud gère nativement le cas, et c’est ce sur quoi j’ai bossé en créant les endpoint WS2PTOR
J’ai déjà deux nœuds WS2PTOR qui tournent sur le réseau g1-test, et l’objet de ce tutoriel est de vous aider à lancer vous aussi un nœud WS2PTOR afin de vérifier si tout cela fonctionne bien
En fonction des retours que je vais avoir ces prochains jours, et de la stabilité ou pas, cela déterminera si WS2PTOR sera intégrée a la 1.6 officielle ou devra attendre la 1.7. J’espère vraiment pouvoir l’intégrer à la 1.6, mais pour ça il faut qu’on teste intensément cette semaine.
Installer votre nœud dunitor
il suffit d’avoir duniter version 1.6.14 ou supérieur
Configurer WS2PTOR Privé
Si vous désactivez le WS2P Public alors avoir le Tor Browser qui tourne en parallèle suffira (il suffit de le lancer avant de lancer duniter). En revanche pour du WS2PTOR Public il vous faudra installer tor standalone (cf. WS2PTOR Public).
La configuration doit se faire en une seule commande :
duniter config --tor-proxy <host:port> --reaching-clear-ep <clear|tor|none> [--force-tor]
Il y a 3 éléments de configuration :
- Le proxy tor, par défaut il s’agit de
localhost:9050
(dépend de la ligneSocksPort
du fichier de config de tor) - La politique a adopter vis à vis des nœuds ws2p classiques : les contacter en clair (clear), les contacter via tor (tor), ou ne jamais les contacter (none).
- L’option
--force-tor
ne sert que pour les utilisateurs qui redirigent eux-même le traffic sortant via tor (en l’encapsulant dans une VM par exemple), cela leur permet de dire a leur nœud duniter : « écoute, tu n’utilise pas de proxy mais fait moi confiance, contacte les nœuds tor, je redirige le traffic ».
Pour résumé en général la config d’un noeud full tor sera :
duniter config --proxy-tor localhost:9050 --reaching-clear-ep tor
Et voilà votre nœud utilise désormais le réseau tor pour ses connexions ws2p sortantes (ws2p privé)
Pour effacer toute la config tor et repasser en mode normal (aucun proxy) :
duniter config --rm-proxies
Configurer WS2PTOR Public
Pour avoir votre propre endpoint WS2PTOR, vous devez créer un hidden service, c’est en réalité beaucoup plus simple qu’il n’y parait vous allez voir :
Dans un premier temps installez tor, voici la démarche pour debian et dérivés (ubuntu compris) :
Ajoutez le dépôt de torproject, importez leurs clés gpg, mettez a jours le cache des paquets puis installez les paquets tor
et deb.torproject.org-keyring
echo 'deb http://deb.torproject.org/torproject.org jessie main' > /etc/apt/sources.list.d/torproject.list
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
apt-get update
apt-get install tor deb.torproject.org-keyring
Pour les autres distributions linux, ou/et si cela ne fonctionne pas chez vous, référez vous a la documentation officielle : https://www.torproject.org/download/download-unix.html.en
Une fois tor installé, il suffit d’éditer le fichier /etc/tor/torrc
, décommentez les lignes suivantes :
DataDirectory /var/lib/tor
...
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
Ce qui compte c’est la ligne HiddenServicePort, choissisez un port qui fera le lien avec votre neoud dunuiter, par exemple 20900 :
HiddenServicePort 80 127.0.0.1:20900
Enregistrez les modifications, puis rechargez la config de tor : service tor reload
Tor viens de vous générer votre domaine .onion dans le fichier /var/lib/tor/hidden_service/hostname
$ cat /var/lib/tor/hidden_service/hostname
3asufnydqmup533h.onion
Ensuite configurez votre nœud duniter en conséquence :
duniter config --ws2p-public --ws2p-noupnp --ws2p-host 127.0.0.1 ws2p-port 20900 --ws2p-remote-host 3asufnydqmup533h.onion --ws2p-remote-port 80
Remplacez bien sur le remote host par votre .onion à vous, vous n’avez plus qu’a démarrer duniter et ça devrais fonctionner
Configurer BMATOR
Cela est désormais possible en mode BMA passif (c’est à dire sans crawler, c’est le mode par défaut).
Il vous suffit de configurer un remote host de type .onion et duniter se mettra automatiquement en mode BMATOR
Attention si vous activez le crawler bma, sachez que celui-ci communique en clair sur internet, si vous souhaitez que votre nœud communique exclusivement via tor il ne faut surtout l’activer !
(A moins bien sur de rediriger vous mêmes le trafic sortant en encapsulant duniter dans une VM, dans ce cas pensez a activer l’option --force-tor
).
Attention, l’étape de synchronisation (commande sync
) communique en clair sur internet, si vous souhaitez absolument garder l’emplacement de votre nœud secret il vous faudra rediriger manuellement la commande sync, ou faire la sync sur une autre machine puis transférer manuellement la backup de données sur la machine de votre nœud tor.
Vous pouvez donc déjà avoir un nœud full tor (sauf pour l’étape de synchronisation).