当OSPF遇上防火墙

2019-09-19 16:32:43 阅读量:



前面两期给大家介绍了什么是安全策略,以及我们的UTM技术,也就是一体化的安全策略。这两个知识点都是讲解我们防火墙对穿越的业务流量的一个管控。如果抵达防火墙自身的流量,防火墙应该怎样放行?比如和防火墙之间建立VPN和防火墙之间建立动态路由协议等等。今天我们就邀请做客嘉宾OSPF闪亮登场。

让我们回顾下OSPF邻居状态机,如下图所示:

\

从图中我们可以看出OSPF有8种邻居状态机,各状态机含义如下:

\

大概复习下OSPF知识后,我们通过实验来证明下OSPF遇到防火墙会擦出怎样的火花,实验拓扑如下:

\

从实验拓扑中我们可以看出,防火墙和路由器之间来建议OSPF邻居,防火墙配置如下:

[NGFW]ospf1
[NGFW-ospf-1]area0
[NGFW-ospf-1-area-0.0.0.0]network202.100.1.0 0.0.0.255

当我们配置完成后可以在防火墙看到如下Log:

Jul 2 2017 05:34:00 NGFW%%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes event: neighbor status changed.(ProcessId=1, NeighborAddress=202.100.1.20, NeighborEvent=AdjOk?,NeighborPreviousState=2Way, NeighborCurrentState=ExStart)

在路由器上使用display ospf peer 命令查看OSPF 的邻接关系:
displayospf peer
         OSPF Process 1 with Router ID 202.100.1.20
                 Neighbors
 Area 0.0.0.0 interface202.100.1.20(GigabitEthernet0/0/0)'s neighbors
 Router ID: 202.100.1.10     Address: 202.100.1.10   
   State: ExStart  Mode:Nbr is Slave  Priority: 1
   DR:202.100.1.20  BDR: 202.100.1.10  MTU: 0   
   Dead timer due in 38  sec
   Retrans timer interval: 0
   Neighbor is up for 00:00:00    
   Authentication Sequence: [ 0 ]

在防火墙和路由器上看到的OSPF邻接状态都为ExStart,发现OSPF邻接关系没建立起来,因为防火墙和路由器之间没有成功交换DD(Database Description)报文。DD报文主要用来描述本端的LSDB,进行数据库的同步。在防火墙上我们可以通过display firewall statistic system discard命令查看丢包信息:

displayfirewall statistic system discard
 Discard statistic information:
   PACKET DEFAULT FILTER                       :216
   INVALID RECEIVE ZONE                        :10

上面的信息表示缺省包过滤将报文丢弃,而且被丢弃报文的个数不断增长,说明OSPF在不断地尝试发送DD 报文,但都被安全策略模块丢弃了。接下来我们在防火墙上开启Local区域和Trust区域之间的双向安全策略(DD报文是双向的),允许OSPF报文通过。

security-policy
 rule name ospf
  source-zone local
  source-zone trust
  destination-zone local
  destination-zone trust
  service protocol 89
  action permit

当我们配置完防火墙安全策略后,可以看到如下Log表明OSPF邻居已经完全建立。

Jul 4 2017 05:48:15 NGFW%%01OSPF/4/NBR_CHANGE_E(l)[7]:Neighbor changes event: neighbor status changed.(ProcessId=1,NeighborAddress=202.100.1.20,NeighborEvent=LoadingDone,NeighborPreviousState=Loading, NeighborCurrentState=Full)

在路由器上使用display ospf peer 命令查看OSPF 的邻接关系:

display ospf peer
         OSPFProcess 1 with Router ID 202.100.1.20
                Neighbors
 Area 0.0.0.0interface 202.100.1.20(GigabitEthernet0/0/0)'s neighbors
 Router ID:202.100.1.10     Address:202.100.1.10   
   State: Full  Mode:Nbris  Slave Priority: 1
   DR:202.100.1.20  BDR: 202.100.1.10  MTU: 0   
   Dead timer duein 34  sec
   Retrans timerinterval: 5
   Neighbor is upfor 00:03:35    
   AuthenticationSequence: [ 0 ]

我们可以总结下,对于防火墙来说,一般情况下,单播报文是要经过安全策略的检查,所以需要开启安全策略允许报文通过;而组播报文不经过安全策略的检查,也就不需要开启相应的安全策略。那么在OSPF 中,哪些报文是单播哪些报文是组播呢?不同的网络类型,OSPF 报文的发送形式也不相同,如下表所示:

\