Onionpipe - Créez des tunnels réseau virtuels inarrêtables

Image illustrant l'article : Onionpipe - Créez des tunnels réseau virtuels inarrêtables

Onionpipe - Créez des tunnels réseau virtuels inarrêtables

par Korben -

Y’a un nouveau soft qui vient de sortir et qui va vous permettre de créer des tunnels réseau virtuellement inarrêtables, où que vous soyez dans le monde. Ça s’appelle onionpipe et ça utilise les adresses Onion de Tor pour faire transiter vos données de manière sécurisée et privée.

Imaginez un peu le truc : vous avez un service perso que vous voulez héberger chez vous mais votre FAI bloque les connexions entrantes ? Ou alors vous avez des clients qui sont derrière des pare-feu restrictifs type WiFi public ? Pas de souci, avec onionpipe votre service n’a pas besoin d’une IP publique pour être accessible ! Vous pouvez publier votre service avec une adresse onion unique et persistante, et donner l’accès de manière sécurisée seulement aux personnes de votre choix.

Le plus cool c’est que vous n’avez pas besoin de faire confiance et de filer vos données persos à des services payants type Tailscale ou ZeroTier. Avec onionpipe, vous gardez le contrôle total !

Concrètement, onionpipe c’est un peu comme socat mais pour les réseaux Tor. Ça met en place des tunnels de transfert de paquets pour faire des redirections de ports. Par exemple vous pouvez exposer le port local 8000 vers une adresse onion temporaire :

onionpipe 8000

Ou alors vers le port 80 d’une adresse onion temporaire en utilisant ~ comme raccourci :

onionpipe 8000~80

Vous pouvez même créer une adresse onion persistante avec un petit nom pour vous y retrouver :

onionpipe 8000~80@my-app

Et réutiliser ce nom dans plusieurs redirections pour faire référence à la même adresse onion. Tiens par exemple on pourrait monter un petit forum web pour un serveur Minecraft :

onionpipe 8000~80@minecraft 25565@minecraft

Toutes les redirections sans nom utilisent la même adresse onion temporaire :

onionpipe 192.168.1.100:8000~80,8080,9000 9090

Vous pouvez aussi exposer un socket Unix vers une adresse onion :

onionpipe /run/server.sock~80

Ou sacrifier un peu la confidentialité réseau contre une latence réduite en publiant un service onion non-anonyme :

onionpipe --anonymous=false 8000

Dans l’autre sens, vous pouvez rediriger le port 80 d’une adresse onion distante vers le port local 80 :

onionpipe xxx.onion:80

Ou vers le port 80 en écoute sur toutes les interfaces, pour exposer publiquement l’accès au service onion :

onionpipe xxx.onion:80~0.0.0.0:80

Pour aller plus loin dans la sécurisation de vos services persos, onionpipe gère aussi l’authentification client. En gros ça permet de n’autoriser l’accès qu’à une liste de clés publiques de votre choix.

Voilà comment ça marche :

Alice génère une nouvelle paire de clés d’authentification client

onionpipe client new alice

Puis Alice partage cette clé publique avec Bob, qui transmet un service en oignon qu’elle seule peut utiliser.

onionpipe --require-auth CLEPUBLIQUEALICE 8000~80@test

Alice utilise alors sa clé privée pour se connecter au service onion de Bob et le rediriger en local

onionpipe --auth alice ADRESSEONIONBOB:80~7000

Et voilà, un canal de communication privé et sécurisé entre Alice et Bob, sans passer par un serveur central 😉

Cerise sur le gâteau, ça s’intègre super facilement avec Docker ! Seule subtilité, comme c’est le conteneur qui fait la redirection, faut ajuster les adresses locales en conséquence. Pour rediriger le port 80 de l’hôte Docker :

docker run --rm ghcr.io/cmars/onionpipe:main host.docker.internal:80

Avec Podman vous pouvez carrément exposer le réseau de l’hôte local :

podman run --network=host --rm ghcr.io/cmars/onionpipe:main 8000

Et comme les adresses de redirection locales sont résolues par DNS, c’est ultra simple de publier des services onion depuis Docker Compose ou Kubernetes. Jetez un œil à cet exemple avec Nextcloud, c’est assez génial !

Merci à Lorenper