rapiz1 / rathole

A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.
Apache License 2.0
9.8k stars 488 forks source link

可不可以同一台服务器是发送端又是接收端 #189

Closed shijunti19 closed 2 years ago

shijunti19 commented 2 years ago

A2是封闭坏境的一台服务器(A2),他有个软件设置了80端口 A是封闭环境的另外一台服务器(A1),他可以链接A2的80,然后我们需要链接到C这个外网服务器 C是外网服务器,我们对接外网用户,把数据传到A服务器进行保存 B链接A和C的中间坏境,封闭坏境不允许直连C所以通过B

现在A的80端口转发到B的2333端口 然后B的2333端口转发到C的2334端口 现在B需要运行2个cmd有点麻烦 A已经运行rathole 的发送端 C也运行了rathole 的接收端 但是B可不可以实现只需要一个命令实现接收和发送(我个人觉得这种场景应该很多,软件配置也支持这种) 可不可以这样config.toml [client] remote_addr = "B:2334" [server] bind_addr = "0.0.0.0:2333"

然后运行 ./rathole config.toml,不要加client和server C可以正常接收到

rapiz1 commented 2 years ago

B可以主动连接到A吗?如果可以,B可以只写一个client,local_addr写A

---Original--- From: @.> Sent at: 2022年9月8日(Thu) Noon1:51 To: @.>; Cc: @.***>; Subject: [rapiz1/rathole] 可不可以同一台服务器是发送端又是接收端 (Issue #189)

A服务器是封闭环境 C是外网服务器 B链接A和C的中间坏境

现在A的80端口转发到B的2333端口 然后B的2333端口转发到C的2334端口 现在B需要运行2个cmd有点麻烦

可不可以这样config.toml [client] remote_addr = "B:2334" [server] bind_addr = "0.0.0.0:2333"

然后运行 ./rathole server.toml

C可以正常接收到

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

shijunti19 commented 2 years ago

@rapiz1 不能,A里的80端口也是其他封闭坏境的其他服务器。其实是4台服务器 我重新写下 A2是封闭坏境的一台服务器(A2),他有个软件设置了80端口 A是封闭环境的另外一台服务器(A1),他可以链接A2的80,然后我们需要链接到C这个外网服务器 C是外网服务器,我们对接外网用户,把数据传到A服务器进行保存 B链接A和C的中间坏境,封闭坏境不允许直连C所以通过B

这一个月就是搞这个,也只有你软件符合要求,他们封闭坏境必须要我们一层层的转发出去,之前用的代理软件,但是不知道为什么,没数据间隔一段时间他无法链接了,可能是代理的问题,需要不停的刷新才可以恢复,影响我传输数据了,因为数据不是每分每秒都有的,要客户保存了才有

现在的问题就是B需要开2个cmd,重启的时候如果让不懂的人操作,几乎无法讲清楚,所以问问可不可以合并成一个cmd运行

rapiz1 commented 2 years ago

你的使用场景比较复杂,需求是针对特定场景。但如果允许一个实例同时作为 server 和 client,可能会对一般的用户造成困惑,也会使架构上的概念变得模糊。因此我觉得不适合加入到软件本身的功能中。

但针对你的使用场景,为了方便运维,我觉得可以编写一个脚本来控制单节点上两个实例的启停。Linux 上通过 Bash 脚本很容易做到,我不太了解 Windows 的脚本能力,或许也可以使用 Python 调用 rathole 二进制。

cdsjsz commented 2 years ago

唔,其实我这边其实也有这样的需求🤣,目前靠糊了个bat解决

aa51513 commented 1 year ago

我这边也有这样的需求,可惜了,只能手动启动2个进程了