rtun ist ein Tool, um TCP- und UDP-Ports über einen öffentlichen Gateway-Server dem Internet zugänglich zu machen. Sie können SSH- und Mosh-Server auf einem Computer hinter Firewall und NAT verfügbar machen.
Kompilierte Binärdateien sind auf der Release-Seite verfügbar. Um Ihre eigenen zu erstellen, klonen Sie das Repository und erstellen Sie Folgendes:
$ git clone https://github.com/snsinfu/reverse-tunnel
$ cd reverse-tunnel
$ make
Oder,
$ go build -o rtun github.com/snsinfu/reverse-tunnel/agent/cmd
$ go build -o rtun-server github.com/snsinfu/reverse-tunnel/server/cmd
Docker-Images sind verfügbar:
Schnelle Nutzung:
$ 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
Siehe Docker-Image-Readme.
Erstellen Sie eine Konfigurationsdatei mit dem Namen 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]
Möglicherweise möchten Sie auth_key
mit openssl rand -hex 32
generieren. Agenten werden anhand ihrer Schlüssel identifiziert und dürfen nur die in der Konfigurationsdatei aufgeführten Whitelist-Ports verwenden.
Starten Sie dann den Gateway-Server:
$ ./rtun-server
Jetzt können Agenten eine Verbindung zum Gateway-Server herstellen und mit dem Reverse-Tunneling beginnen. Der Server und der Agent verwenden WebSocket für die Kommunikation, sodass der Gateway-Server möglicherweise hinter einem HTTPS-Reverse-Proxy wie Caddy platziert wird. Auf diese Weise kann der Tunnel durch TLS gesichert werden.
rtun-server
unterstützt den automatischen Erwerb und die Erneuerung von TLS-Zertifikaten. Stellen Sie die Steueradresse auf :443
und domain
auf den Domänennamen des öffentlichen Gateway-Servers ein.
control_address: :443
lets_encrypt:
domain: rtun.example.com
Nicht-Root-Benutzer können Port 443 standardmäßig nicht verwenden. Möglicherweise möchten Sie die Bindung rtun-server
an einen privilegierten Port mithilfe von setcap
unter Linux zulassen:
sudo setcap cap_net_bind_service=+ep rtun-server
Erstellen Sie eine Konfigurationsdatei mit dem Namen 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
Und führen Sie den Agenten aus:
$ ./rtun
Hinweis: Wenn Sie TLS auf dem Server verwenden, sollte die Gateway-URL mit wss://
statt mit ws://
beginnen. In diesem Fall sollte die Portnummer höchstwahrscheinlich die Standardeinstellung sein:
gateway_url : wss://the-gateway-server.example.com
MIT-Lizenz.