OSPF:如何通告OpenVPN服务器的子网?

我已经在所有HP ProCurve 7102路由器以及我们大部分的内部Linux路由器上成功configuration了OSPF。 路线得到广告,所有都是桃色。

除了进入由各公司的各种OpenVPN服务和其他VPN连接处理的子网的路由。 请考虑下面的图片,其中显示了公司networking的一部分:

在这里输入图像说明

红色箭头是VPN连接。 底部的蓝色区域描述了OSPF区域0(主干),其中包括所有其他办公室的路由器。 粉红色的地区描绘了我们的办公室之一的OSPF区域177。 橙色的矩形是OpenVPNnetworking,在Linux路由器上用蓝色箭头表示。

10.177.0.0/16子网已正确通告给所有其他OSPF区域。 但是,尽pipenetworking10.180.1.0/24包含在OSPFconfiguration中,并且接口tun0包含在区域177中(作为被动接口),但是该子网不会被公布。

那是因为这实际上是外部路线? 如果是这样,我将如何告诉OSPF守护进程通告该路由?

首先想到的是,除了Quagga / Zebra OSPF中连接的路由外,还需要重新分配内核路由。 由于OpenVPN自己添加路由,如果您只在configuration中“重新分配静态”,Zebra将不会重新分配它们。

我也在OSPF环境中使用OpenVPN,并且所有的重新分配都很好。

注意:您可能需要添加一些再分发列表filter,以防止重新分配不应被广告的其他内核路由。

另一个select是在Zebra中为10.180.1.0/24添加一条静态路由,使其成为null或环回设备。

在“摆脱内核和静态路由”狂欢之后,我发现自己也遇到了类似的问题。

对于我的情况,解决scheme是将OpenVPNnetworking放在不同的OSPF区域,然后使用将服务器端点地址关联的/ 32前缀replace为/ 24子网前缀的巧妙技巧。 例如

192.168.22.0/24是我的FreeBSD 10.3-PRERELEASE OpenVPN服务器上的OpenvVPN子网。

在openvpn.conf中:

dev tun server 192.168.22.0 255.255.255.0 

当OpenVPN启动时,tun0界面出现如下configuration:

 munchkin# ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500 options=80000<LINKSTATE> inet6 fe80::222:15ff:fe4b:7e10%tun0 prefixlen 64 scopeid 0x1c inet 192.168.22.1 --> 192.168.22.2 netmask 0xffffffff nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> Opened by PID 2746 

在ospfd.conf中:

 router ospf ... network 192.168.11.0/24 area 0.0.0.0 network 192.168.22.0/24 area 0.0.0.1 area 0.0.0.1 range 192.168.22.1/32 substitute 192.168.22.0/24 

OSPF然后通告192.168.22.0/24而不是192.168.22.1/32

注意:这仅适用于区域边界。