Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

AzureとOCIをS2S VPNでつないでみた (Windows Server RRAS)

AzureとOCIを接続するために、Azureのサイト間(S2S) VPNと、OCI上に立てたWindows ServerのRouting and Remote Access Service (RRAS)を使ってみました。
ただし、Azure VM上ではRRASをサポートしていないことを明示していますので、この構成もサポートされない可能性があることにご注意ください。

構成図

Diagram.png

パフォーマンス

[azureuser@Azure-Linux ~]$ ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=63 time=10.9 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=63 time=10.4 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=5 ttl=63 time=10.5 ms
64 bytes from 10.0.1.2: icmp_seq=6 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=7 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=8 ttl=63 time=10.8 ms
64 bytes from 10.0.1.2: icmp_seq=9 ttl=63 time=10.9 ms
64 bytes from 10.0.1.2: icmp_seq=10 ttl=63 time=11.1 ms
64 bytes from 10.0.1.2: icmp_seq=11 ttl=63 time=10.8 ms
64 bytes from 10.0.1.2: icmp_seq=12 ttl=63 time=10.8 ms
^C
--- 10.0.1.2 ping statistics ---
12 packets transmitted, 12 received, 0% packet loss, time 11017ms
rtt min/avg/max/mdev = 10.454/10.796/11.132/0.179 ms
[azureuser@Azure-Linux ~]$
  • 1本計測
