我们计划将两个机架中的服务器相互连接。假设我们在每个机架中有 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