NAT 如何处理来自未知 IP 的传入 UDP 数据包

网络工程 纳特 UDP
2021-07-20 20:40:18

提前为相对菜鸟的问题道歉,如果这是题外话(我不确定......)

情况是我有一个 UDP 客户端和服务器绑定到同一个端口。

我对 NAT 的理解是,从客户端到特定端点的 UDP 数据包将导致临时进入 NAT 表,将源端口映射到目标端点。(这是正确的吗?)

这是否也意味着,如果一个未知的端点发起与我的服务器的 UDP 通信到 UDP 数据包将通过的同一端口?NAT 会阻止这种情况有什么原因吗?NAT 是否甚至会阻止/允许这些传入的数据包?

2个回答

通常的 NAT 通过为每对通信主机创建映射作为(协议、内部地址、内部端口、外部地址、外部端口)的 5 元组来工作。通常,该条目由第一个传出数据包添加到表中。

如果未知的外部主机发送一个 UDP 数据包,表中将没有它的条目,因此 NAT 设备通常会丢弃它,具体取决于其功能和配置。

这种NAT通常被称为“过载NAT”或“端口地址转换”,以区别于其他品种。一个很好的描述是http://www.ciscozine.com/nat-and-pat-a-complete-explanation/

如果您想在您的服务器上接受传入的数据包,您将需要在 NAT 设备上为该端口上的该服务器设置一个静态条目。实际上,这表示条目可以通过传入数据包添加到 NAT 表中。

详细信息取决于设备和软件。

正如 jonathanjo 指出的那样,一个 UDP NAPT 表条目将不仅仅包含一个 UDP 端口号(对于 NAPT,UDP、TCP 和 ICMP 有单独的表,UDP 端口 12345 与 TCP 端口 12345 不同,而 ICMP 没有'不使用端口而是使用查询 ID 而不是端口号)。

如果 NAPT 表条目中没有特定的外部 IP 地址,则 NAPT 设备将假定数据包的目的地是它自己,因为它是实际使用传入 IP 地址寻址的设备。如果 NAPT 设备本身没有打开 UDP 端口,它应该丢弃数据包,但这实际上取决于 NAPT 设备的操作系统及其配置方式。

这是 NAPT 不安全的一个重要原因。您也确实需要防火墙。防火墙将默认阻止所有源自外部的连接,从而保护 NAPT 设备本身。如果 NAPT 设备受到威胁,它可以完全访问内部网络,然后攻击者可以完全访问内部网络,即使它是私有寻址网络。