如果数据包被发送到已经活动的端口但来自不同的地址,NAT 通常会让数据包进入本地网络吗?

如果数据包被发送到已经活动的端口但来自不同的地址,NAT 通常会让数据包进入本地网络吗?

我是新手,所以如果这个问题很愚蠢,我很抱歉。如果是这样,请提示我从哪里开始阅读,以便我可以回答我自己的问题。

因此,我有两个客户端和一个服务器。两个客户端都与服务器建立连接。然后,服务器将两个客户端的完整地址(IP 和端口)发送给它们两个。现在,客户端开始侦听相同的端口,并开始向彼此的地址发送数据包。它们能够相互连接吗?

从我的角度来看,这个问题可以归结为 ISP 的 NAT 是否习惯于仅让数据包到达已知端口时才让其通过,即使该数据包来自一个全新的地址?

答案1

基本上不行。SNAT 只能单向传递连接,为了使两个客户端进行通信,其中一个客户端需要设置 DNAT 才能应答另一个客户端的呼叫。

查看 UPNP。

答案2

不,像您提出的这种简单方案行不通。NAT 存储远程地址、远程端口和本地(转换后的)端口,并且只会转换所有三个字段都匹配的数据包。

基本上,您所描述的技术通常被称为 NAT打孔

有特定的协议可以做到这一点;最常见的是STUN但是,一些软件包含洞穿透的自定义实现(tinc想到了 VPN)。

相关内容