rtun adalah alat untuk mengekspos port TCP dan UDP ke Internet melalui server gateway publik. Anda dapat mengekspos server ssh dan mosh pada mesin di belakang firewall dan NAT.
Biner yang dikompilasi tersedia di halaman rilis. Untuk membuat repositori Anda sendiri, kloning repositori dan buat:
$ git clone https://github.com/snsinfu/reverse-tunnel
$ cd reverse-tunnel
$ make
Atau,
$ go build -o rtun github.com/snsinfu/reverse-tunnel/agent/cmd
$ go build -o rtun-server github.com/snsinfu/reverse-tunnel/server/cmd
Gambar Docker tersedia:
Penggunaan cepat:
$ 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
Lihat readme gambar buruh pelabuhan.
Buat file konfigurasi bernama 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]
Anda mungkin ingin membuat auth_key
dengan openssl rand -hex 32
. Agen diidentifikasi berdasarkan kuncinya dan agen hanya dapat menggunakan port yang masuk daftar putih yang tercantum dalam file konfigurasi.
Kemudian, mulai server gateway:
$ ./rtun-server
Sekarang agen dapat terhubung ke server gateway dan memulai penerowongan terbalik. Server dan agen menggunakan WebSocket untuk komunikasi, sehingga server gateway dapat ditempatkan di belakang proksi terbalik HTTPS seperti caddy. Dengan cara ini terowongan dapat diamankan dengan TLS.
rtun-server
mendukung akuisisi otomatis dan pembaruan sertifikat TLS. Tetapkan alamat kontrol ke :443
dan domain
ke nama domain server gateway publik.
control_address: :443
lets_encrypt:
domain: rtun.example.com
Pengguna non-root tidak dapat menggunakan port 443 secara default. Anda mungkin ingin mengizinkan rtun-server
mengikat ke port istimewa menggunakan setcap
di Linux:
sudo setcap cap_net_bind_service=+ep rtun-server
Buat file konfigurasi bernama 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
Dan jalankan agen:
$ ./rtun
Catatan: Saat Anda menggunakan TLS di server, URL gateway harus dimulai dengan wss://
alih-alih ws://
. Dalam hal ini, nomor port kemungkinan besar adalah nomor default:
gateway_url : wss://the-gateway-server.example.com
Lisensi MIT.