使用 Quagga 和 OpenVPN 进行路由

使用 Quagga 和 OpenVPN 进行路由

我们计划将两个机架中的服务器相互连接。假设每个机架中有 5 台服务器,通过快速交换机连接。每台服务器都有 1 GBit 的互联网上行链路。

以下内容可能非常愚蠢,但网络不是我的专业领域,这就是为什么我需要你的帮助。

我们正在创建多个 OpenVPN 连接(见附图,“蓝色云”是 VPN 网络),因为我们想在它们之间使用完整的 1 GBit 连接。但如果一台服务器出现故障,我们仍然希望两个机架之间有可用的连接。

因此,我们做了以下工作:1. 在每个 S[1-5] 和 C[1-5] 服务器之间配置 OpenVPN,创建一个 10.0.5x.0/24 虚拟网络。(这已经可以正常工作了)2. 安装 Quagga 并使用 OSPF 配置它来通告路由。我们对每个节点都执行了此操作,因此每个人都可以成为其他人的路由器(我们不希望只有一个网关,因为这会将机架之间的连接限制为仅 1 GBit,对吧?!)
3. Quagga 现在通告路由,每个人都可以 ping 其他人(也可以正常工作)

现在游戏开始了:我们关闭 C4,并相应地更新路由(指 OSPF 和 quagga)。但是现在如果我们尝试从 S4 ping 到 C5,它会选择一条 C5 认为不是最佳路由的路由(这是我对 rp_filter linux 网络设置为 1 的理解)。我们在 tcpdump 中看到的路由是 S4 -> S3 -> C3 -> C5。更好的路由应该是 S4 -> S5 -> C5。

如果我们将 rp_filter 设置为 2,ping 就可以正常工作,但允许非最佳路由感觉不对?我们以为 OSPF 是为了获得最佳(最短)路由?但我们猜测我们错误地配置了 Quagga / OSPFd。

以下是我们心中的拓扑图像: 拓扑

ospfd.conf 如下所示

interface eth0
interface bond0
interface tun0

router ospf
  router-id 10.0.1.4
  network 10.0.1.0/24 area 0
  network 10.0.54.0/24 area 1
  redistribute static

斑马.conf:

interface bond0
  link-detect
interface tun0
  link-detect

答案1

简而言之,您应该将所有接口放在同一个区域中以获得所需的行为。区域间路由在内部相当复杂,整个区域概念的存在主要是为了将大型路由网络划分为可管理大小的网络。如果您提供的路由器数量正确,则情况并非如此。

相关内容