rtun es una herramienta para exponer puertos TCP y UDP a Internet a través de un servidor de puerta de enlace público. Puede exponer el servidor ssh y mosh en una máquina detrás de un firewall y NAT.
Los binarios compilados están disponibles en la página de lanzamiento. Para crear los tuyos propios, clona el repositorio y haz:
$ git clone https://github.com/snsinfu/reverse-tunnel
$ cd reverse-tunnel
$ make
O,
$ go build -o rtun github.com/snsinfu/reverse-tunnel/agent/cmd
$ go build -o rtun-server github.com/snsinfu/reverse-tunnel/server/cmd
Las imágenes de Docker están disponibles:
Uso rápido:
$ 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
Consulte el archivo Léame de la imagen de la ventana acoplable.
Cree un archivo de configuración llamado 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]
Es posible que desee generar auth_key
con openssl rand -hex 32
. Los agentes se identifican por sus claves y los agentes solo pueden usar los puertos incluidos en la lista blanca que figuran en el archivo de configuración.
Luego, inicie el servidor de puerta de enlace:
$ ./rtun-server
Ahora los agentes pueden conectarse al servidor de puerta de enlace e iniciar el túnel inverso. El servidor y el agente utilizan WebSocket para comunicarse, por lo que el servidor de puerta de enlace puede colocarse detrás de un proxy inverso HTTPS como un caddy. De esta manera el túnel puede protegerse mediante TLS.
rtun-server
admite la adquisición y renovación automática de certificados TLS. Establezca la dirección de control en :443
y domain
en el nombre de dominio del servidor de puerta de enlace pública.
control_address: :443
lets_encrypt:
domain: rtun.example.com
El usuario no root no puede utilizar el puerto 443 de forma predeterminada. Probablemente quieras permitir el enlace rtun-server
al puerto privilegiado usando setcap
en Linux:
sudo setcap cap_net_bind_service=+ep rtun-server
Cree un archivo de configuración llamado 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
Y ejecute agente:
$ ./rtun
Nota: Cuando utiliza TLS en el servidor, la URL de la puerta de enlace debe comenzar con wss://
en lugar de ws://
. En este caso, lo más probable es que el número de puerto sea el predeterminado:
gateway_url : wss://the-gateway-server.example.com
Licencia MIT.