Routing

多宿主 OpenBSD 系統:基於策略的路由與 mpath 預設路由

  • March 21, 2017

TL;DR OpenBSD 基於策略的路由對多宿主伺服器/網關的情況有幫助嗎?如果是這樣,我該如何配置它?

長表

我正在管理一個帶有兩個 ISP 連結和通往遠端路由節點的 VPN 隧道的 OpenBSD。

最初,我們使用了多個具有不同指標的預設路由——首選路由通過靜態 IP 地址和 NAT 路由器,而 NAT 路由器又具有動態分配的地址(它基本上是一個電纜調製解調器)。

在實踐中,這並不理想,但效果很好。從網關建立的新連接(以下簡稱“gw”)如果啟動,將選擇速度更快、延遲更低的路由;如果鏈路斷開,則通過電纜調製解調器出去。入站連接只能通過更好的路由,因為其他 IP 地址位於 NAT 之後(無法從外部路由。

現在,我們需要通過額外的代理/VPN 路由器節點將流量路由到“雲端”,以降低靜態 IP 地址上的 DDoS 風險。

那些通過隧道連接到網關。

第一的。然後我們發現我們的管理員訪問權限會偶爾下降。

更複雜的是,此網關具有到特定 VLAN 的附加活動介面。他們與這個問題無關,但不能被打擾。

可能的解決方案

我的印像是我們應該使用基於策略的路由rdomains。我想這意味著我為三個涉及的介面中的每一個創建路由表,並且任何這些介面(包括tun0隧道介面)上的任何連接都應該通過該域的表路由(因此每個介面都可以有自己的預設路由)。

我在正確的軌道上嗎?

這是一個圖表和一個經過清理的列表(如果介面設置):

________
| 隧道| _______
~+~~~~ | GW |======++
| ~+~+~+~ || 
| _________ | | | || 
+ ----- | prefISP | ------------- + | | __ || ____ ......... 
~~~~~~~w~ | +-----| 開關 |-----( 集群 ) 
| ~~~~~~~~ ^^^^^^^^^ 
_________ .....|...... || 
| fallISP |----------( LAN / WiFi )===++
~~~~~~~~~ ^^^^^^^^^^^^

圖:通過隧道、首選 ISP 以及訪問 GW 或集群(通過 GW 或從 LAN)訪問 GW 時,我想避免非對稱路由。


清理界面資訊:

em3:inet 123.45.67.118 網路遮罩 0xfffffff8 廣播 123.45.67.119 描述:prefISP
em0:inet 10.1.1.100 網路遮罩 0xffffff00 廣播 10.1.1.255 描述:fallISP
tun0:inet 192.168.2.2 --> 192.168.2.1 網路遮罩 0xffffff00 描述:隧道
em1: VLAN_TRUNK
vlan1000:inet 172.29.1.1 網路遮罩 0xffffff00 廣播

如前所述:em3是我們到首選(更快)ISP 的連結;tun0通過它;em0與辦公室 LAN/Wifi 位於同一網段,作為我們的備份 ISP;並且 GW 具有到集群和交換機的附加連結。

歡迎來到負載均衡的夢想。

這是可能的,但您最好的路由和無痛模式是使用 BGP 路由協議並使用策略管理下游和上游流量。

為了成功,您必須與兩個 ISP 協商,將您作為內部 iBGP 節點包括在內,以便您可以將路由路徑推送到 Internet。

正確的方法是讓您請求自己的自治系統編號。並管理您擁有的所有 IP。由於要求,這有點複雜。

http://teamarin.net/2014/01/31/how-to-request-an-asn-from-arin/

如果您符合多宿主政策的條件,則需要提供要使用的外部網關協議、網路上目前使用的 IP 地址、每個上游提供商和/或同行的 AS 編號和名稱以及契約驗證至少與其中兩個服務。

如果您符合唯一路由策略的條件,則必須證明 AS 的路由策略將不同於其邊界對等點的路由策略。

無論您符合哪種政策,如果這不是您第一次申請 ASN,您還需要向我們展示您申請 ASN 的網路是如何獨立於您網路中所有現有 AS 的。

這是一篇關於使用 BGP 的多宿主的好論文:http: //aspath.net/BGP-MHing-HOWTO-whitepaper.pdf

如果您不願意,無法與您的 ISP 創建 BGP 會話,那麼另一種解決方案是購買基於硬體的負載均衡器。(從技術上講,大多數硬體都執行一些經過修改的 BSD 來實現產品功能。因此,如果您有知識,您可以將其設置在執行 BSD 的伺服器上。但是您永遠不會獲得具有專用硬體用於網路處理的硬體設備的 trhoguput ,但是如果您的負載不大(我會說超過 50 Mbps),您可以做到)

引用自:https://serverfault.com/questions/828832