对称 NAT 和 UDP 打洞

对称 NAT 和 UDP 打洞

我读了这个问题,但是对对称NAT的解释不够详细。

有人能帮助我理解以下段落吗?

我读过这篇文章对称 NAT

从同一内部 IP 地址和端口到特定目标 IP 地址和端口的每个请求都映射到唯一的外部源 IP 地址和端口,如果同一内部主机发送数据包,即使源地址和端口相同但目的地不同,也会使用不同的映射。只有从内部主机接收数据包的外部主机才能发送数据包。

http://en.wikipedia.org/wiki/Network_address_translation#Types_of_NAT

这是关于UDP 打洞

UDP 打洞不适用于对称 NAT 设备(也称为双向 NAT),这种设备通常存在于大型企业网络中。在对称 NAT 中,与知名 STUN 服务器连接相关的 NAT 映射仅限于接收来自知名服务器的数据,因此知名服务器看到的 NAT 映射对端点来说不是有用的信息。

http://en.wikipedia.org/wiki/UDP_hole_punching

但我并没有真正理解它。我感觉它告诉我(在客户端发起通信的客户端-服务器应用程序中),除非得到 NAT 设备的明确允许,否则服务器无法以另一种方式进行通信。我不明白它为什么这么说。如果可能的话,你能帮我稍微简化一下这个描述吗?

我们的环境中存在一个问题,即知名的远程支持工具无法被同样知名的软件供应商使用来为我们提供支持。客户端支持代理,但出于某种原因,它认为不使用它并通过端口 1153 上的 UDP 执行完全不同的操作可能是一个好主意。

答案1

从我们的聊天中...其他人可能无法获得完整的对话,但基本内容就在这里。

基本 NAT =source address:port >> external address:port >> NAT>> new source address:port >> external address port

对于对称 NAT,它是一个静态映射,并且每次对于源和目标都是相同的。

例子:192.168.100.5:34983 going to 4.2.2.2:53 then REQUIRE it to be 216.222.222.222:44444 with destination 8.8.8.8:333333

“在客户端-服务器应用程序中(客户端发起通信),除非得到 NAT 设备的明确允许,否则服务器无法以其他方式进行通信。”

你说的那部分不正确 应为:

在客户端-服务器应用程序中(客户端发起通信),在源通过会话中使用的端口建立会话之后,服务器可以以另一种方式进行通信。

意思是如果 2.2.2.2:43424 转到 5.5.5.5:80,那么一旦会话建立,5.5.5.5:80 就会将信息发送回 2.2.2.2:43424。用你的话来说...会话永远只是源与目的地的通信,目的地永远不会回复数据包/信息/图形/任何东西。

“我们的环境中存在一个问题,即知名的远程支持工具无法被同样知名的软件供应商使用来为我们提供支持。客户端支持代理,但出于某种原因,它认为最好不要使用它,而是通过端口 1153 上的 UDP 做一些完全不同的事情。”

这可能是因为他们只是在端口级别阻止了 Logmein/Teamviewer/其他程序,因为他们要求使用不同的端口……所以他们认为如果你允许或在 1153 上通信,它就会绕过他们自己的 IT 限制……这是我在不知道具体是什么应用程序或完整细节的情况下能想到的最好的方法。实际上与对称 NAT 或 UDP 漏洞无关……至少就他们提出的问题本身而言。

我建议与他们的支持团队讨论他们使用哪种远程支持工具,或者与他们合作确定使用您喜欢的工具的方法。如果这意味着某些端口 NATing/规则,那么您需要与他们和您的网络团队合作来解决这一问题。

希望对大家有帮助。

答案2

在此处输入图片描述

在此处输入图片描述

看看这些从维基百科“网络地址转换”页面截取的图片。

在“全锥型 NAT”中

  1. 一旦内部地址 (iAddr:iPort) 映射到外部地址 (eAddr:ePort),来自 iAddr:iPort 的任何数据包都会通过 eAddr:ePort 发送。
  2. 任何外部主机都可以通过向 eAddr:ePort 发送数据包来向 iAddr:iPort 发送数据包。

在对称 NAT 中

  1. 从相同的内部 IP 地址和端口到特定目标 IP 地址和端口的每个请求都映射到唯一的外部源 IP 地址和端口;如果相同的内部主机发送即使源地址和端口相同但目的地不同的数据包,也会使用不同的映射。
  2. 只有从内部主机接收数据包的外部主机才能发回数据包。

现在让我们讨论一下为什么 UDP 打洞在对称 NAT 中无法工作。假设 Server1 是 STUN 服务器,而 Server 2 是不同专用网络的 NAT 设备。在 UDP 打洞中,客户端与 Server1 连接,并在 NAT 设备上创建端口映射。但是当此客户端连接到 Server2 后面的主机时,NAT 设备会创建另一个端口映射,如图 2 所示。Server1 与 Server2 后面的主机共享客户端端口映射,并且通过此端口映射,Server2 无法建立连接,并且 Server2 不知道 NAT 设备创建的第二个端口映射。

相关内容