Onionpipe - Créez des tunnels réseau virtuels inarrêtables
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