虚拟系统和VPN实例的关系: 创建虚拟系统后,会自动创建同名VPN实例(虚拟系统是根据VPN实例生成的); 如果先创建VPN实例,则不能用于创建虚拟系统。
[FW1]vsys enable 开启虚拟系统功能
[FW1]vsys name admin123 创建虚拟系统
查看防火墙实例配置: 上图中创建虚拟系统admin123后,会自动创建一个同名的VPN实例admin123。 最后一个default的默认VPN实例是防火墙自有的,放在管理接口G0/0/0上,管理接口会默认加入安全区域。 ::: tip 虚拟系统底层转发依赖VPN实例,上层配置业务不依赖VPN实例。 ::: 虚拟系统具有和根系统一样的操作:
[USG6000V1]switch vsys ?
admin123 Vsys name
public Vsys name
如上,手工创建的VPN实例VPN_A没有虚拟系统。
[USG6000V1]switch vsys admin123
<USG6000V1-admin123>sys
Enter system view, return user view with Ctrl+Z.
[USG6000V1-admin123]
虚拟系统连续退出两次可以回到根系统。
NGFW(下一代防火墙)上有根系统与虚拟系统两种类型系统,根系统就是防火墙本身,虚拟系统是NGFW上划分出的独立运行的逻辑系统,是根系统通过配置得到的。 所有的资源都在根系统中(接口、VLAN等),虚拟系统的资源只能通过根系统进行分配。
管理员有根管理员和虚拟系统管理员两种,根管理员只能在分配系统资源时管理虚拟系统。
如上图,根系统和虚拟系统之间是共享式网络,可以不经过根系统直接进行互访。
::: tip 每一个虚拟系统都会存在一个Virtual-if接口,用来和其他系统直接相连。 Virtual-if口和物理接口具有相等的操作配置。 ::: 在配置虚拟系统时要指定ID,该ID值就是虚拟系统Virtual-if的编号,根系统的Virtual-if编号为0,如果不指定,则按照从小到大的顺序依次使用。
实验
[USG6000V1]vsys name VPN_A
[USG6000V1-vsys-VPN_A]assign interface GigabitEthernet 1/0/0 给虚拟系统分配接口资源
[USG6000V1]vsys name VPN_B
[USG6000V1-vsys-VPN_B]assign interface GigabitEthernet 1/0/1
[USG6000V1]vsys name VPN_C
[USG6000V1-vsys-VPN_C]assign interface GigabitEthernet 1/0/2
划分资源后相当于给接口做好VPN实例: ::: warning 只可以通过划分资源给接口做VPN实例,在接口上使用ip binding vpn-instance命令绑定VPN_B会出现报错: 原因是该VPN实例是虚拟系统自动创建的,不能当作手工配置的VPN实例使用。 :::
如上,A、B、C三个虚墙分别连接三台路由器,墙内为内网信任区域trust,外部为untrust区域,每一个虚墙都有独立的安全区域,物理接口在trust区域内,Virtual-if在untrust区域内,与根系统的Virtual-if 0直接相连。
[USG6000V1]int Virtual-if0
[USG6000V1-Virtual-if0]ip ad 10.1.123.254 32
进入虚拟系统VPN_A:
[USG6000V1]switch vsys VPN_A
[USG6000V1-VPN_A-GigabitEthernet1/0/0]ip ad 10.1.11.254 24
[USG6000V1-VPN_A-GigabitEthernet1/0/0]service-manage ping permit 物理接口放行ping
[USG6000V1-VPN_A]firewall zone trust
[USG6000V1-VPN_A-zone-trust]add interface GigabitEthernet 1/0/0 接口加入trust区域
[USG6000V1-VPN_A]firewall zone untrust
[USG6000V1-VPN_A-zone-untrust]add interface Virtual-if 1 虚接口连接其他系统,加入untrust区域
[USG6000V1-VPN_A-Virtual-if1]ip ad 10.1.123.1 24
[USG6000V1]switch vsys VPN_B
[USG6000V1-VPN_B-GigabitEthernet1/0/1]ip ad 10.1.12.254 24
[USG6000V1-VPN_B-GigabitEthernet1/0/1]service-manage ping permit
[USG6000V1-VPN_B]firewall zone trust
[USG6000V1-VPN_B-zone-trust]add interface GigabitEthernet 1/0/1
[USG6000V1-VPN_B]firewall zone untrust
[USG6000V1-VPN_B-zone-untrust]add interface Virtual-if 2
[USG6000V1-VPN_B-Virtual-if2]ip ad 10.1.123.2 24
[USG6000V1]switch vsys VPN_C
[USG6000V1-VPN_C-GigabitEthernet1/0/2]ip ad 10.1.13.254 24
[USG6000V1-VPN_C-GigabitEthernet1/0/2]service-manage ping permit
[USG6000V1-VPN_C]firewall zone trust
[USG6000V1-VPN_C-zone-trust]add interface GigabitEthernet 1/0/2
[USG6000V1-VPN_C]firewall zone untrust
[USG6000V1-VPN_C-zone-untrust]add interface Virtual-if 3
[USG6000V1-VPN_C-Virtual-if3]ip ad 10.1.123.3 24
虚墙的每一个安全区域添加了对应接口: 至此可以实现三台路由器访问各自所处虚墙的网关。
使用OSPF实现虚墙间通信:
路由器上建立环回口,宣告接口和环回口。 虚拟系统没有OSPF的命令,需要退回根系统:
和AR1的OSPF邻居:
[USG6000V1]ospf 1 router-id 10.10.10.10 vpn-instance VPN_A
[USG6000V1-ospf-1-area-0.0.0.0]network 10.1.11.254 0.0.0.0
和AR2的OSPF邻居:
[USG6000V1]ospf 2 router-id 10.10.10.10 vpn-instance VPN_B
[USG6000V1-ospf-2-area-0.0.0.0]network 10.1.12.254 0.0.0.0
和AR3的OSPF邻居:
[USG6000V1]ospf 3 router-id 10.10.10.10 vpn-instance VPN_C
[USG6000V1-ospf-3-area-0.0.0.0]network 10.1.13.254 0.0.0.0
::: tip 防火墙默认放行OSPF协议,如果OSPF邻居关系未能建立,针对每一个虚拟系统使用防火墙策略放行OSPF: 上述策略的方向分析: 虚拟系统的IN方向是从trust区域接收信息,到虚拟系统的local接口,OUT方向是从虚拟系统的local接口出去,发送到trust区域。 ::: 如上,虚拟系统VPN_A路由表中没有其他系统的路由,只有虚接口的路由。 ::: tip 设备通过虚拟接口通信时可以不在同一个网段,不需要静态路由。 ::: 静态引入后在实例A中出现其他系统的路由,出接口是Virtual-if1:
此时A、B两台虚拟防火墙实现通信。 ::: warning 虚墙之间访问不需要通过根墙,根墙下直接指定下一个VPN实例,不指定下一个VPN实例的接口。
[USG6000V1]ip route-static vpn-instance VPN_A 2.2.2.2 255.255.255.255 vpn-instance VPN_B
[USG6000V1]ip route-static vpn-instance VPN_B 1.1.1.1 255.255.255.255 vpn-instance VPN_A
:::
防火墙策略:
::: tip 路径分析:AR1到AR2的流量,先从虚墙A的trust区域到untrust区域,到达虚墙B上时,再从虚墙B的untrust区域到trust区域。 ::: 策略放行AR1访问AR2:
策略穿越虚墙A:
[USG6000V1-VPN_A]security-policy
[USG6000V1-VPN_A-policy-security]rule name AR1_AR2
[USG6000V1-VPN_A-policy-security-rule-AR1_AR2]source-zone trust
[USG6000V1-VPN_A-policy-security-rule-AR1_AR2]destination-zone untrust
[USG6000V1-VPN_A-policy-security-rule-AR1_AR2]source-address 1.1.1.1 32
[USG6000V1-VPN_A-policy-security-rule-AR1_AR2]destination-address 2.2.2.2 32
[USG6000V1-VPN_A-policy-security-rule-AR1_AR2]action permit
策略穿越虚墙B:
[USG6000V1-VPN_B]security-policy
[USG6000V1-VPN_B-policy-security]rule name AR1_AR2
[USG6000V1-VPN_B-policy-security-rule-AR1_AR2]source-zone untrust
[USG6000V1-VPN_B-policy-security-rule-AR1_AR2]destination-zone trust
[USG6000V1-VPN_B-policy-security-rule-AR1_AR2]source-address 1.1.1.1 32
[USG6000V1-VPN_B-policy-security-rule-AR1_AR2]destination-address 2.2.2.2 32
[USG6000V1-VPN_B-policy-security-rule-AR1_AR2]action permit
如上,策略AR1_AR2生效。
[AR1]ip route-static 2.2.2.2 32 10.1.11.254
[AR2]ip route-static 1.1.1.1 32 10.1.12.254
上述AR1可以ping通AR2,AR2由于没有做策略穿越虚墙A、B,无法ping通AR1。
整体配置思路:
上述配置下,路由器AR1访问AR2通信直接从虚墙转发,如果要求从根墙做转发,需要做相应配置修改。 此时根墙下路由表:
如上,防火墙会把VPN实例自动对应Virtual-if接口(1.1.1.1/32在VPN实例A中,对应Virtual-if1接口,2.2.2.2/32在VPN实例B中,对应Virtual-if2接口)。
数据到达虚墙后,原有配置是直接从虚墙A转发到虚墙B:
[USG6000V1]ip route-static vpn-instance VPN_A 2.2.2.2 32 vpn-instance VPN_B
[USG6000V1]ip route-static vpn-instance VPN_B 1.1.1.1 32 vpn-instance VPN_A
修改:
虚墙A发往根墙:
[USG6000V1-VPN_A]ip route-static 2.2.2.2 32 public
[USG6000V1-VPN_B]ip route-static 1.1.1.1 32 public
根墙转发到虚墙B:
[USG6000V1]ip route-static 1.1.1.1 32 vpn-instance VPN_A
[USG6000V1]ip route-static 2.2.2.2 32 vpn-instance VPN_B
::: warning
根墙没有划分安全区域,可以将Virtual-if0加入到任何一个区域,也可以不加入区域。
:::
如果在根墙配置策略,无法影响路由器通信,原因是根管理员只负责根墙的业务,不能管理虚墙的业务。
虚墙内网络连接外网
1. 虚墙通过根墙连接外网(AR1-PC1)
[USG6000V1-GigabitEthernet1/0/3]ip ad 100.1.1.254 24
[USG6000V1-GigabitEthernet1/0/3]service-manage ping permit
[USG6000V1-zone-untrust]add interface GigabitEthernet 1/0/3 外网一般为untrust区域
路由器没有路由去往外网:
[AR1]ip route-static 0.0.0.0 0 10.1.11.254 路由器使用缺省路由指向外网(通过Virtual-if1发出)
虚墙A没有路由去往外网:
[USG6000V1-VPN_A]ip route-static 0.0.0.0 0 public 虚墙A内使用缺省路由指向根墙接口Virtual-if 0
接口加入安全区域:
[USG6000V1-zone-trust]add interface Virtual-if 0
[USG6000V1-zone-untrust]add interface GigabitEthernet1/0/3
放行策略:
(去往外网时没有具体路由,destination-address可以不写 )
[USG6000V1-VPN_A-policy-security]rule name AR1_Internet
[USG6000V1-VPN_A-policy-security-rule-AR1_Internet]source-zone trust
[USG6000V1-VPN_A-policy-security-rule-AR1_Internet]destination-zone untrust
[USG6000V1-VPN_A-policy-security-rule-AR1_Internet]source-address 1.1.1.1 32
[USG6000V1-VPN_A-policy-security-rule-AR1_Internet]action permit
[USG6000V1-policy-security]rule name Trust_Untrust
[USG6000V1-policy-security-rule-Trust_Untrust]source-zone trust
[USG6000V1-policy-security-rule-Trust_Untrust]destination-zone untrust
[USG6000V1-policy-security-rule-Trust_Untrust]source-address 1.1.1.1 32
::: tip 路径分析:AR1到PC1的流量,先从AR1(G0/0/0)发送到虚墙A(G1/0/0),虚墙A的Virtual-if1(untrust区域)到根墙的Virtual-if0(trust区域),再从根墙的G1/0/3(untrust区域)发送到public区域。 如上,VPN_A转发到根墙为trust->untrust (相对于VPN_A内部根墙为untrust区域),根墙再转发到public,为trust-->untrust。 :::
2. 虚墙自连接外网(AR2-PC2)
[USG6000V1]vsys name VPN_B
[USG6000V1-vsys-VPN_B]assign interface GigabitEthernet 1/0/4 将连接外网的接口划分给VPN_B
[USG6000V1]switch vsys VPN_B
[USG6000V1-VPN_B]firewall zone untrust
[USG6000V1-VPN_B-zone-untrust]add interface GigabitEthernet 1/0/4 连接外网接口接入untrust
[USG6000V1-VPN_B-GigabitEthernet1/0/4]ip ad 200.1.1.254 24
[USG6000V1-VPN_B-GigabitEthernet1/0/4]service-manage ping permit
[USG6000V1-VPN_B-policy-security]rulev name AR2_Internet
[USG6000V1-VPN_B-policy-security-rule-AR2_Internet]source-zone trust
[USG6000V1-VPN_B-policy-security-rule-AR2_Internet]destination-zone
[USG6000V1-VPN_B-policy-security-rule-AR2_Internet]destination-zone untrust
[USG6000V1-VPN_B-policy-security-rule-AR2_Internet]source-address 2.2.2.2 32
[USG6000V1-VPN_B-policy-security-rule-AR2_Internet]action permit
路由器没有路由去往外网:
[AR2]ip route-static 0.0.0.0 0 10.1.12.25 路由器使用缺省路由指向外网(通过Virtual-if2发出)