如何在Azure虚拟networking之间configuration路由?

我正在devise一个包含多个虚拟networking的Azure环境,并且要求所有networking都要连接; 任何networking中的虚拟机都应该能够与任何其他networking中的另一台虚拟机进行通信。

可以使用全网状拓扑连接这些networking,但是随着networking数量的增加,这种情况会很快失去控制,我真的不想设置和pipe理n(n-1)/ 2个 VPN连接。

我宁愿用集线器拓扑连接它们,如果达到每个虚拟networking10个连接的Azure限制,也许使用多个集线器。 但是,我遇到了一个问题:似乎没有办法在Azure中处理路由

比方说,为了简单起见,我有三个虚拟networking:

  • networkingA – 10.10.1.0/24
  • networkingB – 10.10.2.0/24
  • networkingC – 10.10.3.0/24

我想将networkingA连接到networkingB,将networkingB连接到networkingC; 我不想在networkingA和C之间build立直接连接:我想让networkingA通过networkingB与networkingC对话。

如果我掌握了网关,这将是一个完全没有问题的问题。 几条静态路线可以快速有效的解决这个问题。

但是,在Azure中,我无法find为虚拟networking定义其他路由的方法,因此我无法告诉网关A将networkingC的stream量发送到networkingB(反之亦然)。

这在Azure中如何实现?

好吧,这可以做到,但绝对不是它可以(而且应该)那样容易。

基本上,诀窍就是使用Azure的“本地networking”来根据需要configurationAzure网关,即使我们无法直接触摸其configuration。

为了在两个Azure虚拟networking之间build立连接,需要定义两个匹配的“本地networking”,然后让每个networking连接到另一个对应的“本地networking”。 这已经是一个不那么直接的过程,但至less有一些关于它的文档 。 对于一个给定的虚拟networking,有多个连接是比较复杂的,因为你不能从pipe理门户(或PowerShell)处理这个连接,而是手动编辑networkingconfiguration文件。 然而, 即使这样做也可以做到 。

但是路由呢? 在这个问题描述的情况下,并假设networkingB正确连接到networkingA和networkingC,我们如何路由这两个networking之间的stream量?

我们可以通过使用本地networking定义来做到这一点; 基本上,我们必须告诉networkingA的网关,它与networkingB的连接不仅可以达到networkingB的IP子网,而且可以连接到networkingC的子网。 我们当然会告诉networkingC的网关。

我们必须定义四个本地networking:

  • 本地networkingA(从虚拟networkingB的angular度来看):10.10.1.0/24
  • 本地networkingC(从虚拟networkingB的angular度来看):10.10.3.0/24
  • 本地networkingB(从虚拟networkingA的angular度来看):10.10.2.0/24
  • 本地networkingB(从虚拟networkingC的angular度来看):10.10.2.0/24

我们将这样修改它们:

  • 本地networkingA(从虚拟networkingB的angular度来看):10.10.1.0/24
  • 本地networkingC(从虚拟networkingB的angular度来看):10.10.3.0/24
  • 本地networkingB(从虚拟networkingA的angular度来看):10.10.2.0/24 10.10.3.0/24
  • 本地networkingB(从虚拟networkingC的angular度):10.10.2.0/24 10.10.1.0/24

这样,当networkingA连接到networkingB时,它将使用这个连接来路由到networkingC的数据包。当networkingB的网关接收它们时,它已经知道如何处理它们,并且将通过它的连接到networkingC; 反之亦然。


作为额外的好处,这也适用于Azure 之外的站点到站点连接。 如果你想把一个VPN连接到你的公司总部,并把它连接到networkingB(从而创build一个Y形拓扑),你可以告诉networkingA和networkingB他们可以通过他们的networking连接到你的公司总部B,完全一样。

如果您不想在每次连接2个networking时都使用VPN,Azure已经引入了vNet对等:

https://docs.microsoft.com/en-us/azure/virtual-network/create-peering-different-deployment-models

https://azure.microsoft.com/en-us/resources/videos/virtual-network-vnet-peering/

这可能值得看一下,因为它会受到脖子上很痛苦的地球的影响。