rtun est un outil permettant d'exposer les ports TCP et UDP à Internet via un serveur de passerelle publique. Vous pouvez exposer les serveurs ssh et mosh sur une machine derrière un pare-feu et un NAT.
Les binaires compilés sont disponibles sur la page de version. Pour créer les vôtres, clonez le référentiel et créez :
$ git clone https://github.com/snsinfu/reverse-tunnel
$ cd reverse-tunnel
$ make
Ou,
$ go build -o rtun github.com/snsinfu/reverse-tunnel/agent/cmd
$ go build -o rtun-server github.com/snsinfu/reverse-tunnel/server/cmd
Les images Docker sont disponibles :
Utilisation rapide :
$ docker run -it
-p 8080:8080 -p 9000:9000
-e RTUN_AGENT="8080/tcp @ samplebfeeb1356a458eabef49e7e7"
snsinfu/rtun-server
$ docker run -it --network host
-e RTUN_GATEWAY="ws://0.1.2.3:9000"
-e RTUN_KEY="samplebfeeb1356a458eabef49e7e7"
-e RTUN_FORWARD="8080/tcp:localhost:8080"
snsinfu/rtun
Voir le fichier Lisez-moi de l'image Docker.
Créez un fichier de configuration nommé rtun-server.yml
:
# Gateway server binds to this address to communicate with agents.
control_address : 0.0.0.0:9000
# List of authorized agents follows.
agents :
- auth_key : a79a4c3ae4ecd33b7c078631d3424137ff332d7897ecd6e9ddee28df138a0064
ports : [10022/tcp, 60000/udp]
Vous souhaiterez peut-être générer auth_key
avec openssl rand -hex 32
. Les agents sont identifiés par leurs clés et ils ne peuvent utiliser que les ports sur liste blanche répertoriés dans le fichier de configuration.
Ensuite, démarrez le serveur de passerelle :
$ ./rtun-server
Les agents peuvent désormais se connecter au serveur de passerelle et démarrer le tunneling inverse. Le serveur et l'agent utilisent WebSocket pour la communication, de sorte que le serveur de passerelle peut être placé derrière un proxy inverse HTTPS comme caddy. De cette façon, le tunnel peut être sécurisé par TLS.
rtun-server
prend en charge l'acquisition et le renouvellement automatiques du certificat TLS. Définissez l'adresse de contrôle sur :443
et domain
sur le nom de domaine du serveur de passerelle publique.
control_address: :443
lets_encrypt:
domain: rtun.example.com
L'utilisateur non root ne peut pas utiliser le port 443 par défaut. Vous souhaiterez probablement autoriser la liaison rtun-server
au port privilégié à l'aide setcap
sous Linux :
sudo setcap cap_net_bind_service=+ep rtun-server
Créez un fichier de configuration nommé rtun.yml
:
# Specify the gateway server.
gateway_url : ws://the-gateway-server.example.com:9000
# A key registered in the gateway server configuration file.
auth_key : a79a4c3ae4ecd33b7c078631d3424137ff332d7897ecd6e9ddee28df138a0064
forwards :
# Forward 10022/tcp on the gateway server to localhost:22 (tcp)
- port : 10022/tcp
destination : 127.0.0.1:22
# Forward 60000/udp on the gateway server to localhost:60000 (udp)
- port : 60000/udp
destination : 127.0.0.1:60000
Et exécutez l'agent :
$ ./rtun
Remarque : Lorsque vous utilisez TLS sur le serveur, l'URL de la passerelle doit commencer par wss://
au lieu de ws://
. Dans ce cas, le numéro de port devrait probablement être celui par défaut :
gateway_url : wss://the-gateway-server.example.com
Licence MIT.