如何配置 Azure 虛擬網路之間的路由?
我正在設計一個包含多個虛擬網路的 Azure 環境,並且要求連接所有網路;任何網路中的 VM 都應該能夠與任何其他網路中的另一個 VM 通信。
我可以使用全網狀拓撲連接這些網路,但是隨著網路數量的增加,這很快就會失控,我真的不想設置和管理n(n - 1)/2 個VPN 連接.
我寧願使用中心輻射型拓撲連接它們,如果達到每個虛擬網路 10 個連接的 Azure 限制,則可能使用多個集線器。但是,我遇到了一個問題:似乎沒有辦法在 Azure 中處理路由。
假設為簡單起見,我有三個虛擬網路:
- 網路 A - 10.10.1.0/24
- 網路 B - 10.10.2.0/24
- 網路 C - 10.10.3.0/24
我想將網路 A 連接到網路 B,將網路 B 連接到網路 C;我不想要網路 A 和 C 之間的直接連接:我希望網路 A 通過網路 B 與網路 C 通信。
如果我可以控製網關,這將完全不是問題;幾個靜態路由將快速有效地解決問題。
但是,在 Azure 中,我找不到為虛擬網路定義其他路由的方法,因此我無法告訴網路 A 的網關“將針對網路 C 的流量發送到網路 B”(反之亦然)。
這如何在 Azure 中實現?
好的,這是可以做到的,但它絕對不像它可以(並且應該)那麼容易。
基本上,訣竅是使用 Azure 的“本地網路”來根據需要配置 Azure 網關,即使我們不能直接接觸它們的配置。
為了在兩個 Azure 虛擬網路之間建立連接,您需要定義兩個匹配的“本地網路”,然後讓每個網路連接到另一個對應的“本地網路”;這已經是一個不那麼直接的過程,但至少有一些 關於它的文件。對於給定的虛擬網路擁有多個連接甚至更加複雜,因為您無法從管理門戶(或 PowerShell)處理它,而必須手動編輯網路配置文件;然而,即使這樣也可以做到。
但是路由呢?在這個問題中描述的場景中,假設網路 B 正確連接到網路 A 和網路 C,我們如何在這兩個網路之間路由流量?
我們可以通過使用本地網路定義來做到這一點;基本上,我們必須告訴網路 A 的網關,它與網路 B 的連接不僅可以很好地到達網路 B 的 IP 子網,而且還可以到達網路 C 的 IP 子網;我們當然會反過來告訴網路 C 的網關。
我們已經定義了四個本地網路:
- 本地網路 A(從虛擬網路 B 的角度來看):10.10.1.0/24
- 本地網路 C(從虛擬網路 B 的角度來看):10.10.3.0/24
- 本地網路 B(從虛擬網路 A 的角度來看):10.10.2.0/24
- 本地網路 B(從虛擬網路 C 的角度來看):10.10.2.0/24
我們將這樣修改它們:
- 本地網路 A(從虛擬網路 B 的角度來看):10.10.1.0/24
- 本地網路 C(從虛擬網路 B 的角度來看):10.10.3.0/24
- 本地網路 B(從虛擬網路 A 的角度來看):10.10.2.0/24和10.10.3.0/24
- 本地網路 B(從虛擬網路 C 的角度來看):10.10.2.0/24和10.10.1.0/24
這樣,當網路 A 連接到網路 B 時,它將使用此連接來路由定向到網路 C 的數據包。當網路 B 的網關接收它們時,它已經知道如何處理它們,並將通過其連接路由它們到網路 C;反之亦然。
作為額外的獎勵,這也適用於 Azure*之外的站點到站點連接。*如果您想將 VPN 加入到您的公司總部並將其連接到網路 B(從而創建 Y 形拓撲),您可以告訴網路 A 和網路 B,他們可以通過與網路的連接到達您的公司總部B,以完全相同的方式。