🚅

ExpressRoute 経由の VNet 間接続(非推奨) の挙動が変わったらしいので試す

2024/03/22に公開

はじめに

Azure ExpressRoute (ER) では、同一の ER Circuit に接続されている Virtual Network (VNet) 間での通信が可能です。ドキュメント[1] にも記載の通り、この接続方法は 非推奨 です。Azure 側は従来既定でこの機能を有効化していたのですが、非推奨であるということもあり (思いのほか利用されていたからかも知れないですが) 既定で無効化されるようになります。

仮想ネットワークを同じ ExpressRoute 回線にリンクするときに既定で発生しますが、このソリューションは推奨されません。 仮想ネットワーク間の接続を確立するには、可能な限り最高のパフォーマンスを得るために、代わりに VNet ピアリングを実装する必要があります。

とはいえ、これが全く利用できなくなるというわけではなく、ER Gateway 側の設定[2] によって有効化可能です。また、既定の ER Gateway は影響を受けません。つまり、ER 経由で VNet 間の通信ができる状態です。

ER 経由の接続可否の設定が ER Gateway 側の構成ということで、例えば ER Gateway ①, ②, ③ があるときに、①-② のみ接続可とするようなパターンも生まれるのではないかというところで、検証してみます。

試してみる

環境構成

以下のように 1 つの ER Circuit に対して ER Gateway を 3 つ接続しておきます。

既定の状態

既定の状態ではチェックボックスは入っていません。この状態で、VM①-VM② および VM①-VM③ で疎通確認すると、疎通できない状態となっています。

admin@vm-hub-01:~$ ping 10.2.0.4
PING 10.2.0.4 (10.2.0.4) 56(84) bytes of data.
^C
--- 10.2.0.4 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4088ms

admin@vm-hub-01:~$ ping 10.3.0.4
PING 10.3.0.4 (10.3.0.4) 56(84) bytes of data.
^C
--- 10.3.0.4 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7163ms

ここで Gateway② のみ チェックを入れてみる。Virtual WAN は利用していないため、リモート仮想ネットワークの設定のみ有効化。この更新にも数分時間がかかります。

この状態で VM① から VM② へ ping を飛ばしてみても、返ってきません。これは Gateway① で結局リモート VNet からのトラフィックを拒否してるからですね。

admin@vm-hub-01:~$ ping 10.2.0.4
PING 10.2.0.4 (10.2.0.4) 56(84) bytes of data.

ということで、Gateway① でも同じくリモートトラフィックを有効化します。

この状態で VM① から VM② へ ping を飛ばしてみると、返ってくるようになりました。一方で、もちろん VM③ とは疎通できない状態です。

admin@vm-hub-01:~$ ping 10.2.0.4
PING 10.2.0.4 (10.2.0.4) 56(84) bytes of data.
64 bytes from 10.2.0.4: icmp_seq=1 ttl=62 time=5.90 ms
64 bytes from 10.2.0.4: icmp_seq=2 ttl=62 time=7.33 ms
64 bytes from 10.2.0.4: icmp_seq=3 ttl=62 time=4.90 ms
64 bytes from 10.2.0.4: icmp_seq=4 ttl=62 time=4.92 ms
64 bytes from 10.2.0.4: icmp_seq=5 ttl=62 time=4.81 ms
64 bytes from 10.2.0.4: icmp_seq=6 ttl=62 time=5.28 ms
64 bytes from 10.2.0.4: icmp_seq=7 ttl=62 time=8.25 ms
^C
--- 10.2.0.4 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6010ms
rtt min/avg/max/mdev = 4.808/5.912/8.253/1.260 ms

admin@vm-hub-01:~$ ping 10.3.0.4
PING 10.3.0.4 (10.3.0.4) 56(84) bytes of data.
^C
--- 10.3.0.4 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3068ms

VM①-NIC にて effective route を見てみましょう。VNet② も VNet③ も同じように見えているので、ルーティングとは別のレイヤーでブロックされていそうです。
Gateway で設定しているのは経路を受け取るかどうかという設定に等しく、Gateway① は経路を受け取っているため、VNet②・③ の経路が見えています。

