是否可以使用具有静态IP地址的服务器来代理每个NAT后面的两个客户端之间的直接连接?
我已经使用autossh和端口转发通过服务器build立连接,但我认为这意味着客户端之间的任何交互消耗服务器资源(转发数据包和带宽的计算开销)。 我无法testing自己,因为我目前无法访问其中一个客户端。
我想象中发生的事情 (我拥有A,B和服务器,所以无论客户端首先连接哪一个,都可以等到另一个连接):
client A -----> server <----- client B
我认为反向隧道方法是这样做的:
A sends packet -----> server, server receives packet, server sends packet -----> B, B receives packet
反之亦然。 我想要的是:
A connects -----> server (connection stays open until B connects) B connects -----> server (server tells B about A) A and B can communicate bidirectionally while the connection stays open
(如果有断开连接,A和B可以重复连接步骤)
我认为这一定是可能的(这不是P2P协议如何工作?),但我不知道如何设置。
我使用autossh和端口转发通过服务器build立连接,但我认为这意味着客户端之间的任何交互消耗服务器资源(转发数据包和带宽的计算开销)。
你是对的
Samy Kamkar提供了两个工具,允许NAT之后的两个主机相互通信, pwnat和chownat 。 如果您想使用这种方法来实现您的解决scheme,那么网站上有关于技巧/技巧的描述,或者您可以使用Samy发布的工具。
一般来说,当双方都同意他们想要沟通时, chownat用于A-B通信; 而pwnat是B不期望的A-> B通信。 你可以使用前者,如果他们在服务器上共享状态来同意何时打开chownat隧道; 或者使用pwnat而不需要服务器。