我们计划将两个机架中的服务器相互连接。假设我们在每个机架中有 5 台服务器,并通过快速交换机连接。每台服务器都有一个 1 GBit 的 Internet 上行链路。
以下内容可能非常愚蠢,但网络不是我的专业领域,这就是我需要你帮助的原因。
我们正在创建几个 OpenVPN 连接(见附图,“蓝色云”是 VPN 网络),因为我们想在它们之间使用完整的 1 GBit 连接。但是,如果一台服务器出现故障,我们仍然希望在两个机架之间建立有效的连接。
所以,我们做了什么: 1. 在每个 S[1-5] 和 C[1-5] 服务器之间配置 OpenVPN,创建一个 10.0.5x.0/24 的虚拟网络。(这已经工作了) 2. 使用 OSPF 安装和配置 Quagga 以宣布路由。我们对每个节点都这样做了,所以每个人都可以成为其他人的路由器(我们不希望只有一个网关,因为这会将机架之间的连接限制为只有 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 错误。
这是我们想到的拓扑图: topology
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
简而言之,您应该将所有界面放在同一个区域中,以获得您想要的行为。区域间路由在内部相当复杂,存在整个区域的概念主要是为了将大型路由网络划分为托管大小的网络。如果您提供的路由器数量正确,则不是您的情况。