Azure Vnet ピアリング

スポンサーリンク

vnet peeringを使用すると、Azureの仮想ネットワーク同士を接続できます。このページではvnet peeringの使い方を説明します。

前提

公式ドキュメント

参考になる公式ドキュメントを以下に示します。

構成図

以下の構成で動作確認をします。

構成図

事前設定

仮想ネットワークと仮想マシン

以下、リソースグループを作成します。

az group create --name MyResourceGroup --location japaneast

仮想ネットワークを3つ作成し、それぞれに仮想マシンを1つ配置します。

1つ目の仮想ネットワークの設定は以下の通りです。

az network vnet create \
  --resource-group MyResourceGroup \
  --name Vnet16 \
  --address-prefix 172.16.0.0/16

az network vnet subnet create \
  --resource-group MyResourceGroup \
  --name Subnet1601 \
  --vnet-name Vnet16 \
  --address-prefixes 172.16.1.0/24

az vm create \
  --resource-group MyResourceGroup \
  --name linux010 \
  --image UbuntuLTS \
  --size Standard_B1s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/authorized_keys \
  --vnet-name Vnet16 \
  --subnet Subnet1601 \
  --private-ip-address 172.16.1.10

2つ目の仮想ネットワークの設定は以下の通りです。

az network vnet create \
  --resource-group MyResourceGroup \
  --name Vnet17 \
  --address-prefix 172.17.0.0/16

az network vnet subnet create \
  --resource-group MyResourceGroup \
  --name Subnet1701 \
  --vnet-name Vnet17 \
  --address-prefixes 172.17.1.0/24

az vm create \
  --resource-group MyResourceGroup \
  --name linux020 \
  --image UbuntuLTS \
  --size Standard_B1s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/authorized_keys \
  --vnet-name Vnet17 \
  --subnet Subnet1701 \
  --private-ip-address 172.17.1.20

3つ目の仮想ネットワークの設定は以下の通りです。

az network vnet create \
  --resource-group MyResourceGroup \
  --name Vnet18 \
  --address-prefix 172.18.0.0/16

az network vnet subnet create \
  --resource-group MyResourceGroup \
  --name Subnet1801 \
  --vnet-name Vnet18 \
  --address-prefixes 172.18.1.0/24

az vm create \
  --resource-group MyResourceGroup \
  --name linux030 \
  --image UbuntuLTS \
  --size Standard_B1s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/authorized_keys \
  --vnet-name Vnet18 \
  --subnet Subnet1801 \
  --private-ip-address 172.18.1.30

サイト間VPN

オンプレミスとのサイト間VPNを設定します。具体的な設定値の意味は「Azure サイト間接続(Site to Site VPN) static route編」を参照ください。

この検証シナリオは、オンプレミス拠点のprefixがどのようにadvertiseされるかを観察するのみですので、実際のオンプレミス拠点とIPsecを確立する必要はありません。オンプレミス側の機器の準備も必要ありません。もし、pingなどの疎通確認をしたい方は実際にIPsecを確立すると良いでしょう。

# オンプレミス側のパブリックIPアドレスは適宜変更ください
# もし、実際にIPsecの確立を試みないならば、LOCAL_GATEWA_ADDRは任意の値で差し支えございません。
LOCAL_GATEWAY_ADDR="20.210.140.4"

az network vnet subnet create \
    --resource-group MyResourceGroup \
    --name GatewaySubnet \
    --vnet-name Vnet16 \
    --address-prefixes 172.16.0.0/27

az network public-ip create \
  --resource-group MyResourceGroup \
  --name VpnGwPublicIp \
  --sku Standard

az network vnet-gateway create \
  --name VnetGw \
  --public-ip-address VpnGwPublicIp \
  --resource-group MyResourceGroup \
  --vnet Vnet16 \
  --gateway-type Vpn \
  --vpn-type RouteBased \
  --sku VpnGw1 \
  --no-wait

az network local-gateway create \
  --gateway-ip-address ${LOCAL_GATEWAY_ADDR} \
  --name Site01 \
  --resource-group MyResourceGroup \
  --local-address-prefixes 172.20.0.0/16

az network vpn-connection create \
  --name ConnectToSite01 \
  --resource-group MyResourceGroup \
  --vnet-gateway1 VnetGw  \
  --shared-key P@ssw0rd1234 \
  --local-gateway2 Site01

Vnet peeringの設定

書式

Vnet peeringは以下のようなコマンドで、どの仮想ネットワークを接続するかを指定します。

異なるサブスクリプション間での接続も可能です。異なるサブスクリプションで接続する場合はremote-vnetに対向仮想ネットワークのIDを指定します。

az network vnet peering create \
  --name <ピア名> \
  --resource-group <リソースグループ名> \
  --vnet-name <自身の仮想ネットワーク名> \
  --remote-vnet <対向の仮想ネットワーク名> \
  <転送可否を指定する各種オプション>

Vnet peeringは単に接続するだけではなく、転送の可否を指定する事ができます。転送可否を指定するオプションは以下の通りです。

