Networking

如何配置 Azure 虛擬網路之間的路由?

  • November 9, 2018

我正在設計一個包含多個虛擬網路的 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/2410.10.3.0/24
  • 本地網路 B(從虛擬網路 C 的角度來看):10.10.2.0/2410.10.1.0/24

這樣,當網路 A 連接到網路 B 時,它將使用此連接來路由定向到網路 C 的數據包。當網路 B 的網關接收它們時,它已經知道如何處理它們,並將通過其連接路由它們到網路 C;反之亦然。


作為額外的獎勵,這也適用於 Azure*之外的站點到站點連接。*如果您想將 VPN 加入到您的公司總部並將其連接到網路 B(從而創建 Y 形拓撲),您可以告訴網路 A 和網路 B,他們可以通過與網路的連接到達您的公司總部B,以完全相同的方式。

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