Networking
使用 Quagga 和 OpenVPN 進行路由
我們計劃將兩個機架中的伺服器相互連接。假設我們在每個機架中有 5 台伺服器,並通過快速交換機連接。每台伺服器都有一個 1 GBit 的 Internet 上行鏈路。
以下內容可能非常愚蠢,但網路不是我的專業領域,這就是我需要你幫助的原因。
我們正在創建幾個 OpenVPN 連接(見附圖,“藍色雲”是 VPN 網路),因為我們想在它們之間使用完整的 1 GBit 連接。但是,如果一台伺服器出現故障,我們仍然希望在兩個機架之間建立有效的連接。
所以,我們做了什麼: 1. 在每個 S 之間配置 OpenVPN
$$ 1-5 $$和 C$$ 1-5 $$伺服器,創建一個 10.0.5x.0/24 的虛擬網路。(這已經工作了) 2. 使用 OSPF 安裝和配置 Quagga 以宣布路由。我們對每個節點都這樣做了,所以每個人都可以成為其他人的路由器(我們不希望只有一個網關,因為這會將機架之間的連接限制為只有 1 GBit,對吧?!)
- 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
簡而言之,您應該將所有界面放在同一個區域中,以獲得您想要的行為。區域間路由在內部相當複雜,存在整個區域的概念主要是為了將大型路由網路劃分為託管大小的網路。如果您提供的路由器數量正確,則不是您的情況。