Azure Virtual Network Peeringでメッシュ構成ができるか試してみた

Azure Virtual Network Peeringを使用することで、仮想ネットワーク同士を接続することができます。これによって、異なる仮想ネットワーク間でもプライベートIPで通信させることが可能ですが、複数の仮想ネットワークをメッシュ状にした場合に通信可能かを試してみました。
以下のようなイメージです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/b9a569be-a5fe-d5b8-62a0-671d108a60e6.png)

このときのシステムルートテーブルも見ていきましょう。

# 環境準備
イメージ図のようにVirtual NetworkとVMを準備します。
ここの手順は割愛します。

# デフォルトシステムルート確認
ピアリングの前にデフォルトシステムルートを確認しておきます。

* 仮想マシン画面で[ネットワーク]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/53582640-e0cd-cee2-4a79-12bc901fbd98.png)

* ネットワークインターフェースを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/8070002e-e3cd-00d9-ae5b-d39f236dae01.png)

* [有効なルート]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/14977321-d293-a909-06c0-efd425061ea3.png)

* これがデフォルトのシステムルートテーブルです。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/f59a1889-aa4e-fe51-b3b3-c4e282bbd3b7.png)

# Virtual Network Peering
* まずはvnet1とvnet2をピアリングします。仮想ネットワーク画面より、[ピアリング]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/6b4ffc4c-ac39-a994-83c4-1c67dcf3f3a4.png)

* [追加]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/3ae0cf02-70cd-b891-291b-741d69bb106c.png)

* ピアリングの名称を入力します。ここは適当でよいです。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/ad8d2bf7-cfe7-44ba-10d1-96ddea23adef.png)

* まずはvnet1とvnet2をピアリングするため、vnet2の情報を入力します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/fcacd1e6-4ab4-df63-04b0-f03e1603b2e5.png)

* 残りの設定はデフォルトのままピアリングを追加します。

* 以下のようにピアリングが追加されればOKです。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/76c8d604-ea0f-f098-9e6b-a60eaf59f863.png)

# 動作確認
* vnet1からvnet2へ、プライベートIPでpingが届くか確認しましょう。

```
# ping 10.1.2.4
PING 10.1.2.4 (10.1.2.4) 56(84) bytes of data.
64 bytes from 10.1.2.4: icmp_seq=1 ttl=64 time=0.839 ms
64 bytes from 10.1.2.4: icmp_seq=2 ttl=64 time=1.00 ms
```

* 問題ないですね。

# システムルート確認
* 10.1.2.0/24への宛先がNextHop VNETピアリングで追加されていることが分かります。これによってvnet1からvnet2への通信がVNETピアリングを向いていることが分かりますね。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/4e195e2b-ff2e-7eb3-c832-8a09637fc496.png)

# 同じ要領で残りも設定していく

こんな感じで追加しました。

* vnet1のシステムルート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/c1dfcdac-c264-af0d-934d-68b27125897b.png)

* vnet2のシステムルート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/6a5c0e18-2e59-3f69-5f37-5c8eaaab108b.png)

* vnet3のシステムルート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/7a1a9c25-b024-36c9-235a-effa9c1040fb.png)

* vnet4のシステムルート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/3730268b-01ff-881d-e545-afba4f8f906a.png)

* 全てping通信可能でした

```
# ping 10.1.2.4
PING 10.1.2.4 (10.1.2.4) 56(84) bytes of data.
64 bytes from 10.1.2.4: icmp_seq=1 ttl=64 time=0.990 ms

# ping 10.1.3.4
PING 10.1.3.4 (10.1.3.4) 56(84) bytes of data.
64 bytes from 10.1.3.4: icmp_seq=1 ttl=64 time=2.25 ms

# ping 10.1.4.4
PING 10.1.4.4 (10.1.4.4) 56(84) bytes of data.
64 bytes from 10.1.4.4: icmp_seq=1 ttl=64 time
```

ちなみにピアリングは異なるサブスクリプション、異なるADテナント間でも可能です。
以前記事を書いたのでご参考まで。

[異なるサブスクリプション、異なるADテナントでvNet Peering](https://qiita.com/shingo_kawahara/items/9cfd86237e745c65ec11)