它们都使用了名为 "Server-map" 的表,但这背后的逻辑和目的截然不同。
核心概念一句话区分
-
NAT Server 的 Server-map:是一个 "静态的地址映射蓝图"。它预先告诉防火墙:"有一个固定的服务(IP:端口)映射关系在这里,允许外部主动发起连接。"
-
**SPF 的 Server-map:**是一个 "动态的临时通道许可证"。它临时告诉防火墙:"为了一个已存在的多通道协议会话(如FTP),请临时开放一个反向的数据通道或信令通道。"
它们都叫"Server-map",是因为它们都解决了同一个核心问题:如何让防火墙允许一个"由外向内"或"非首包"的流量通过。
详细对比分析
1. NAT Server 的 Server-map(静态映射表)
-
产生时机:在配置命令 nat server 生效的瞬间 立即生成,并一直存在于防火墙的运行配置中,直到该配置被删除。
-
产生原因:为了解决一个根本性矛盾。默认情况下,状态化防火墙只允许内网主动访问外网建立的会话通过。如果没有这条静态映射,外网用户根本无法主动发起对内网服务器的第一次访问(首包无会话,会被丢弃)。
-
表项内容:记录了预先定义好的、固定的转换关系。
-
例如:nat server global 202.100.1.100 8080 inside 192.168.1.100 80
-
生成的Server-map简化为:Any -> 202.100.1.100:8080 映射到 -> 192.168.1.100:80
-
-
作用:
-
1、开门指令:当外部首包到达时,防火墙先查Server-map表。匹配后,防火墙就知道:"哦,这个包是访问我 内部服务器的,我需要做目的NAT,并且允许它建立新会话。"
-
2、转换模板:为后续创建具体的会话(Session)提供转换依据。
-
-
本质:一个永久性的、基于策略的访问与转换授权。
2. ASPF 的 Server-map(动态通道表)
-
产生时机:在一个已存在的多通道协议会话过程中动态生成。例如,当内网用户通过FTP命令触发、或外网用户通过SIP协议发起呼叫时,在协议协商阶段动态创建。
-
产生原因:为了解决多通道协议(如FTP、SIP、H.323等)的兼容性问题。这些协议的控制通道和数据通道/信令通道是分离的。防火墙如果不做特殊处理,会把后续建立的数据通道报文当作"非法首包"而丢弃。
-
表项内容:记录了动态协商出来的、临时的通道信息,通常包含IP和端口。
-
例如,内网用户访问外网FTP服务器,在PORT命令后,ASPF会生成一个临时的Server-map:
服务器IP:任意端口 -> 内网客户端IP:数据端口,并指定协议。
-
-
作用:
-
1、临时开门条:告诉防火墙:"稍后会有一个从外网FTP服务器发往内网客户端某个端口的数据连接,这是合法的,请放行并为其建立会话。"
-
2、会话关联:将即将到来的数据通道报文与之前的控制通道会话关联起来。
-
-
本质:一个临时性的、基于应用层协议状态检测的智能放行规则。
一个经典的综合场景:外网用户访问内网的FTP服务器
这个场景能完美体现两者的协作。假设内网有FTP服务器 192.168.1.100,用NAT Server发布到公网 202.100.1.100。
第1步:外部用户发起控制连接(用到 NAT Server 的 Server-map)
-
外网用户连接 202.100.1.100:21。
-
首包到达防火墙,无会话匹配。
-
防火墙查找 NAT Server 的 Server-map,找到 202.100.1.100:21 -> 192.168.1.100:21 的映射。
-
根据此映射,执行目的NAT,创建控制通道的会话,允许连接建立。
第2步:用户请求下载文件,触发数据通道创建(用到 ASPF 的 Server-map)
-
用户发出 PORT 或 PASV 命令,协商数据通道端口。
-
防火墙的 ASPF(针对FTP协议已开启) 检测到这个应用层命令。
-
ASPF 动态生成一个临时的 Server-map。例如,如果是主动模式(PORT),表项可能意味着:"允许从外网用户的数据端口,发往转换后的服务器公网IP的某个端口"。
-
这个动态Server-map为即将到来的数据通道首包准备了"通行证"。
第3步:数据通道建立
-
当数据通道的首包(可能是服务器发给客户端的,也可能是反向的)到达防火墙时,它能匹配到 ASPF生成的动态Server-map。
-
凭此"通行证",防火墙允许该包通过,并为其创建一条独立的数据通道会话。
-
文件传输开始。
流程总结:
NAT Server 的 Server-map 解决了 "谁可以进来访问哪个固定服务" 的问题。
ASPF 的 Server-map 解决了 "为已允许的会话,临时开放哪些动态端口" 的问题。
两者一静一动,共同保障了复杂应用在NAT环境下的正常运行。

