zl程序教程

您现在的位置是:首页 >  其他

当前栏目

通过GRE建立ospf邻居关系时,因为错误端口宣告导致的频繁重新建立

错误 通过 关系 端口 建立 导致 重新 因为
2023-09-14 09:06:46 时间

如图所示,我们下面的讲解以这个例子展开

tunnel口的性质

我们知道gre tunnel接口一定要有去到隧道对端的路由时,它的protocol才会开启,否则将会处在物理up,协议dowm的状态。所以在建立gre之前,我们需要配置相应的路由,使得隧道两端是互通的。

错误的OSPF宣告

我们希望通过gre进行远端的ospf邻居建立的时候,我们需要将tunnel接口在ospf进程中进行宣告,比如tunnel接口的IP为3.3.3.3/24,那么我们就需要在ospf视图下输入network 3.3.3.0 0.0.0.255,输入之后,网络设备就会将ospf的组播报文封装在隧道当中,并将该报文以隧道的形式单播传递到对端。但是此时若你也将上图中防火墙的边界接口也宣告仅ospf中,那么将会导致关系的不断建立。

不断建立的原因解析

我们设左边的防火墙是A,右边的防火墙是B,因为gre隧道会承载ospf的相关协议报文,当我们将A的边界接口也宣告进ospf后,B在接收到ospf的相关报文进行ospf路由计算后,会计算出去往对端A边界接口的新的ospf路由,因此原先我们配置的静态路由将会因为ospf的更高的优先级而被取缔,于是B上的路由表就会生成这样的条目:

目的地址:A的边界接口 A边界接口的掩码  下一跳:B的tunnel接口 

这条路由并不能取缔原先的静态路由,因为它仅仅给出下一跳是tunnel接口,而tunnel接口的开启是依靠我们先前创建的去往对端边界接口的静态路由,于是因为这条错误的路由的产生,我们的tunnel接口将不知道如何去往隧道的另一头,于是tunnel接口就down掉了,然后ospf的关系也down了,然后静态路由又回来了,然后又重复上面的过程。

OSPF没有建立连接前

 

OSPF建立连接后

如何解决

我们只要在进行ospf宣告的时候,不将防火墙的边界接口宣告进ospf中即可。