rtun เป็นเครื่องมือสำหรับการเปิดเผยพอร์ต TCP และ UDP ไปยังอินเทอร์เน็ตผ่านเซิร์ฟเวอร์เกตเวย์สาธารณะ คุณสามารถเปิดเผยเซิร์ฟเวอร์ ssh และ mosh บนเครื่องที่อยู่ด้านหลังไฟร์วอลล์และ NAT
ไบนารีที่คอมไพล์แล้วมีอยู่ในหน้าเผยแพร่ หากต้องการสร้างของคุณเอง ให้โคลนพื้นที่เก็บข้อมูลและสร้าง:
$ git clone https://github.com/snsinfu/reverse-tunnel
$ cd reverse-tunnel
$ make
หรือ,
$ go build -o rtun github.com/snsinfu/reverse-tunnel/agent/cmd
$ go build -o rtun-server github.com/snsinfu/reverse-tunnel/server/cmd
มีอิมเมจนักเทียบท่า:
การใช้งานที่รวดเร็ว:
$ 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
ดูการอ่านอิมเมจนักเทียบท่า
สร้างไฟล์คอนฟิกูเรชันชื่อ 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]
คุณอาจต้องการสร้าง auth_key
ด้วย openssl rand -hex 32
เอเจนต์จะถูกระบุด้วยคีย์ และเอเจนต์อาจใช้พอร์ตที่อนุญาตพิเศษซึ่งแสดงอยู่ในไฟล์การกำหนดค่าเท่านั้น
จากนั้นเริ่มเซิร์ฟเวอร์เกตเวย์:
$ ./rtun-server
ขณะนี้ตัวแทนสามารถเชื่อมต่อกับเซิร์ฟเวอร์เกตเวย์และเริ่มการทำ Reverse Tunneling ได้ เซิร์ฟเวอร์และเอเจนต์ใช้ WebSocket เพื่อการสื่อสาร ดังนั้นเซิร์ฟเวอร์เกตเวย์อาจถูกวางไว้ด้านหลังพร็อกซีย้อนกลับ HTTPS เช่น แคดดี้ วิธีนี้ทำให้อุโมงค์สามารถรักษาความปลอดภัยด้วย TLS
rtun-server
รองรับการรับและต่ออายุใบรับรอง TLS โดยอัตโนมัติ ตั้งค่าที่อยู่ควบคุมเป็น :443
และ domain
เป็นชื่อโดเมนของเซิร์ฟเวอร์เกตเวย์สาธารณะ
control_address: :443
lets_encrypt:
domain: rtun.example.com
ผู้ใช้ที่ไม่ใช่รูทไม่สามารถใช้พอร์ต 443 เป็นค่าเริ่มต้นได้ คุณอาจต้องการอนุญาตให้ rtun-server
ผูกกับพอร์ตพิเศษโดยใช้ setcap
บน Linux:
sudo setcap cap_net_bind_service=+ep rtun-server
สร้างไฟล์คอนฟิกูเรชันชื่อ 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
และเรียกใช้ตัวแทน:
$ ./rtun
หมายเหตุ: เมื่อคุณใช้ TLS บนเซิร์ฟเวอร์ URL เกตเวย์ควรขึ้นต้นด้วย wss://
แทนที่จะเป็น ws://
ในกรณีนี้ หมายเลขพอร์ตควรเป็นค่าเริ่มต้น:
gateway_url : wss://the-gateway-server.example.com
ใบอนุญาตเอ็มไอที