ALG(应用层网关)技术在NAT场景中能够自动检测并处理某些报文的应用层信息。这一功能不仅可以放开相应的访问规则,生成Server-map表,而且还能自动转换报文载荷中的IP地址和端口信息。在大多数情况下,NAT仅转换报文头部的IP地址及TCP/UDP的端口信息,而无法处理应用层的数据。但在许多特殊应用层协议(如FTP协议)中,报文载荷中也包含地址或端口信息,这些信息通常由通信双方动态协商生成。如果这些深层数据不进行转换,可能导致通信中断或异常。
以FTP协议为例,想象一下这样一个场景:防火墙作为出口NAT设备,位于私网的FTP Client和位于公网的FTP Server之间需要通过防火墙进行通信。当FTP协议的数据包经过NAT设备时,如果没有启用ALG功能,仅依靠NAT转换报文头部的信息是不够的。FTP Client发送给服务器的PORT命令报文中包含的私网地址及端口信息,在公网中是无法识别的,导致FTP数据连接建立失败。
为了解决这一问题,我们启用ALG功能。启用后,防火墙除了转换报文头中的IP地址和端口信息,还能解析并转换报文载荷里的IP地址和端口信息。这样,即使报文载荷中的地址或端口是由通信双方动态协商生成的,也能保证地址转换的顺利进行,不影响多通道协议的正常使用。
以下是一个实验说明:
1. 防火墙的接口IP、安全区域、ISP接口、客户端及服务器IP均按照图示进行配置。
2. 在FW1上进行源NAT转换,使用easy-ip方式将私网地址转换为公网接口地址100.1.1.1。
3. 配置安全策略,允许来自信任区域的FTP协议数据包进入不信任区域。
4. 默认情况下,防火墙已经为FTP协议开启了ALG功能。为了测试效果,我们在全局模式下关闭了FTP的ALG功能。之后发现在NAT的G1/0/1接口抓包时,FTP Client以主动模式访问FTP Server时会出现问题。具体来说,当客户端与服务器建立控制连接后,客户端发送的PORT命令报文中包含私网地址及端口,服务器收到报文后尝试向私网地址发起数据连接请求,导致连接失败。
5. 为了解决这个问题,我们重新启用NAT ALG功能。启用后,防火墙能够转换报文载荷中的IP地址信息,使得FTP Client发送的PORT报文中携带的私网IP地址转换为公网IP地址。这样,服务器就能正确地向公网IP发起数据连接建立请求了。
值得注意的是,我们在启用ALG功能时使用的命令与启用ASPF功能的命令相似。ASPF功能旨在识别多通道协议并为其跳过安全策略检查,而ALG功能则专注于识别并转换报文载荷中的IP地址和端口信息。在实际应用中,我们可以根据场景选择开启哪种功能。在NAT场景下使用ALG,而在非NAT场景中则使用ASPF。这样一来,我们就能确保网络通信的顺畅进行。