rtun 은 공용 게이트웨이 서버를 통해 TCP 및 UDP 포트를 인터넷에 노출시키는 도구입니다. 방화벽과 NAT 뒤에 있는 시스템에 SSH 및 Mosh 서버를 노출할 수 있습니다.
컴파일된 바이너리는 릴리스 페이지에서 사용할 수 있습니다. 자신만의 저장소를 구축하려면 저장소를 복제하고 다음을 만드세요.
$ 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 이미지를 사용할 수 있습니다.
빠른 사용법:
$ 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]
openssl rand -hex 32
사용하여 auth_key
생성할 수 있습니다. 에이전트는 해당 키로 식별되며 에이전트는 구성 파일에 나열된 화이트리스트 포트만 사용할 수 있습니다.
그런 다음 게이트웨이 서버를 시작합니다.
$ ./rtun-server
이제 에이전트는 게이트웨이 서버에 연결하고 역방향 터널링을 시작할 수 있습니다. 서버와 에이전트는 통신을 위해 WebSocket을 사용하므로 게이트웨이 서버는 캐디와 같은 HTTPS 역방향 프록시 뒤에 배치될 수 있습니다. 이렇게 하면 TLS로 터널을 보호할 수 있습니다.
rtun-server
TLS 인증서 자동 획득 및 갱신을 지원합니다. 제어 주소를 :443
으로, domain
공용 게이트웨이 서버의 도메인 이름으로 설정합니다.
control_address: :443
lets_encrypt:
domain: rtun.example.com
루트가 아닌 사용자는 기본적으로 포트 443을 사용할 수 없습니다. Linux에서 setcap
사용하여 rtun-server
권한 있는 포트에 바인딩되도록 허용할 수 있습니다.
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
MIT 라이센스.