🚅

Express Route 回線を共有している環境における vNet 間通信について

2024/03/27に公開

はじめに

Express Route 回線を共有している環境では vNet 間通信が可能となっていますが、ER 回線経由での vNet 間通信を無効化するオプションが増えたようです。ちょうど ER Gateway の挙動を確認していたところでしたので、併せて本オプションについても調べてみました

まずは調べた内容の共有

1. そもそも Express Route 回線経由で VNET 間通信はできるのか?

公式 Docs の よくあるご質問 に記載がありました。Docs を見る限りでは 通信することは可能 ということです

同じ ExpressRoute 回線に接続されている仮想ネットワークは互いに通信できますか。
はい。 同じ ExpressRoute 回線に接続されている仮想ネットワークにデプロイされた仮想マシンは互いに通信できます。この通信を容易にするために、仮想ネットワーク ピアリングを設定することをお勧めします。

ただし、VNet ピアリングを設定することをお勧めします と回答にも記載がある通り、VNet 間の通信を行いたい場合は VNet ピアリングを利用することが推奨となります

これは公式 Docs の Spoke-to-spoke networking に理由が記載されています
要は「構成することは出来るけど、経路が遠くなる + ER Gateway 障害時に通信が出来なくなる + ExpressRoute 関連のコンポーネントに負荷が掛かる からやめてね」という感じです

ExpressRoute. In certain configurations, an ExpressRoute gateway can advertise routes that attract spoke-to-spoke communication, sending traffic to the Microsoft edge router, where it's routed to the destination spoke. Microsoft strongly discourages this scenario because it introduces latency by sending traffic to the Microsoft backbone edge and back. On top of that, Microsoft does not recommend this approach, due to the single point of failure and the large blast radius. This scenario also presents multiple problems caused by putting extra pressure on the ExpressRoute infrastructure (the gateway and physical routers). This additional pressure can cause packet drops.

ということで、仮想ネットワーク同士の通信を行いたい場合は VNet Peering を利用しましょうということになります

2. Express Route 回線経由で VNET 間通信をさせたくない場合はどうするの?

ER 回線を共有している場合は、仮想ネットワーク間の通信が出来てしまっていました(実際に本オプションが追加される前の状態を知らないので推測も含んでいます。。)

「はじめに」で記載している通り、ER 回線経由で vNet 間通信を行わせたくない場合は ER Gateway の設定で Allow traffic from remote virtual networks を無効化 すれば良いです

設定箇所については公式 Docs の Azure portal を使用して ExpressRoute の仮想ネットワーク ゲートウェイを構成する に記載されています

上記の設定画面の通り、ER Gateway の設定に存在している Allow traffic from remote virtual networks. のチェックを外すことで VNet <--> VNet の通信を無効にすることが可能です

動作検証

「オプションの設定によってER 回線を共有している vNet 間通信がどのように変わるのか?」 について実機で確認してみました

結論から記載させていただきますと、Docsに記載の通りの動きとなりました
(百聞は一見に如かずです。Docsの通りでもこの検証は無駄ではないはず・・・)

Allow traffic from remote virtual networks VNet 間通信
チェックしない(無効化) ×
チェックする(有効化)

以下、検証環境情報と動作検証内容です

検証環境情報

1. Allow traffic from remote virtual networks が 無効 の場合

ER Gateway のオプションの設定値

  1. サブスクリプション1 の ER Gateway (ERDemo-GW)

  2. サブスクリプション2 の ER Gateway (ERDemo2-GW)

結果

  • ER Gateway にて Allow traffic from remote virtual networks が 無効 の場合は vNet 間の通信は不可
  • OCI VM と Azure VM はもちろん通信は可能
    • 図には記載していませんが、OCI VM (OCI_Azure_Demo_VM) ⇔ SpokeVM (ERDemo-Centos02, ERDemo-Centos03) の通信も可能です

2. Allow traffic from remote virtual networks が 有効 の場合

ER Gateway のオプションの設定値

  1. サブスクリプション1 の ER Gateway (ERDemo-GW)

  2. サブスクリプション2 の ER Gateway (ERDemo2-GW)

結果

  • ER Gateway にて Allow traffic from remote virtual networks が 有効 の場合は vNet 間の通信は可能

    • Spoke の VM に対しても通信可能 (2つ目の図を参照)
    • Spoke間での通信は不可 (2つ目の図を参照)
  • OCI VM と Azure VM はもちろん通信は可能

    • 図には記載していませんが、OCI VM (OCI_Azure_Demo_VM) ⇔ SpokeVM (ERDemo-Centos02, ERDemo-Centos03) の通信も可能です


エビデンス (Ping結果)

1. OCI のVM から サブスク1・2 の VM への Ping 結果

VM名 VM名
OCI_Azure_Demo_VM (OCI) ERDemo-Centos01 (サブスクリプション1)
OCI_Azure_Demo_VM (OCI) ERDemo2-Centos02 (サブスクリプション2)

2. サブスク1 の VM から サブスク2 の VM への Ping 結果

VM名 VM名
ERDemo-Centos01 (サブスクリプション1) ERDemo2-Centos02 (サブスクリプション2)

3. サブスク2 の VM から サブスク1 の Spoke VM への ping 結果

VM名 VM名
ERDemo2-Centos02 (サブスクリプション2) ERDemo-Centos02 (サブスクリプション1)
ERDemo2-Centos02 (サブスクリプション2) ERDemo-Centos03 (サブスクリプション1)

まとめ

今回は ER Gateway に追加された「vNet 間通信を無効化するオプション」についての動作確認を行いました。ER 回線は共有したいが VNet 同士は接続させたくないという要望も多いかと思いますが、本オプションを利用することで vNet 間の通信を制御することが可能となります

今回の検証環境を作成する手順(OCI との連携、Express Route 構成)についてはすでに記事に纏まっていたりします。Appdedix に URL を記載しておきますので興味がある方はそちらの記事もご参照いただければと思います(すでに記事はありますが、後ほど私の方でも振り返りのため記事に纏めようとは考えています)

本記事が Azure ネットワーク構成を検討している方に少しでも参考になれば幸いです

Appendix

公式Docs

https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-faqs#can-virtual-networks-linked-to-the-same-expressroute-circuit-talk-to-each-other

https://learn.microsoft.com/en-US/azure/architecture/networking/guide/spoke-to-spoke-networking

https://learn.microsoft.com/ja-jp/azure/expressroute/virtual-network-connectivity-guidance?source=recommendations

https://learn.microsoft.com/ja-JP/azure/expressroute/expressroute-howto-add-gateway-portal-resource-manager#enable-or-disable-vnet-to-vnet-or-vnet-to-virtual-wan-traffic-through-expressroute

同様の内容の記事

https://zenn.dev/microsoft/articles/20240322-ergw2ergw

OCIとの連携

https://qiita.com/takeokams/items/8187cd6ba38c4e5872bb

https://qiita.com/aktsmm/items/0f0f74770bc4196dda80

Express Route

https://zenn.dev/microsoft/articles/expressroute-getstart

https://zenn.dev/microsoft/articles/expressroute-gateway

vNet Peering

https://zenn.dev/microsoft/articles/zenn-vnet-peering-instruction

Microsoft (有志)

Discussion