三台机器的复杂端口转发

凶狠的小白免

三台计算机,
A在公网
B,C在不同的内网

问题:C如何连接B的22端口

理论:
首先C发起连接到A的8000端口,建立一个【C机器的第1个连接】

然后B发起连接到A的8000端口,连接后,找到C建立的连接,进行PIPE,

C发起连接到本地的22端口建立【C机器的第2个连接】,【C机器的第2个连接】和【C机器的第1个连接】进行PIPE

问题:
C机器不知道该何时去建立【C机器的第2个连接】,如何能知道B机器已经连接到了A机器,并且建立好了PIPE?

2640 2 1
2个回答

damao

如何能知道B机器已经连接到了A机器,并且建立好了PIPE?

这个B通过A给C发个消息通知下就好了吧

  • 暂无评论
maq

貌似原帖中有笔误,你的目标应该是【B 连接 C 的 22 端口】,对吧?

A 在收到 B 的连接请求后,应该通过【C机器的第1个连接】给 C 发送一个消息,C 收到这个消息,就知道该去建立【第 2 个连接】了,同时对【第 1 个连接】进行协议转换,改为与【第 2 个连接】进行双向转发。

BTW,A 应该监听两个不同的端口,一个接收来自服务提供方(C)的连接,一个接收来自消费方(B)的连接,你现在这样都在 8000 端口接收连接,A 很难区分出一个新来的连接的目的。

  • 暂无评论
年代过于久远,无法发表回答
🔝