複数の仮想ネットワークを含むAzure環境を設計していますが、すべてのネットワークを接続する必要があります。 a VMどのネットワークでも他のネットワークと通信できるはずですVM他のネットワークでも。
私はできますフルメッシュトポロジを使用してこれらのネットワークを接続しますが、これはネットワークの数が増えるとすぐに手に負えなくなり、実際にはそうしませんn(n-1)/ 2 VPN接続をセットアップして管理する必要があります。
仮想ネットワークあたりの接続数が10に制限されているAzureに達した場合は、複数のハブを使用して、ハブアンドスポークトポロジを使用して接続するほうがよいでしょう。しかし、Azureでルーティングを処理する方法がないようです。
簡単にするために、3つの仮想ネットワークがあるとします。
ネットワークAをネットワークBに、ネットワークBをネットワークCに接続したい。ネットワークAとCを直接接続したくありません。ネットワークAにネットワークB経由でネットワークCと通信させたいです。
ゲートウェイを制御できれば、これは完全に問題にはなりません。いくつかの静的ルートは問題を迅速かつ効果的に解決します。
ただし、Azureでは仮想ネットワークの追加ルートを定義する方法が見つからないため、ネットワークAのゲートウェイに「ネットワークC宛てのトラフィックをネットワークBに送信する」(またはその逆)ように指示できません。
これはAzureでどのように実現できますか?
OK、これは可能ですが、そうすることは簡単ではありません。
基本的に、トリックは、Azureの「ローカルネットワーク」を使用して、Azureゲートウェイを直接構成できない場合でも、必要に応じてAzureゲートウェイを構成することです。
2つのAzure仮想ネットワーク間の接続を設定するには、一致する2つの「ローカルネットワーク」を定義し、各ネットワークを、もう一方のネットワークに対応する「ローカルネットワーク」に接続する必要があります。これはすでにそれほど単純ではないプロセスですが、少なくとも somedocumentation についてはあります。管理ポータル(またはPowerShell)からは処理できず、代わりにネットワーク構成ファイルを手動で編集する必要があるため、特定の仮想ネットワークに複数の接続があると、さらに複雑になります。ただし、 これを行うこともできます 。
しかし、ルーティングについてはどうですか?この質問で説明されているシナリオで、ネットワークBがネットワークAとネットワークCの両方に正しく接続されていると仮定すると、これらの2つのネットワーク間でトラフィックをどのようにルーティングできますか?
これは、ローカルネットワーク定義を使用して行うことができます。基本的に、ネットワークBへの接続はネットワークBのIPサブネットに到達するだけでなく、ネットワークCのサブネットにも到達することをネットワークAのゲートウェイに通知する必要があります。もちろん、ネットワークCのゲートウェイとは逆に説明します。
すでに4つのローカルネットワークを定義する必要があります。
それらを次のように変更します。
このようにして、ネットワークAがネットワークBに接続すると、この接続を使用して、ネットワークCに向けられたパケットもルーティングされます。ネットワークBのゲートウェイがパケットを受信するときは、それらの処理方法をすでに認識しており、接続経由でルーティングします。ネットワークCへ;およびその逆。
追加のボーナスとして、これはAzureのサイト間接続の外部でも機能します。本社にVPNを導入したい場合は、次のようにしてください。それをネットワークBに接続して(したがってY字型のトポロジを作成します)、ネットワークAとネットワークBに、ネットワークBへの接続を介して会社の本社に到達できることをまったく同じ方法で伝えることができます。
2つのネットワークに接続するたびに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/
首が痛いゲットウェイを乗り切るので一見の価値あり。
それを実装する方法の詳細が必要な場合は、その目的のためにBLOBにスレッドを作成し、AzureでPFSENSEを使用する方法を説明しました。 (PFSENSEは無料です。無料のルーターが必要な場合は、そのためのVHDをパッケージ化します)