情景如下。我有两台机器A和B: A: 客户端(在NAT后面) B: 服务器(在NAT后面)
我希望B能够监听任何给定的端口,以便A可以通过该特定TCP端口向B发送数据包并接收任何响应。如果两台机器都不在NAT后面,则过程非常简单明了。但是,如果B在路由器后面,又如何使其正常工作,而无需更改路由器配置以启用某些端口转发等操作?
例如,点对点程序如BT客户端如何在用户没有进行任何配置的情况下工作?
情景如下。我有两台机器A和B: A: 客户端(在NAT后面) B: 服务器(在NAT后面)
我希望B能够监听任何给定的端口,以便A可以通过该特定TCP端口向B发送数据包并接收任何响应。如果两台机器都不在NAT后面,则过程非常简单明了。但是,如果B在路由器后面,又如何使其正常工作,而无需更改路由器配置以启用某些端口转发等操作?
例如,点对点程序如BT客户端如何在用户没有进行任何配置的情况下工作?
你需要执行以下操作之一:
从位于服务器前面的NAT网关设置端口转发到运行服务器软件的机器,并让客户端连接该网关的IP地址。
创建一个代理服务器,位于两个NAT网关之间,以便您的服务器和客户端都可以连接到该代理。您的服务器和客户端都必须建立与该代理的连接,该代理将在这两个连接之间进行数据中介。
代理服务器的替代方案是匹配服务器。匹配服务器不会代理所有流量,而只是协商直到对等方可以相互通信。这涉及查找对等方的外部公共IP并与每个对等方交谈,以便防火墙/路由器知道对等方希望通信。
这被称为穿透NAT,通常必须由匹配服务器而不是对等方自己完成。一旦打通了洞,匹配服务器就可以告诉对等方彼此的信息,他们可以直接通信。