常见的 NAT 盒可以支持多少条 NAT 映射规则(即内部、私有 IP:PORT 和外部映射 IP:PORT 之间的映射)?
这样的数量是否有限制(即有多少条规则可以同时处于“活动”状态)?
答案1
有两个因素会影响单个设备的最大 NAT 映射数量:NAT 类型以及 NAT 表可用的内存量:
至于 NAT 的类型,让我们考虑一个全锥型 NAT,看看这会如何影响可能的映射数量:每个内部
ip:port
对都映射到一个外部ip:port
对。现在让我们假设 NAT 只有一个可用的外部 IP 地址,可能映射的最大数量受可能的外部端口数量的限制,即 2^16。至于 NAT 表可用的内存量,我们必须将 NAT 分为两类:“硬件”和“软件”NAT。我认为专用设备(如家用路由器或专业网络设备)是硬件 NAT,而运行通用操作系统和某些 NAT 软件的普通 PC 则是软件 NAT。
软件 NAT 显然受限于主机的内存量,而硬件 NAT 则内置了用于 NAT 映射的内存,除非您使用的是运营商级设备,否则通常无法扩展。此固定内存的大小构成了可同时保持活动的 NAT 映射数量的限制。对于典型的家用路由器设备,NAT 表大小在 2^10 到 2^14 个条目的范围内。
我认为这应该能让您很好地了解实际限制 NAT 映射的维度。显然,这个维度上还有其他各种因素,例如用户空间软件 NAT 的进程大小限制,或限制每个主机的最大映射数的策略等。
答案2
NAT 只是一种机制,它没有定义任何限制,任何限制都完全取决于实现。我怀疑是否有人能给出一个大概的平均值,因为有这么多的 NAT 实现。这个问题真的没有意义。
答案3
到目前为止,最好的答案在这个网页中: http://www.informit.com/articles/article.aspx?p=25273&seqNum=5:
理论上,NAT 表可以容纳的映射数量没有限制。实际上,内存和 CPU 或可用地址或端口的边界会限制条目数量。每个 NAT 映射使用大约 160 字节的内存。在极少数情况下,出于性能或策略原因必须限制条目,您可以使用 ip nat Translation max-entries 命令。