1、前置知识:
1.1 GRE
General Routing Encapsulation,简称GRE,是一种三层VPN封装技术。GRE可以对某些网络层协议(如IPX、Apple Talk、IP等)的报文进行封装,使封装后的报文能够在另一种网络中(如IPv4)传输,从而解决了跨越异种网络的报文传输问题。异种报文传输的通道称为Tunnel(隧道)。
GRE主要有以下特点:
1、机制简单,无需维持状态,对隧道两端设备的CPU负担小;
2、本身不提供数据的加密,如果需要加密,可以与IPSec结合使用;
3、不提供流量控制和QoS;
1.2 GRE在防火墙内部运行原理
从原始报文进入GRE隧道开始,到GRE报文被FW转出,这个过程报文跨越了两个域间关系。由此可以将GRE报文所经过的安全域看成两个部分,一个是原始报文进入GRE隧道前所经过的安全域,一个是报文经过GRE封装后经过的安全域,如下图所示。假设FW_A和FW_B上GE1/0/1接口连接私网,属于Trust区域;GE1/0/2接口连接Internet,属于Untrust区域;Tunnel接口属于DMZ区域。
PC_A发出的原始报文进入Tunnel接口这个过程中,报文经过的安全域间是Trust—>DMZ;原始报文被GRE封装后,FW_A在转发这个报文时,报文经过的安全域间是Local—>Untrust。
在下图中,当FW_A发出的GRE报文到达FW_B时,FW_B会进行解封装。在此过程中,报文经过的安全域间是Untrust—>Local;GRE报文被解封装后,FW_B在转发原始报文时,报文经过的安全域间是DMZ—>Trust。
由上可知,在GRE中报文所经过的安全域间与Tunnel接口所在的安全域有关联。以上图为例,介绍PC_A通过GRE隧道访问PC_B时,FW_A和FW_B上配置的安全策略如下表所示。
2、实验:
2.1 实验拓扑
2.2 实验步骤
1、进入防火墙配置各个端口ip;
2、将各个端口加入对应安全区域;
3、配置静态路由;
4、配置tunnel信息(将tunnel-protocol设置为gre),随后将该tunnel虚拟端口加入对应安全区域;
5、配置更加详细的安全策略;
2.3 实验代码
//配置端口IP
[fw1]int g1/0/0
[fw1-GigabitEthernet1/0/0]ip add
[fw1-GigabitEthernet1/0/0]ip address 172.16.1.254 24
[fw1-GigabitEthernet1/0/0]int g1/0/1
[fw1-GigabitEthernet1/0/1]ip add
[fw1-GigabitEthernet1/0/1]ip address 1.1.1.1 24
[fw1-GigabitEthernet1/0/1]service-manage ping permit //暂时开放该端口ping服务
//将各个端口加入对应安全区域
[fw1]firewall zone trust
[fw1-zone-trust]add interface g1/0/0
[fw1]firewall zone untrust
[fw1-zone-untrust]add interface g1/0/1
[fw1]security-policy
[fw1-policy-security]default action permit //暂时将default关闭以防止ping不通
//配置静态路由
[fw1]ip route-static 0.0.0.0 0 1.1.1.254
[fw1]ip route-static 192.168.1.0 24 Tunnel 0
//进行tunnel信息配置
[fw1]int Tunnel 0
[fw1-Tunnel0]ip address 66.66.66.66 32
[fw1-Tunnel0]tunnel-protocol gre
[fw1-Tunnel0]source g1/0/1
[fw1-Tunnel0]destination 2.2.2.1
//将该虚拟tunnel端口加入dmz安全区域
[fw1]firewall zone dmz
[fw1-zone-dmz]add interface Tunnel 0
//开启default策略后,配置详细的安全策略
security-policy
rule name gre_inner
source-zone dmz
source-zone trust
destination-zone dmz
destination-zone trust
action permit
rule name after_gre
source-zone local
source-zone untrust
destination-zone local
destination-zone untrust
service gre
action permit
2.4 注意事项:
1、在配置tunnel0虚拟接口是,不要忘记配置“tunnel-protocol gre”这条命令;
2、在配置精细安全策略是,不要忘记配置“service gre”这条命令;