众所周知,TCP是有状态的连接,状态检测的防火墙能根据该IP包所属的连接是新的还是旧的,决定该IP包是否符合防火墙的政策约定。因此,防火墙必须在内存中保留这一记录,每一个连接,就是一个会话。防火墙支持多少会话连接,取决于防火墙的内存多少,系统会自动使用所有内存,直至内存用光,系统崩溃为止。因此,许多防火墙都会设定一个会话连接最大值,一旦系统记录的会话达到这个数值,系统就不再建立新的会话。同时,为了保证防火墙的会话连接不会过多,防火墙提出的长连接和短连接的概念,针对不同的网络应用协议调整会话连接保持的时间。
一、防火墙长连接和短连接的概念
1、长连接的概念
长连接功能用于设置特定数据流的超长保持时间,让数据流的会话连接保持时间不受全局老化时间限制。其实这项特殊业务与目前业界的状态防火墙的实现机制是存在矛盾的。
为保证内部网络的安全,防火墙上的各会话缺省保持时间都相对较短,例如:缺省情况下,TCP的保持时间为1200s,UDP的保持时间为120s。
正常情况下,当一个TCP会话的两个连续报文到达防火墙的时间间隔大于该会话的保持时间时,为保证网络的安全性,防火墙将从会话表中删除相应会话信息。后续报文到达防火墙后,防火墙根据自身的转发机制,丢弃该报文,导致连接中断。在实际应用中,用户需要查询服务器上的数据,这些查询时间间隔远大于TCP/UDP默认的会话保持时间。此时需要在防火墙上保持TCP连接一段相对较长的时间。当某会话的报文长时间没有到达防火墙后再次到达时,仍然能够通过防火墙。这种技术就是长连接。
2、短连接的概念
某些应用频繁发起连接,如果不缩短其会话保持时间,则会使防火墙的会话数爆涨,进而拖垮防火墙。保持太多的会话对防火墙没有必要,相反,当系统资源过多地用在会话保持的话,会相应损害每秒生成会话的能力,这是一个同样重要的性能指标。设定过高的会话数量,却降低了每秒生成会话的能力,其结果,只能是保留一些永远用不到的会话虚数而已。
因此,我们可以根据网络应用环境的实际需求,缩短某些会话的保持时间,从而减少防火墙的工作负荷,提高网络性能。
二、防火墙长连接和短连接的配置方法
下面我们以华为Eudemon防火墙为例,介绍长连接和短连接的配置方法。
1、华为Eudemon防火墙中,配置长连接功能,需要进行如下操作。
1)执行命令system-view,进入系统视图。
2)执行命令acl 3000 ,创建高级ACL。
3)执行命令rule配置高级ACL规则,
例如:rule 0 permit ip source 192.168.1.12 0 destination 10.10.20.3 0
建议不要配置源地址或目的地址范围过大的ACL规则,以防影响防火墙的性能。本例中配置的是从192.168.1.12主机到10.10.20.3主机的数据流。
4)执行命令quit,退回系统视图。
5)执行命令firewall long-link aging-time ,配置长连接的老化时间。范围为1小时~480小时,缺省值为168小时。
例如:firewall long-link aging-time 10
6)执行命令firewall interzone [ vpn-instance vpn-instance-name ] zone-name1 zone-name2,进入安全域间视图。
例如:firewall interzone trust untrust
7)执行命令firewall long-link acl-number { inbound | outbound },配置长连接功能。
例如:firewall long-link 3000 inbound
2、华为Eudemon防火墙中,修改会话连接保存的时间,需要进行如下操作。
当防火墙缺省的会话连接保持的时间不能满足现有网络的需求时,可以进行如下操作,重新设置。
1)执行命令system-view,进入系统视图。
2)执行命令firewall session aging-time { dns\ftp\smtp\h323\udp\tcp....} interval,配置会话表老化时间。
可以根据以上各种协议调整会话连接保持的时间,时间取值范围为1秒~65535秒。
3)此外Eudemon防火墙还可以通过firewall session aging-time accelerate enable命令开启会话表项加速老化功能,用于避免在防火墙表项老化时间设置过长的情况下导致防火墙表项占满。