このエントリは2022/03/15現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容との乖離が発生する可能性があります。
問い合わせ
いつものようにとある人から問い合わせが入った。
いま、ピアリングされているVNetにIPアドレス空間を追加しようとしているのだが、ピアリングを切った上でアドレス空間を追加後、再度ピアリングしないといけないのか?
確かに以下のドキュメントを見るかぎり、Peeringを解除しなければならないように読める。
Add IP address spaces to peered virtual networks
https://docs.microsoft.com/azure/architecture/networking/prefixes/add-ip-space-peered-vnet
しかしながら、以下の記述が追加されている。これはピアリングを切断、再接続しなくても、IPアドレス空間をピアリングの対向で同期すればよい、という機能が入ったということを記載している。
This article has not yet been updated to reflect Azure networking’s support for peering resync. Azure virtual networks support adding and removing address space without the need to remove and restablish peerings; instead each remote peering needs a sync operation performed after the network space has changed. The sync can be performed using the Sync-AzVirtualNetworkPeering PowerShell command or from the Azure Portal.
https://docs.microsoft.com/azure/architecture/networking/prefixes/add-ip-space-peered-vnet
この機能は2021/8あたりからすでにPublic Previewになっていたのでご存知の方も多いかもしれない。
この機能を有効化するには
現時点ではPublic Previewであるが、Feature flagを有効にすると利用できるようになる。詳細は以下のBlogに記載があるが、手順を備忘録として残しておく。今回はAzure Portalを使っているが、Azure CLI、PowerShellでも可能。
How to re-size Azure virtual networks that are peered—now in preview
https://azure.microsoft.com/blog/how-to-resize-azure-virtual-networks-that-are-peered-now-in-preview/
Azure Portalで利用しているサブスクリプションを開き、Settings (設定)> Preview features (プレビュー機能)から、検索フィールドにpeerと入力すると出てくる、 AllowUpdateAddressSpaceInPeeredVnets を有効化する。下図ではすでに登録済み(有効化)されているが、何もしていなければNot registered (未登録)になっているはず。

これでおしまい。
テスト
すでに172.16/16と172.17/16のアドレス空間は設定済みで、ピアリング済みという以下のようなテスト用VNetを用意した。この状態から、172.19/16を追加する。

(1) VNet-AでIPアドレス空間を追加し、【Save】(保存)をクリック。する。なお、追加すると以下のような警告が出る。
Updating the address space of a virtual network that has peers will cause the peered virtual networks to not be able to connect to this new address space until you perform a sync operation on the peerings. You can sync the peered virtual networks in the peerings tab, but requires you have contributor permissions on the peered virtual networks.
(ピアがある仮想ネットワークのアドレス空間を更新すると、ピアリングで同期操作が実行されるまで、仮想ネットワークはこの新しいアドレス空間に接続できなくなります。[ピアリング] タブでは、ピア接続された仮想ネットワークを同期することができますが、そのピア接続された仮想ネットワークに対する共同作成者のアクセス許可を持っている必要があります)

(2) Azure PortalのVNetのページ > Settings (設定) > Peerings (ピアリング) を開いて同期する。この同期はリモート同期(VNet-AからVNet-Bへの同期)、ローカル同期(VNet-Bでの同期)の2種類ある。下図はVNet-Aから見た場合。

VNet-Bから見ると、以下のよう。

この同期では以下のようなことを実施している。
- VNet-A側:リモート(VNet-B)に対して追加したIPアドレス空間の伝播
- VNet-B側:同期されてきたIPアドレス空間をローカル(VNet-B)のルーティング情報に追加・更新

【リモート同期】
ピアリング名(今回の場合だとVNetA-VNetB)をクリックすると左図のような画面が現れるので、Resync(再同期)をクリックするとリモート同期を実行できる。リモート同期を先に実行すると、ローカル同期(VNet-B側)を明示的に実行しなければならない。

【ローカル同期】
ピアリング名(今回の場合だとVNetB-VNetA)をクリックすると左図のような画面が現れるので、Resync(再同期)をクリックすると、リモート同期後ローカル同期が走る。そのため、ローカル同期を実行すると、リモート同期は明示的に実施しなくてもよい。
あとは、【Save】(保存)をクリックして反映させればOK。これで逐一ピアリング解除&再ピアリングの悪夢から解放される。