Duniter sur un VPN

Ce fil a pour objet les paramétrages nécessaires à faire pour faire tourner un noeud Duniter membre derrière un réseau VPN (Virtual Private Network) ainsi que la possibilité pour Ğ1 de développer son propre VPN réservé aux noeuds Ğ1.

L’avantage du VPN est de passer outre tout paramétrage lié au FAI qui ne voit passer qu’un flux chiffré sur n’importe quel port sans pouvoir déchiffrer ce qui passe dans le flux.

1 J'aime

Typiquement j’utilise systématiquement un VPN pour surfer, mais mes nœuds passent en direct parce que le VPN que j’utilise change d’adresse IP souvent (ce qui est un peu le but d’un VPN aussi) et je n’ai pas pris le temps de faire de la config du genre no-ip.
La notion de VPN dédié aux nœuds est intéressante, mais dans ce cas il faudrait utiliser un VPN peer2peer pour éviter la centralisation (comme https://peervpn.net/ ). Mais au final si tout le monde se connecte en https, ça revient un peu au même en fait: le FAI ne voit passer qu’un flux chiffré qu’il ne peut décoder.
Sinon, il faut se mettre sur tor et transformer les nœuds en services tor (mais dans ce cas, plus moyen d’avoir un nœud en-dehors de tor ce qui centralise une dépendance sur tor du coup), et je ne pense pas que ce soit une bonne idée, même si j’en fais part ici…

1 J'aime

Enfin le FAI/Hebergeur en sortie de ton VPN pour lui c’est en clair.
Dans quel but désire tu un VPN?

La sortie du VPN est tout à fait en dehors de vue du FAI. Ca peut être au Panama ou en Sibérie.

La question porte sur le paramétrage à effectuer pour qu’un noeud Duniter tourne correctement via un VPN, la question n’est pas de susciter des tonnes de commentaires sans rapport…

Pourquoi pas un VPS directement au panama ou en Sibérie alors?
car il ne doit pas avoir beaucoup de fournisseur de VPN qui propose de la redirection de port en Listen.

Il y a pas mal d’assos de la FFDN qui proposent des VPN (pas encore Tetaneutral à Toulouse mais c’est à l’étude) ; ça reste en France mais au moins c’est un opérateur un peu plus de confiance selon moi qu’une grosse boîte qui ne pense qu’à filtrer ou au moins prioriser les flux pour son profit (coucou free vs. youtube en 2012).
Perso je ferai les tests avec ma brique dès que ça sera en place à tetaneutral.

1 J'aime

Je ne laisserais pas ma clé privée sur un VPS…

Quant au VPN après quelques minutes de réflexion, si tout le monde passe par un VPN différent, personne ne peut joindre d’autre nœud donc ça ne risque pas de fonctionner. Pour moi en terme de sécurité le https est déjà suffisant dans la mesure où tout ce que voit le FAI sont les adresses accédées et un flux crypté. Si on imagine de se créer un VPN spécialisé pour les nœuds, il ne verrait plus les adresses, c’est le seul avantage, mais dans ce cas ça veut dire que 100% des nœuds devraient être sur le VPN, avec le risque que sa centralisation représente.

Le problème reste qu’avec un VPN on peut sortir, mais pas rentrer (comment spécifier qui à l’intérieur du VPN rerouter les paquets?). Encore une fois, à moins d’avoir un VPN spécial « association duniter » avec réseau privé, mais je ne pense pas que ça soit souhaitable.

1 J'aime

Duniter a besoin d’un port d’écoute pour répondre au requêtes des clients (et l’échange des messages entre les nœud)
et je doute que beaucoup de VPN propose ce type de service.

Si tu le dis… Je me suis pas encore penché sur la question mais dans l’ensemble je ne suis pas forcément aussi pessimiste que toi sur la question avec un VPN associatif :wink:

on n’a pas forcement parlé de noeud calculateur de blocs.

Après simplement, si on désire avoir un noeud qui calcule des blocs à travers un VPS sans y placer sa clef, je propose un VPN maison en version très simple du type:

  • un reverse tunnel SSH en se connectant au VPS qui redirige le port d’écoute de duniter sur le pc local
  • un “sshuttle” pour faire sortir les requêtes du pc local à travers le VPS

Avec SSH on peut tout faire ! :slight_smile: et ici en seulement 2 lignes de commande :slight_smile:

Enfin je dis un VPS mais un simple shell Linux (non root) avec la possibilité d’ouvrir un port en listen est suffisant.
On en trouve pleins des gratuits: https://shells.red-pill.eu

Si ce fil finit par about à une fiche technique, j’ajouterai celle-ci au Wiki officiel qui est actuellement en construction.

1 J'aime

j’espère ne pas avoir trop épilogué avant de te proposer une solution, mais j’espère que tu auras compris qu’un VPN simple ne convient pas.

Alors voici une petite procédure pour du BMA simple
nécessitant aucune installation sur le VPS (ou shell linux simple)

Configuration Tunnel

Sur le pc local:

  • générer une clef ssh pour votre user
    cat /dev/zero | ssh-keygen -q -N ""

  • autoriser votre user a se connecter au vps par clef SSH
    ssh-copy-id <user_vps>@<host vps>

  • installer sshuttle
    apt-get install sshuttle

  • autoriser votre user à lancer sshuttle sans mot de passe sudo

    éditer le fichier/etc/sudoers et ajouter la ligne:
    <local username> ALL=(ALL) NOPASSWD: /usr/sbin/sshuttle

Sur le VPS:

  • générer une clef ssh pour votre user
    cat /dev/zero | ssh-keygen -q -N ''

  • autoriser votre user du vps à se connecter en ssh a lui-même par clef SSH
    ssh-copy-id localhost

Configuration Duniter

Sur le pc local:

  • faire écouter duniter en localhost (127.0.0.1 sur le port 10901)

  • dite a votre nœud duniter comment vous contacter:
    duniter config --addep "BASIC_MERKLED_API [<dns vps>] <ip VPS> 10901"

#Demarrage
Sur le pc local:

  • redirection de tout le trafic du pc local par le vps (ici excepté 192.168.0.0/24)
    sshuttle -D --dns -r <user_vps>@<host vps> -x 192.168.0.0/24 0/0

  • redirection du port 10901 du vps sur votre pc local
    nohup ssh -A -R 12345:localhost:10901 <user_vps>@<host vps> "ssh -N -g -L 10901:localhost:12345 localhost" &

  • on démarre duniter:
    duniter start

je vous avais dit, tout ça en seulement 2 lignes de commandes :yum:

1 J'aime

@Tortue ah je vois maintenant où tu voulais en venir avec ton VPS. Donc au niveau du FAI, il ne voit plus que du trafic HTTPS avec le VPS. Par contre le fournisseur de VPS, lui, voit tout le trafic avec le réseau duniter. On ne fait que déporter le problème (ce qui, je te l’accorde, peut parfois être utile). Jolie manip en tout cas!

plutôt du trafic SSL, et même il peut voir que c’est du SSH car hélas SSH par défaut a l’établissement de la connexion renvoie en clair avant avant la négociation SSL un truc du type: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 :unamused:

il est tout à fait possible de faire la même chose sur une connexion BMAS.
soit le SSL coté VPS avec un petit reverse proxy ou un simple stunnel
soit encore une fois le SSL coté pc local (mais la ça fait beaucoup de SSL imbriqué ^^)

après ici je n’ai proposé que la solution la plus simple et la plus rapide qui ne nécessite pas de compte root coté VPS
mais il y a plein de solution possible.
et la plus propre serait probablement 2 reverse proxy (ou un seul sur le VPS et une liaison stunnel entre le VPS et le pc local)
cela permettrait d’avoir des LOG et d’activer des limitations.
Car aujourd’hui toutes les limitations implémentées dans le nœud duniter ne fonctionne plus car il ne voit arrivé qu’une seule IP source (le localhost). ce qui est également le cas pour le BMAS car duniter ne le gère pas lui-même.

Mais tout cela n’a effectivement que peu d’intérêt, si ce n’est que de masquer à son FAI que l’on fait tourner un nœud duniter chez soi.
je préfère placer un nœud miroir sur un VPS dans un autre pays qui lui apportera une réel résilience réseau
par contre faire tourner un nœud dans le réseau TOR, me semble bien plus intéressant pour les utilisateurs de la monnaie.

2 J'aimes

Mais là je ne vois pas comment ça peut marcher, à moins comme je le disais au début de transformer tous les nœuds duniter en services Tor (avec le sérieux inconvénient de dépendre de Tor et non plus simplement d’internet). Parce que quand tu accèdes au web par Tor tu n’as aucune porte d’entrée de l’autre côté (ça annulerait tout d’un coup l’avantage de passer par Tor).

Rien ne t’empêche d’exploser le BMA sur le réseau Tor et sur Internet simultanément.

Mais même sans ça, cela fonctionnait quand même un peu près. Le nœud pourra retransmettre les données qu’il reçoit en piscine mais pas recevoir celles de l’extérieur du réseau Tor (sauf si il existe deja des nœuds qui écoute sur les 2 réseaux - voir point precedant) et il aura bien la blockchain à jour.

EDIT: Après effectivement je me dis que si tu te connecte à un nœud BMAS exposé sur internet depuis le réseau Tor ça revient un peu au même. (Pour la protection de l’utilisateur final)