VLAN和VPC是一種網路隔離方法,我們可以借此保護自己部署在公有雲中的基礎設施。通過減少網路的攻擊面,同時供我們對需要以及不需要訪問互聯網的應用程式層進行分割,這些方法有助於提高整體安全性。那麼不妨考慮一個更大的話題:是否能在Linode的説明下,實現私有網路的跨地域部署。
這裡所說的“地域”(Region)是指一個雲服務提供者內部所包含的不同地理位置,而“區域”(Zone)通常是指在一個地域內所提供的多個託管地點。例如,雲服務商可能在北京設立了“北方地域”,並在廣州設立了“南方地域”,每個地域都是通過當地的多個“區域”提供服務的。
除了可以通過距離大部分用戶更近的地理位置提供延遲更低的服務,多地域方式部署的應用程式還可以説明我們大幅提高應用程式的可靠性與容錯性。任何可能對一個位置運行的工作負載造成影響的問題(包括硬體故障或本地網路中斷),都可通過將用戶重新路由到另一個位置的方式加以緩解。
部署多地域VLAN
為了在多地域部署的不同VLAN分段之間進行路由,我們可以使用虛擬私人網路絡(VPN)將VLAN網段捆綁在一起。
首先,我們需要使用一個充當公共路由器的Linode節點將部署在一個地域的所有相關VLAN捆綁在一起。此時,每個VLAN網段都是獨立且隔離的二層域,在自己的第三層子網內運行。各個VLAN網段之間的所有流量都會流經該路由器,我們可以在路由器上通過防火牆規則來管理允許哪些流量在不同網段之間穿越。
隨後可以配置這個路由器實例,借助公共互聯網和VPN軟體(如WireGuard或IPSec等協定)將其他網段之間的流量橋接在一起。
上述例子展示了一個包含兩個地域的部署。每個地域負責通過一個路由器實例管理兩個獨立VLAN之間的連接,隨後,每個路由器即可使用配置有多個介面的Linode路由器實例在本地橋接多個地域。路由器可通過WireGuard隧道,借助每個地域的公共互聯網橫跨每個地域。
配置NAT出口點
至此,流量已經可以不受地域限制在任何VLAN之間流動。此外,路由器實例可以充當網路位址轉譯(NAT)出口點,為本地VLAN提供互聯網連接(如果部署路由器實例時未提供本地互聯網連接)。這種配置下,本地路由器實例將被指定為預設閘道器(例如通常會在10.0.0.0/24網路中配置為10.0.0.1)。我們還可以將路由器實例當作安全通訊端外殼(SSH)的管理堡壘機。
實現這類NAT配置的一種常見方法是使用防火牆規則來標記WireGuard流量,並對檢測出的未包含該標記的所有流量進行IP掩蔽(IP masquerading)。
例如,路由器可配置為使用如下的iptables規則:iptables -t nat -A POSTROUTING -o eth0 -m mark ! --mark 42 -j MASQUERADE
我們可以配置WireGuard在其配置中使用FirewallMark(如“42”),該配置保證了不對WireGuard流量進行NAT,但對所有VLAN流量進行NAT。
隨後即可配置雲防火牆規則允許路由節點之間的WireGuard通信(通常為udp/51820)。
最後,如果需要,我們還可以使用防火牆規則配置路由器實例,從而控制或記錄流經本地和全域網段的流量。
注意事項
上述例子中的部署可用於在全球範圍內跨越多個地域實現共用,並借助路由器實例控制不同VLAN網段之間的流量。在通過隧道將多個VLAN網段的流量傳輸至一個聚合點時,務必要瞭解這樣做可能對性能和頻寬產生的影響。此時可獲得的性能主要取決於分配給路由器的計算資源所具備的上行頻寬。
此外在確定要使用的VPN協定時也需要慎重,這樣才能保證滿足部署的特定要求。所選擇的技術將對點對點頻寬以及通過公共互聯網所發出的流量的安全性產生極大影響。例如,WireGuard會使用Cryptography來保證流量不被攔截,相比諸如strongSwan這種IPSec實現,可以更好地減少漏洞和暴露,可信度更高。
多雲部署
用來跨越多個地域的這種技術還可用於跨越多個雲平臺。例如,我們可以在另一個雲平臺的網路邊界內部署一個路由器實例,並將其綁定到該實例本地且由雲提供商提供的VPC中。我們可以在路由器之間通過WireGuard隧道將不同雲提供商的網路橋接在一起,這種做法對於專門在私有網路中保持隔離的服務往往能起到很好的效果。
總結
最終,在設計自己的私有網路時,有很多工具可供我們使用,這樣做的收益往往超過了所帶來的複雜性。如果應用程式和使用者數都在快速增長,妥善設計的環境將有助於降低大部分用戶可能遇到的延遲,從而極大改善用戶體驗。另外,額外的容錯能力也有助於改善服務的可靠性,並改善服務的可用性和可訪問性。