防火墙虚拟系统
虚拟系统(Virtual System)是在一台物理设备上划分出的多台相互独立的逻辑设备
从逻辑上将一台FW设备划分为多个虚拟系统。每个虚拟系统相当于一台真实的设备,有自己的接口、地址集、用户/组、路由表项以及策略,并可通过虚拟系统管理员进行配置和管理
通常大中型企业的网络为多地部署,设备数量众多,网络环境复杂。而且随着企业业务规模的不断增大,各业务部门的职能和权责划分也越来越清晰,每个部门都会有不同的安全需求。这些将导致防火墙的配置异常复杂,通过防火墙的虚拟化技术,可以在实现网络隔离的基础上,使得业务管理更加清晰和简便
FW上存在两种类型的虚拟系统:
-
根系统(public) 根系统是FW上缺省存在的一个特殊的虚拟系统。即使虚拟系统功能未启用,根系统也依然存在。管理员对FW进行配置等同于对根系统进行配置。启用虚拟系统功能后,根系统会继承先前FW上的配置,在虚拟系统这个特性中,根系统的作用是管理其他虚拟系统,并为虚拟系统间的通信提供服务
-
虚拟系统(VSYS) 虚拟系统是在FW上划分出来的、独立运行的逻辑设备
除了虚拟系统之外,FW还支持VPN实例,两者都有隔离的作用,虚拟系统的主要作用是业务隔离和路由隔离(静态路由),VPN实例的主要作用是路由隔离。没有实现虚拟化的功能需要使用VPN实例来配置多实例功能,如动态路由、组播等
VPN实例包括创建虚拟系统时自动生成的VPN实例(创建虚拟系统时会自动生成与虚拟系统同名的VPN实例),管理员手动创建的VPN实例
虚拟系统角色
-
根系统管理员 启用虚拟系统功能后,设备上已有的管理员将成为根系统的管理员,根系统管理员负责管理和维护设备、配置根系统的业务,只有具有虚拟系统管理权限的根系统管理员才可以进行虚拟系统相关的配置,如创建、删除虚拟系统,为虚拟系统分配资源等
-
虚拟系统管理员 创建虚拟系统后,根系统管理员可以为虚拟系统创建一个或多个管理员。虚拟系统管理员只能进入其所属的虚拟系统的配置界面,能配置和查看的业务也仅限于该虚拟系统;根系统管理员可以进入所有虚拟系统的配置界面,可以配置任何一个虚拟系统的业务。为了正确识别各个管理员所属的虚拟系统,虚拟系统管理员用户名格式统一为“管理员名@@虚拟系统名”
-
VLAN分配给某个虚拟系统后,就不能再分配给其他的虚拟系统;虚拟系统中配置源NAT、NAT Server或NAT64时,需要使用公网IP地址。此时,需要在根系统下使用assign global-ip命令为虚拟系统分配公网IP地址
带宽限制
入方向(inbound)流量:从公网接口流向私网接口的流量。受入方向带宽的限制
出方向(outbound)流量:从私网接口流向公网接口的流量。受出方向带宽的限制
整体(entire)流量:虚拟系统的全部流量 = 入方向流量 + 出方向流量 + 私网接口到私网接口的流量 + 公网接口到公网接口的流量。整体流量受整体带宽的限制
虚拟系统互访
虚拟系统与根系统互访
可以通过在虚拟系统与根系统间配置相关策略、路由等实现虚拟系统与根系统互访,报文在虚拟系统与根系统中都会按照防火墙转发流程进行处理,均需为接口添加安全区域
应用场景:虚拟系统下的企业内网用户通过根系统下的公网接口访问Internet
流量转发路程:
-
客户端向服务器发起连接
-
首包到达FW后,基于接口分流,被送入虚拟系统vsysa。vsysa按照防火墙转发流程对报文进行处理,包括匹配黑名单、查找路由、做NAT、匹配安全策略等等。如果vsysa不允许转发报文,则丢弃报文,流程结束;如果vsysa允许转发报文,则将报文送入根系统中处理。vsysa会为这条连接建立会话
-
根系统的虚拟接口Virtual-if0收到报文后,根系统按照防火墙转发流程对报文进行处理,包括匹配黑名单、查找路由、做NAT、匹配安全策略等等。如果根系统不允许转发报文,则丢弃报文,流程结束;如果根系统允许转发报文,则将报文发往服务器。根系统会为这条连接建立会话
-
报文经过路由转发后,到达目的服务器
虚拟系统访问根系统
项目 | 说明 | |
---|---|---|
虚拟系统 | 去程路由 | 到Internet的路由。因为报文要经过根系统发送到Internet,所以要配置虚拟系统到根系统的路由。虚拟系统到根系统的路由只能是静态路由。和一般的静态路由不同,这条静态路由不需要配置下一跳或者出接口,指定目的虚拟系统为根系统 [sysname] switch vsys vsysa <sysname-vsysa> system-view [sysname-vsysa] ip route-static 0.0.0.0 0.0.0.0 public |
回程路由 | 到内网的路由。可以是动态路由(如OSPF),也可以是静态路由 [sysname] switch vsys vsysa <sysname-vsysa> system-view 企业内网路由 x.x.x.x G1/0/2 | |
根系统 | 去程路由 | 到Internet的路由。可以是动态路由(如OSPF),也可以是静态路由 |
回程路由 | 根系统中不需要针对服务器回应的报文配置回程路由。服务器回应的报文在根系统中匹配会话表后,直接发送到虚拟系统中处理 |
根系统访问虚拟系统
项目 | 说明 | |
---|---|---|
根系统 | 去程路由 | 到内网服务器的路由。因为报文要经过虚拟系统发送到服务器,所以要配置根系统到虚拟系统的路由。根系统到虚拟系统的路由只能是静态路由。和一般的静态路由不同,这条静态路由不需要配置下一跳或者出接口,而是要指定目的虚拟系统为服务器所在虚拟系统。图2中可以按如下方法配置。 [sysname] ip route-static 10.3.0.0 255.255.255.0 vpn-instance vsysa 说明:如果在根系统中配置NAT Server,根系统先将报文的目的地址由公网地址转换为私网地址,然后再查路由。在根系统中配置路由时,目的地址应配置为服务器的私网地址 如果在虚拟系统中配置NAT Server,根系统将报文转发给虚拟系统,虚拟系统将报文的目的地址由公网地址转换为私网地址。根系统中配置路由时,目的地址应配置为服务器的公网地址到Internet的路由 |
回程路由 | 可以是动态路由(如OSPF),也可以是静态路由 | |
虚拟系统 | 去程路由 | 到内网服务器的路由。可以是动态路由(如OSPF),也可以是静态路由 |
回程路由 | 虚拟系统中不需要针对服务器回应的报文配置回程路由。服务器回应的报文在虚拟系统中匹配会话表后,直接发送到根系统中处理 |
两个虚拟系统间互访
在标准模式下:可以通过在两个虚拟系统间配置相关策略、路由等实现两个虚拟系统间直接互访。同一报文最多只能进行两次转发流程处理,报文经过超过两个虚拟系统即会被丢弃
应用场景:配置不同虚拟系统的内部网络之间两两互访
还可以将根系统作为路由中转,实现两个虚拟系统跨根系统互访,报文同样只进行了两次转发流程处理,报文经过根系统时不走转发流程。此种方式需要分别配置各虚拟系统与根系统之间的策略、路由等信息
转发流程:
-
客户端向服务器发起连接
-
首包到达FW后,基于接口分流,被送入虚拟系统vsysa。vsysa按照防火墙转发流程对报文进行处理,包括匹配黑名单、查找路由、做NAT、匹配安全策略等等。如果vsysa不允许转发报文,则丢弃报文,流程结束;如果vsysa允许转发报文,则将报文送入vsysb中处理。同时,vsysa会为这条连接建立会话
-
vsysb的虚拟接口Virtual-if2收到报文后,vsysb按照防火墙转发流程对报文进行处理,包括匹配黑名单、查找路由、做NAT、匹配安全策略等等。如果vsysb不允许转发报文,则丢弃报文,流程结束;如果vsysb允许转发报文,则将报文发往服务器。同时,vsysb会为这条连接建立会话
-
报文经过路由转发后,到达目的服务器
两个虚拟系统都需要按照防火墙转发流程对报文进行处理,所以两个虚拟系统中要分别完成策略、路由等配置
项目 | 说明 | |
---|---|---|
vsysa | 去程路由 | 到服务器的路由。因为报文要经过vsysb发送到服务器,所以要配置vsysa到vsysb的路由。跨虚拟系统的路由只能是静态路由。和一般的静态路由不同,这条静态路由不需要配置下一跳或者出接口,而是要指定目的虚拟系统为服务器所在虚拟系统。 [sysname] ip route-static vpn-instance vsysa 10.3.1.3 255.255.255.255 vpn-instance vsysb |
回程路由 | 到客户端的路由。可以是动态路由(如OSPF),也可以是静态路由 | |
vsysb | 去程路由 | 到服务器的路由。可以是动态路由(如OSPF),也可以是静态路由 |
回程路由 | vsysb中不需要针对服务器回应的报文配置回程路由。服务器回应的报文在vsysb中匹配会话表后,直接发送到vsysa中处理 |
需做双向配置
在扩展模式下:在FW中创建一个配置为扩展模式的共享虚拟系统作为路由中转,实现两个虚拟系统跨共享虚拟系统互访,将FW配置为扩展模式,同一报文最多可以进行三次转发流程处理,报文从vsysa发出经过Shared-vsys转发到vsysb时不会被丢弃
配置此场景下的虚拟系统间互访之前,需要先在根系统的系统视图下执行命令firewall forward cross-vsys extended,配置虚拟系统的互访模式为扩展模式
-
网络A中的客户端向网络B中的服务器发起连接
-
首包到达FW后,基于接口分流,被送入虚拟系统vsysa。vsysa按照防火墙转发流程对报文进行处理,包括匹配黑名单、查找路由、做NAT、匹配安全策略等等。如果vsysa不允许转发报文,则丢弃报文,流程结束;如果vsysa允许转发报文,则将报文送入Shared-vsys中处理。同时,vsysa会为这条连接建立如下会话
-
Shared-vsys的虚拟接口Virtual-if3收到报文后,按照防火墙转发流程对报文进行处理。如果Shared-vsys不允许转发报文,则丢弃报文,流程结束;如果Shared-vsys允许转发报文,则将报文送入vsysb中处理。同时,Shared-vsys会为这条连接建立如下会话
-
vsysb的虚拟接口Virtual-if2收到报文后,按照防火墙转发流程对报文进行处理。如果vsysb不允许转发报文,则丢弃报文,流程结束;如果vsysb允许转发报文,则将报文发往服务器。同时,vsysb会为这条连接建立如下会话
-
报文经过路由转发后,最终到达目的服务器
项目 | 说明 | |
---|---|---|
vsysa | 去程路由 | 到Shared-vsys的路由。因为报文要经过vsysa转发到Shared-vsys,所以要配置vsysa到Shared-vsys的路由。跨虚拟系统的路由只能是静态路由。和一般的静态路由不同,这条静态路由不需要配置下一跳或者出接口,而是要指定目的虚拟系统为共享虚拟系统Shared-vsys。 [sysname] ip route-static vpn-instance vsysa 10.3.1.0 255.255.255.0 vpn-instance Shared_vsys |
回程路由 | 到客户端的路由。可以是动态路由(如OSPF) | |
vsysb | 去程路由 | 到服务器的路由。可以是动态路由(如OSPF),也可以是静态路由。 |
回程路由 | vsysb中不需要针对服务器回应的报文配置回程路由。服务器回应的报文在vsysb中匹配会话表后,直接发送到Shared-vsys中处理 | |
Shared-vsys | 去程路由 | 到vsysb的路由。因为报文要经过Shared-vsys转发到vsysb,所以要配置Shared-vsys到vsysb的路由。跨虚拟系统的路由只能是静态路由。和一般的静态路由不同,这条静态路由不需要配置下一跳或者出接口,而是要指定目的虚拟系统为vsysb。 [sysname] ip route-static vpn-instance Shared_vsys 10.3.1.0 255.255.255.0 vpn-instance vsysb |
回程路由 | Shared-vsys中不需要针对vsysb回应的报文配置回程路由。vsysb回应的报文在Shared-vsys中匹配会话表后,直接发送到vsysa中处理 |
虚拟系统和根系统跨另一虚拟系统互访的场景
虚拟接口
虚拟系统之间通过虚拟接口实现互访
虚拟接口是创建虚拟系统时系统自动为其创建的一个逻辑接口,作为虚拟系统自身与其他虚拟系统之间通信的接口。虚拟接口的链路层和协议层始终是UP的。虚拟接口必须配置IP地址,并加入安全区域,否则无法正常工作
虚拟接口名的格式为“Virtual-if+接口号”,根系统的虚拟接口名为Virtual-if0,其他虚拟系统的Virtual-if接口号从1开始,根据系统中接口号占用情况自动分配
引流表
在虚拟系统和根系统互访的场景中,虚拟系统和根系统都会按照防火墙转发流程对报文进行处理。针对互访的业务,虚拟系统和根系统都要配置策略、都会建立会话。增加了配置的复杂性,并且每条连接都需要两条会话,业务量大时,会造成整机的会话资源紧张。可配置引流表
引流表中记录的是IP地址和虚拟系统的归属关系
表示x.x.x.x这个IP地址属于虚拟系统vsysa
[sysname] firewall import-flow public x.x.x.x x.x.x.x vpn-instance vsysa
Warning: The destination of this IP range should be in this vsys network, otherwise it may cause flow loop! Continue?[Y/N]: Y
[sysname] display firewall import-flow public x.x.x.x
报文命中引流表时,根系统不再按照防火墙转发流程处理报文,而是按路由表或引流表直接转发报文。根系统中不需要为命中引流表的报文配置策略,根系统也不会为命中引流表的报文创建会话
报文命中引流表分为正向命中和反向命中:
-
正向命中:根系统发往虚拟系统的报文,目的地址匹配引流表中的“Destination Address”,则报文正向命中引流表。报文正向命中引流表时,根系统按引流表转发报文,将报文送入命中的表项对应的“Destination Instance”中处理
-
反向命中:虚拟系统发往根系统的报文,源地址匹配引流表中的“Destination Address”,源虚拟系统匹配引流表中的“Destination Instance”,则报文反向命中引流表。报文反向命中引流表时,根系统按路由表转发报文
FW只会在报文进入防火墙转发流程前判断报文是否命中引流表。报文经过防火墙转发流程处理后,即使IP地址等能匹配引流表,FW也不会判定该报文命中引流表
IPSec解封装后的报文的目的IP地址匹配了引流表中的“Destination Address”,但FW不会判定该报文命中引流表。根系统仍然按照防火墙转发流程对报文进行处理,部分场景中,根系统需要按照防火墙转发流程对报文进行处理,如做NAT、做IPSec封装等。此时,应避免报文命中引流表,否则会导致业务异常