原理
防火墙主要实现了几个方面的虚拟化:
1、资源虚拟化:每个虚拟系统都有独享的资源,包括接口、VLAN、策略和会话等。根系统管理员分配给每个虚拟系统,由各个虚拟系统自行管理和使用。
2、配置虚拟化:每个虚拟系统都拥有独立的虚拟系统管理员和配置界面,每个虚拟系统管理员只能管理自己所属的虚拟系统。
3、安全功能虚拟化:每个虚拟系统都可以配置独立的安全策略及其他安全功能,只有属于该虚拟系统的报文才会受到这些配置的影响。
4、路由虚拟化:每个虚拟系统都拥有各自的路由表,相互独立隔离。目前仅支持静态路由的虚拟化。
通过以上几个方面的虚拟化,当创建虚拟系统之后,每个虚拟系统的管理员都像在使用一台独占的设备。
虚拟系统之间通过虚拟接口实现互访。
虚拟接口是创建虚拟系统时设备自动为其创建的一个逻辑接口,作为虚拟系统自身与其他虚拟系统之间通信的接口。
虚拟接口必须配置IP地址,并加入安全区域才能正常工作。
虚拟接口名的格式为"Virtual-if+接口号",根系统的虚拟接口名为Virtual-if0,其他虚拟系统的Virtual-if接口号从1开始,根据系统中接口号占用情况自动分配。
各个虚拟系统以及根系统的虚拟接口之间默认通过一条"虚拟链路"连接。如果将虚拟系统、根系统都视为独立的设备,将虚拟接口视为设备之间通信的接口,通过将虚拟接口加入安全区域并按照配置一般设备间互访的思路配置路由和策略,就能实现虚拟系统和根系统的互访、虚拟系统之间的互访。
路由转发过程图
以虚拟系统访问根系统为例。因为虚拟系统和根系统都需要按照防火墙转发流程对报文进行处理,所以虚拟系统和根系统中要分别完成策略、路由等配置。
FW的虚拟系统之间默认是互相隔离的,不同虚拟系统下的主机不能通信。如果两个虚拟系统下主机有通信的需求,就需要配置策略和路由,使不同虚拟系统能够互访。该场景是虚拟系统A向虚拟系统B发起访问。报文先进入虚拟系统A,虚拟系统A按照防火墙转发流程对报文进行处理。然后报文进入虚拟系统B,虚拟系统B再次按照防火墙转发流程对报文进行处理。
因为两个虚拟系统都需要按照防火墙转发流程对报文进行处理,所以两个虚拟系统中要分别完成策略、路由等配置。
结合第一张图FW的具体配置:
全局物理防火墙配置
vsys enable //开启虚拟防火培功能
vsys name a
assign interface GigabitEthernet1/0/0 // 把这个口划给虚拟系统a
vsys name b
assign interface GigabitEthernet1/0/1 // 把这个口划给虚拟系统b
interface GigabitEthernet1/0/2 //物理接口配置地址
ip address 30.0.0.1 255.255.255.0
interface Virtual-if 0
ip add 172.16.0.1 24 // 类似于把fw一分为三,然后三个拼接接口的地址
firewall zone trust
add interface Virtual-if 0 //分开的接口地方地址也得配上安全域
firewall zone untrust
add interface GigabitEthernet1/0/2
ip route-static 3.3.3.3 255.255.255.255 30.0.0.2
//FW去往r3的静态路由
security-policy //配置安全策略,看成一个物理防火墙的意思来配
rule name ab
source-zone trust //让虚拟系统a和b能出去到r3
destination-zone untrust
source-address 1.1.1.1 mask 255.255.255.255
source-address 2.2.2.2 mask 255.255.255.255
destination-address 3.3.3.3 mask 255.255.255.255
action permit
#配完虚拟系统A和B的所有配置后,再配置虚拟系统之间的路由。
ip route-static vpn-instance a 2.2.2.2 255.255.255.255 vpn-instance b
ip route-static vpn-instance b 1.1.1.1 255.255.255.255 vpn-instance a
虚拟系统a配置
switch vsys a
//进入虚拟防火墙b,以下配置全在这命令下面配
interface GigabitEthernet1/0/0
ip address 10.0.0.1 255.255.255.0
interface Virtual-if 1
ip address 172.16.0.2 255.255.255.0
// 类似于把fw一分为三,然后三个拼接接口的地址
firewall zone trust
add interface GigabitEthernet1/0/0
firewall zone untrust
add interface Virtual-if1
security-policy
rule name ab //虚拟系统a出去策略
source-zone trust
destination-zone untrust
source-address 1.1.1.1 mask 255.255.255.255
destination-address 2.2.2.2 mask 255.255.255.255
destination-address 3.3.3.3 mask 255.255.255.255
action permit
rule name ba //让虚拟系统b能主动访问进来自己
source-zone untrust
destination-zone trust
source-address 2.2.2.2 mask 255.255.255.255
destination-address 1.1.1.1 mask 255.255.255.255
action permit
ip route-static 1.1.1.1 255.255.255.255 10.0.0.2
//FW虚拟系统a去往r1的静态路由
ip route-static 3.3.3.3 255.255.255.255 public
//FW虚拟系统a去往r3的静态路由,连接r3的那个fw分出来的一块看成public
虚拟系统b配置(和a一样)
switch vsys b
interface GigabitEthernet1/0/1
ip address 20.0.0.1 255.255.255.0
interface Virtual-if 2
ip address 172.16.0.3 255.255.255.0
firewall zone trust
add interface GigabitEthernet1/0/1
firewall zone untrust
add interface Virtual-if 2
security-policy
rule name ba
source-zone trust
destination-zone untrust
source-address 2.2.2.2 mask 255.255.255.255
destination-address 1.1.1.1 mask 255.255.255.255
destination-address 3.3.3.3 mask 255.255.255.255
action permit
rule name ab
source-zone untrust
destination-zone trust
source-address 1.1.1.1 mask 255.255.255.255
destination-address 2.2.2.2 mask 255.255.255.255
action permit
ip route-static 2.2.2.2 255.255.255.255 20.0.0.2
ip route-static 3.3.3.3 255.255.255.255 public
R1-R2-R2只配置地址和静态路由就可以了,最终实现ping通
ping -a 1.1.1.1 3.3.3.3/2.2.2.2