NAT 表条目决定「能同时有多少条连接做地址转换」。 而它与公网 IP 是乘法关系:一个 IP 约 6.4 万条。
上一节讲会话数,这一节讲它的「近亲」——NAT 表。 两者的关系是「NAT 表是会话表的子集」:只有需要转换的会话才占 NAT 表。
一、一个公网 IP 有多少条
端口空间 65536 个,减去 1024 以下的知名端口,约 6.4 万个可用。 这就是「一个公网 IP 能提供 6.4 万条 NAT 条目」的来历。
按内网规模算要几个公网 IP: 500 台 × 每台 50 条并发 = 2.5 万条 → 1 个 IP。 2000 台 × 100 条 = 20 万条 → 4 个 IP。 2 万台 × 50 条 = 100 万条 → 16 个 IP。
注意最后一行:两万台主机其实只要 16 个公网 IP, 因为 NAPT 是按「五元组」区分的,不是一个会话占一个端口。 这是 NAPT 相对「一对一 NAT」最大的优势。
二、真正的瓶颈是热门目的地
上面那个算法有个隐含前提:不同会话的目的地址和端口是分散的。
如果几千台主机同时访问「同一个服务器的同一个端口」, 那么「目的地址、目的端口、协议」这三项完全相同,能用来区分的只剩「源端口」一个维度——上限就是 6.4 万条。
这个场景并不罕见: 全公司早上九点同时打开同一个 OA 系统、同一个代理服务器、同一个视频会议服务,都会撞上这个上限。
所以 NAT 表的真实瓶颈,往往不是「主机数」,是「热门目的地」。 判断方法很简单:按目的地址统计 NAT 表条目,看有没有某一行占了绝大比例。
三、NAT 表与日志的关系
这里有一个容易忽略的合规问题:NAT 之后,服务器日志里记的全是「公网地址加端口」。 要追到具体是谁,必须有一张「某个时刻,这个端口对应哪个内网地址」的表。
所以 NAT 日志的保留要求往往比会话日志更长: 会话日志可以只留几天,NAT 映射日志通常要求留半年以上。
而 NAT 日志的量级不小: 每一次「新建映射」都要记一条,20 万条并发的网络一天可能产生上千万条记录。 这也是为什么很多单位宁可做「固定端口映射」而不做动态 NAT——固定映射不需要记流水账。
一句话总结: NAT 表不只是性能指标,它还是一份「地址翻译的账本」,而这份账本在追查事件时是不可替代的。
四、动手 Demo:NAT 表条目和公网 IP 的换算
这段按「一个公网 IP 约 6.4 万条」算三种规模各要几个 IP, 再说明「热门目的地」为什么会让这个换算失效。
for hosts, conc in ((500, 50), (2000, 100), (20000, 50)):
need = hosts * conc
ips = -(-need // 64000)
T([u"%s" % format(hosts, u","), u"%d" % conc,
u"%s" % format(need, u","), u"%d" % ips], [0, 0, 0, 0])
实跑输出:
--------------------------------------------------------------------
NAT 表条目和公网 IP 的换算
--------------------------------------------------------------------
**NAT 表条目数决定「能同时有多少条连接做地址转换」**,**而它与公网 IP 的数量是乘法关系。**
**一个公网 IP 能提供多少条 NAT 条目**:
端口空间 65536 个,其中 1024 以下留给知名服务,
再留一部分给「同一目的地址复用」的冲突,实际约 6.4 万个。
**算不同规模要多少公网 IP**:
内网主机 每台并发 总条目 公网 IP
---------------------------------------------------
500 50 25,000 1
2,000 100 200,000 4
20,000 50 1,000,000 16
**注意第三行**:两万台主机其实只要 16 个公网 IP,
**因为同一台主机的多条连接是「按五元组」区分的,不是一个会话占一个端口。**
**但这里有个陷阱**:
如果内网主机访问的是同一个服务器的同一个端口,
那么「源端口」就必须各不相同 → 一个目的端最多 6.4 万条。
两万台主机同时访问一个热门站点,就会卡在这个上限。
**所以 NAT 表的真正瓶颈,往往不是主机数,是「热门目的地」。**
「两万台只要 16 个 IP」这个结论会让人意外,但它正是 NAPT 的价值所在: 它把「每台一个地址」变成了「每几千条并发一个地址」。
注意「热门目的地」那段:它说明「平均数」在容量规划里是不可靠的, 要看的是「最热的那一个目的地占了多少」。 这也是为什么真实网络里,「上不了网」有时只影响「某个网站」。
最后那段 NAT 日志的合规问题最容易被忽视: 很多单位能做到「查得到谁上了网」,但做不到「查得到某个公网端口当时是谁」, 因为 NAT 映射日志没留。 这一条在做等保或审计时经常被提出来。
30 秒实验
- 查一下你单位出口有几个公网 IP。
- 看 NAT 表的条目按目的地址排,前三名各占多少。
- 想一想:如果要做「谁在什么时间访问了什么」,需要留哪些日志?
常见误区
- 以为一个公网 IP 只能带 254 台主机。NAPT 靠端口,能带几千台。
- 以为主机数决定 NAT 表大小。热门目的地才是真瓶颈。
- 以为 NAT 表只是性能指标。它还是追查事件时不可替代的账本。
自测三问(点开对答案)
1. 一个公网 IP 大约能提供多少条 NAT 条目?为什么? —— 约 6.4 万条,因为端口空间 65536 减去 1024 以下的知名端口。 2. 为什么「热门目的地」会成为 NAT 表的真瓶颈? —— 目的三元组相同时只能靠源端口区分,上限就是 6.4 万条。 3. 为什么 NAT 映射日志的保留要求比会话日志更长? —— 因为追查「某时刻某公网端口对应哪个内网地址」只能靠它。下一节:第三个数字——每秒能新建多少条会话。
- ☐ (本节完,下一节 05.08.03 每秒新建的会话数目)