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
$ makeOu,
$ 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/rtunVoir 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-serverLes 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:60000Et 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.