$ az network nic show-effective-route-table -g 20240322-ergw2ergw -n vm-hub-01569 -o table
Source                 State    Address Prefix    Next Hop Type          Next Hop IP
---------------------  -------  ----------------  ---------------------  -------------
Default                Active   10.1.0.0/16       VnetLocal
VirtualNetworkGateway  Active   10.3.0.0/16       VirtualNetworkGateway  10.2.146.76
VirtualNetworkGateway  Active   10.3.0.0/16       VirtualNetworkGateway  10.2.146.77
VirtualNetworkGateway  Active   10.2.0.0/16       VirtualNetworkGateway  10.2.146.76
VirtualNetworkGateway  Active   10.2.0.0/16       VirtualNetworkGateway  10.2.146.77
Default                Active   0.0.0.0/0         Internet
Default                Active   10.0.0.0/8        None
Default                Active   127.0.0.0/8       None
Default                Active   100.64.0.0/10     None
Default                Active   172.16.0.0/12     None
Default                Active   25.176.0.0/13     None
Default                Active   25.152.0.0/14     None
Default                Active   25.184.0.0/14     None
Default                Active   25.4.0.0/14       None
Default                Active   25.148.0.0/15     None
Default                Active   198.18.0.0/15     None
Default                Active   25.150.0.0/16     None
Default                Active   25.156.0.0/16     None
Default                Active   25.159.0.0/16     None
Default                Active   40.109.0.0/16     None
Default                Active   192.168.0.0/16    None
Default                Active   104.147.0.0/16    None
Default                Active   157.59.0.0/16     None
Default                Active   40.108.0.0/17     None
Default                Active   104.146.0.0/17    None
Default                Active   23.103.0.0/18     None
Default                Active   20.35.252.0/22    None

VM③-NIC から見ると、VNet①・② どちらの経路も聞こえてきていません。これはルーティングの世界で Unreachable になっています。つまり、VM① に対する戻りの通信が通らないがために疎通ができていなかったわけですね。

$ az network nic show-effective-route-table -g 20240322-ergw2ergw -n vm-hub-03935 -o table
Source    State    Address Prefix    Next Hop Type    Next Hop IP
--------  -------  ----------------  ---------------  -------------
Default   Active   10.3.0.0/16       VnetLocal
Default   Active   0.0.0.0/0         Internet
Default   Active   10.0.0.0/8        None
Default   Active   127.0.0.0/8       None
Default   Active   100.64.0.0/10     None
Default   Active   172.16.0.0/12     None
Default   Active   25.176.0.0/13     None
Default   Active   25.152.0.0/14     None
Default   Active   25.184.0.0/14     None
Default   Active   25.4.0.0/14       None
Default   Active   25.148.0.0/15     None
Default   Active   198.18.0.0/15     None
Default   Active   25.150.0.0/16     None
Default   Active   25.156.0.0/16     None
Default   Active   25.159.0.0/16     None
Default   Active   40.109.0.0/16     None
Default   Active   192.168.0.0/16    None
Default   Active   104.147.0.0/16    None
Default   Active   157.59.0.0/16     None
Default   Active   40.108.0.0/17     None
Default   Active   104.146.0.0/17    None
Default   Active   23.103.0.0/18     None
Default   Active   20.35.252.0/22    None

おわりに

もともと、ER Circuit を共有している VNet 間が、Spoke も含めて通信できてしまう[3] という問題があったため、ここが選択 or 強制できるということは良いアップデートかと思います。そもそも、Gateway の帯域幅やレイテンシの観点からも非推奨ではあったので、「例外的に使いたい場合に各 Gateway で有効化することでその間の通信ができるようになる」といった位置づけで利用する形になるのではないでしょうか。

接続範囲のイメージとしては、「同一 ER Circuit に接続され、リモートトラフィックを有効化した VNet 間で任意の通信が可能」 ととらえると分かりやすそうです。

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

  2. 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 ↩︎

  3. https://zenn.dev/microsoft/articles/27e9308291943b ↩︎

GitHubで編集を提案
Microsoft (有志)

Discussion