[azureuser@Azure-Linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[  4] local 192.168.0.4 port 54122 connected to 10.0.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  13.8 MBytes   116 Mbits/sec    0    825 KBytes
[  4]   1.00-2.00   sec  15.3 MBytes   128 Mbits/sec    9    680 KBytes
[  4]   2.00-3.00   sec  15.5 MBytes   130 Mbits/sec    0    760 KBytes
[  4]   3.00-4.00   sec  13.7 MBytes   115 Mbits/sec    0    816 KBytes
[  4]   4.00-5.00   sec  14.5 MBytes   122 Mbits/sec   34    616 KBytes
[  4]   5.00-6.00   sec  15.3 MBytes   128 Mbits/sec    0    654 KBytes
[  4]   6.00-7.00   sec  8.73 MBytes  73.2 Mbits/sec    0    679 KBytes
[  4]   7.00-8.00   sec  16.1 MBytes   135 Mbits/sec    0    694 KBytes
[  4]   8.00-9.00   sec  15.9 MBytes   133 Mbits/sec    0    699 KBytes
[  4]   9.00-10.00  sec  14.7 MBytes   123 Mbits/sec    0    700 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   144 MBytes   120 Mbits/sec   43             sender
[  4]   0.00-10.00  sec   141 MBytes   119 Mbits/sec                  receiver

iperf Done.
[azureuser@Azure-Linux ~]$
  • 2本同時計測
[azureuser@Azure-Linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[  4] local 192.168.0.4 port 35698 connected to 10.0.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  6.49 MBytes  54.4 Mbits/sec    0    392 KBytes
[  4]   1.00-2.00   sec  7.14 MBytes  59.9 Mbits/sec    2    659 KBytes
[  4]   2.00-3.00   sec  4.66 MBytes  39.1 Mbits/sec    0    662 KBytes
[  4]   3.00-4.00   sec  4.78 MBytes  40.1 Mbits/sec    0    667 KBytes
[  4]   4.00-5.00   sec  4.84 MBytes  40.6 Mbits/sec    3    668 KBytes
[  4]   5.00-6.00   sec  3.66 MBytes  30.7 Mbits/sec    3    477 KBytes
[  4]   6.00-7.00   sec  2.48 MBytes  20.8 Mbits/sec    1    533 KBytes
[  4]   7.00-8.00   sec  3.95 MBytes  33.2 Mbits/sec    1    537 KBytes
[  4]   8.00-9.00   sec  2.54 MBytes  21.3 Mbits/sec    0    540 KBytes
[  4]   9.00-10.00  sec  4.07 MBytes  34.1 Mbits/sec    1    541 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  44.6 MBytes  37.4 Mbits/sec   11             sender
[  4]   0.00-10.00  sec  43.1 MBytes  36.1 Mbits/sec                  receiver

iperf Done.
[azureuser@Azure-Linux ~]$
[azureuser@Azure-Linux2 ~]$ iperf3 -c 10.0.1.3
Connecting to host 10.0.1.3, port 5201
[  4] local 192.168.0.5 port 50236 connected to 10.0.1.3 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.71 MBytes  22.7 Mbits/sec    0    215 KBytes
[  4]   1.00-2.00   sec  3.83 MBytes  32.2 Mbits/sec    0    374 KBytes
[  4]   2.00-3.00   sec  4.01 MBytes  33.6 Mbits/sec   19    306 KBytes
[  4]   3.00-4.00   sec  3.01 MBytes  25.2 Mbits/sec    0    342 KBytes
[  4]   4.00-5.00   sec  3.83 MBytes  32.2 Mbits/sec    1    356 KBytes
[  4]   5.00-6.00   sec  5.31 MBytes  44.5 Mbits/sec    0    366 KBytes
[  4]   6.00-7.00   sec  4.78 MBytes  40.1 Mbits/sec    1    373 KBytes
[  4]   7.00-8.00   sec  5.84 MBytes  49.0 Mbits/sec    0    382 KBytes
[  4]   8.00-9.00   sec  5.37 MBytes  45.0 Mbits/sec    0    392 KBytes
[  4]   9.00-10.00  sec  5.60 MBytes  47.0 Mbits/sec    0    401 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  44.3 MBytes  37.2 Mbits/sec   21             sender
[  4]   0.00-10.00  sec  43.4 MBytes  36.4 Mbits/sec                  receiver

iperf Done.
[azureuser@Azure-Linux2 ~]$
  • VPNを通さないパブリック同士
[azureuser@Azure-Linux2 ~]$ iperf3 -c 168.138.42.98
Connecting to host 168.138.42.98, port 5201
[  4] local 192.168.0.5 port 38456 connected to 168.138.42.98 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  86.6 MBytes   726 Mbits/sec  990   1.19 MBytes
[  4]   1.00-2.00   sec  52.5 MBytes   440 Mbits/sec  287    482 KBytes
[  4]   2.00-3.00   sec  57.5 MBytes   482 Mbits/sec    0    567 KBytes
[  4]   3.00-4.00   sec  66.2 MBytes   556 Mbits/sec    0    650 KBytes
[  4]   4.00-5.00   sec  58.8 MBytes   493 Mbits/sec  113    530 KBytes
[  4]   5.00-6.00   sec  61.2 MBytes   514 Mbits/sec    0    614 KBytes
[  4]   6.00-7.00   sec  51.2 MBytes   430 Mbits/sec   48    505 KBytes
[  4]   7.00-8.00   sec  58.8 MBytes   493 Mbits/sec    0    587 KBytes
[  4]   8.00-9.00   sec  67.5 MBytes   566 Mbits/sec   66    469 KBytes
[  4]   9.00-10.00  sec  53.8 MBytes   451 Mbits/sec    0    549 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   614 MBytes   515 Mbits/sec  1504             sender
[  4]   0.00-10.00  sec   611 MBytes   513 Mbits/sec                  receiver

iperf Done.
[azureuser@Azure-Linux2 ~]$

計測は、2020年11月15日(日) 午後のものです。

セットアップ

Azure

Azure S2S VPN Gateway

Docsの手順に従ってAzure側をセットアップします。
VPN GatewayのSKUで帯域幅が決まるので、今回は1.25 GbpsのGeneration2 VpnGw2を選択しましたが、上のパフォーマンスを見るとVpnGw1でもよいかもしれません。
ローカルネットワークゲートウェイの作成はOCIのパートを作成してから行います。

OCI

VCN

今回は簡単に、インターネット接続性を持つVCNをウイザードで作成します。
VCN1.PNG

Windows Server VM

Windows Server 2016で作成します。デフォルトのシェイプを選択します。
OCI-VM1.PNG

2020年11月15日現在、Windows Server 2019の"Windows-Server-2019-Standard-Edition-VM-E3-2020.10.20-0"をイメージを使うと、RRASの設定でエラーとなることが多いようなので、Windows Server 2016を今回は使っています。

ネットワークはパブリックサブネットに接続します。
リモートデスクトップでつなぐため、パブリックサブネットのセキュリティリスト、イングレスにRDPを追加します。この時、接続元として利用しているIPアドレスを指定するなどしてもよいと思います。
OCI-VM2.PNG
リモートデスクトップで接続したら、パスワードを設定し、ネットワーク探索はNoで設定します。

RRAS

インストール

サーバーマネージャーからAdd Roles and Featuresを起動します。
OCI-RRAS1.PNG
OCI-RRAS2.PNG
OCI-RRAS3.PNG
OCI-RRAS4.PNG

設定

サーバーマネージャーからRouting and Remote Accessを起動します。
OCI-RRAS5.PNG
OCI-RRAS6.PNG
OCI-RRAS7.PNG
OCI-RRAS8.PNG
OCI-RRAS9.PNG
OCI-RRAS10.PNG
OCI-RRAS11.PNG
OCI-RRAS12.PNG
OCI-RRAS13.PNG
OCI-RRAS14.PNG
OCI-RRAS15.PNG
OCI-RRAS16.PNG
OCI-RRAS17.PNG
OCI-RRAS18.PNG
OCI-RRAS19.PNG
OCI-RRAS20.PNG
OCI-RRAS21.PNG
Azure VNetのアドレス空間
OCI-RRAS22.PNG
OCI-RRAS23.PNG

ルーティング設定

仮想NICでのパケット転送許可 (自分のものでないパケットも送受信可能にする)

OCI-VM3.PNG

ルート表

パブリックサブネット

OCI-Route1.PNG

プライベートサブネット

OCI-Route2.PNG

セキュリティリスト

パブリックサブネット

OCI-Ingress1.png

プライベートサブネット

OCI-Ingress2.PNG

Azure

接続の作成

Docsの手順に従ってローカルネットワークゲートウェイ、およびVPN接続を作成します。接続するIPアドレスにOCI側に立てたWindows Server RRASのパブリックIPアドレス、アドレス空間にOCIのVCNのネットワークを指定します。
接続を作成する際、共有キーを指定して、IKEv2であることを確認して作成します。
Azure-Connect1.PNG

OCI

RRAS

接続設定

OCI-RRAS24.PNG
OCI-RRAS24-2.PNG
OCI-RRAS25.PNG

接続

OCI-RRAS26.PNG

接続確認

問題なくつながると、下記のようにステータスがConnectedに替わります。
OCI-RRAS27.PNG

Azure

接続確認

ステータスのアップデートに少し時間がかかります。
Azure-Connect2.PNG

測定用VM

Azure、OCIそれぞれにOracle LinuxのVMを立てて、こちらの手順で計測環境をセットアップします。

考察

パフォーマンス

Azure VPN Gatewayのパフォーマンスについては、Docsに解説があります。
これによると、IPsec 暗号化と整合性のアルゴリズムがスループットに大きく影響を与えていることがわかります。
Windows Server RRASのポリシーを調べてみると、下記のものが使われているようです。(これ以外を指定すると、RRASがポリシーエラーでつながりません)
Azure-IPSec1.PNG
iperf3を実行中のRRASのCPU
OCI-RRAS28.PNG

設定

OCIでIPSecパケットのイングレスの設定をしなくてもつながっています。

takeokams
マイクロソフトのマーケティング部門に所属していますが、ここでの記事は個人的なものです。 投稿内容は公式なサポートを表明するものでもなく、ライセンスを許諾するものでもありませんが、個人的に実施したことを利用の参考となればと思い、個人的に集めた情報とともに公開するものです。 正確を期すよう最大限の努力はしていますが、最新情報は変わっているかもしれないので、利用はご自身の責任において行ってください。
microsoft
マイクロソフトのメンバーが最新の技術情報をお届けします。Twitterアカウント(@msdevjp)やYouTubeチャンネル「クラウドデベロッパーちゃんねる」も運用中です。
https://azure.microsoft.com/ja-jp/developer/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away