オプション 意味
allow-forwarded-traffic 対向仮想ネットワークへの転送を許可する
allow-vnet-access 対向仮想ネットワークからの転送を許可する
allow-gateway-transit 対向仮想ネットワークが自身の仮想ネットワークゲートウェイを使用するのを許可する。
use-remote-gateways 対向の仮想ネットワークゲートウェイを使用する。なお、対向でallow-gateway-transitの指定が必要である事に注意する。

vnet16とvnet17との間のピア設定

vnet16に対して以下のピアを設定します。

az network vnet peering create \
  --name peer-vnet16-vnet17 \
  --resource-group MyResourceGroup \
  --vnet-name vnet16 \
  --remote-vnet vnet17 \
  --allow-forwarded-traffic \
  --allow-vnet-access \
  --allow-gateway-transit

ピアは片方の仮想ネットワークに設定してもパケットは転送されません。双方の仮想ネットワークに設定が必要です。vnet17に対して以下のピアを設定します。

az network vnet peering create \
  --name peer-vnet17-vnet16 \
  --resource-group MyResourceGroup \
  --vnet-name vnet17 \
  --remote-vnet vnet16 \
  --allow-forwarded-traffic \
  --allow-vnet-access \
  --use-remote-gateways

vnet16とvnet18との間のピア設定

vnet16に対して以下のピアを設定します。

az network vnet peering create \
  --name peer-vnet16-vnet18 \
  --resource-group MyResourceGroup \
  --vnet-name vnet16 \
  --remote-vnet vnet18 \
  --allow-forwarded-traffic \
  --allow-vnet-access \
  --allow-gateway-transit

vnet18に対して以下のピアを設定します。

az network vnet peering create \
  --name peer-vnet18-vnet16 \
  --resource-group MyResourceGroup \
  --vnet-name vnet18 \
  --remote-vnet vnet16 \
  --allow-forwarded-traffic \
  --allow-vnet-access \
  --use-remote-gateways

Vnet peeringの動作確認

有効なルート

vnet peeringを設定し適切にprefixがadvertiseされているかどうかを確認します。どのprefixがadvertiseされたかは「ネットワークインターフェース」「有効なルート」画面で確認できます。

vnet16に属するlinux010の有効なルートを確認します。vnet17(172.17.0.0/16)とvnet18(172.16.0.0/16)のprefixを認識している事が分かります。

有効なルート確認 01

vnet17に属するlinux020の有効なルートを確認します。vnet16(172.16.0.0/16)とオンプレミス拠点(172.20.0.0/16)のprefixを認識している事が分かります。一方、vnet18(172.18.0.0/16)のprefixは認識していません。

有効なルート確認 02

vnet18に属するlinux030の有効なルートを確認します。vnet16(172.16.0.0/16)とオンプレミス拠点(172.20.0.0/16)のprefixを認識している事が分かります。一方、vnet17(172.17.0.0/16)のprefixは認識していません。

有効なルート確認 03

疎通確認

vnet16(172.16.1.10)からvnet17(172.17.1.20)へ、vnet16(172.16.1.10)からvnet18(172.18.1.30)への疎通を確認します。

azureuser@linux010:~$ ping 172.17.1.20 -c 3
PING 172.17.1.20 (172.17.1.20) 56(84) bytes of data.
64 bytes from 172.17.1.20: icmp_seq=1 ttl=64 time=2.28 ms
64 bytes from 172.17.1.20: icmp_seq=2 ttl=64 time=1.13 ms
64 bytes from 172.17.1.20: icmp_seq=3 ttl=64 time=1.20 ms

--- 172.17.1.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.138/1.543/2.288/0.528 ms
azureuser@linux010:~$ 
azureuser@linux010:~$ 
azureuser@linux010:~$ ping 172.18.1.30 -c 3
PING 172.18.1.30 (172.18.1.30) 56(84) bytes of data.
64 bytes from 172.18.1.30: icmp_seq=1 ttl=64 time=2.03 ms
64 bytes from 172.18.1.30: icmp_seq=2 ttl=64 time=2.26 ms
64 bytes from 172.18.1.30: icmp_seq=3 ttl=64 time=1.37 ms

--- 172.18.1.30 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.377/1.891/2.261/0.374 ms
azureuser@linux010:~$ 

vnet17(172.17.1.20)からvnet16(172.16.1.10)への疎通を確認します。vnet17(172.17.1.20)からvnet18(172.18.1.30)への疎通できない事を確認します。

azureuser@linux020:~$ ping 172.16.1.10 -c 3
PING 172.16.1.10 (172.16.1.10) 56(84) bytes of data.
64 bytes from 172.16.1.10: icmp_seq=1 ttl=64 time=1.83 ms
64 bytes from 172.16.1.10: icmp_seq=2 ttl=64 time=1.61 ms
64 bytes from 172.16.1.10: icmp_seq=3 ttl=64 time=1.22 ms

--- 172.16.1.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.224/1.555/1.831/0.252 ms
azureuser@linux020:~$ 
azureuser@linux020:~$ 
azureuser@linux020:~$ ping 172.18.1.30 -c 3
PING 172.18.1.30 (172.18.1.30) 56(84) bytes of data.

--- 172.18.1.30 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2031ms

azureuser@linux020:~$ 
タイトルとURLをコピーしました