AzureとOCIの間を接続するにはExpressRouteとFastConnectを使ったInterconnectがまず想起されますが、西日本やバックアップ用途を想定して、サイト間(サイト対サイト:S2S)のVPN環境を各クラウドで用意されているサービスを使って構築してみました。
結果
つながるけれども使えない
どういうこと?
Azure側はVPNゲートウェイ、OCI側はVPN接続を、IKEv2で設定すればつながります。
OCIはウィザードで作ると2つのトンネルを用意するので、Azureはアクティブ/スタンバイの仮想ネットワークゲートウェイから2本接続しています。
AzureのVMからルーティングテーブルを見ると、下記のようになります。
pingを打ってみると、疎通します。今回はAzureは西日本リージョン、OCIは東京リージョンについないでいます。
しかし、接続から1時間経つとIPSecが切れてしまい、疎通しなくなります。
なぜ切れる?
どうやら、それぞれのIPSecで使えるパラメータが異なるためのようです。
具体的には、サポートされるPFS(Perfect Forward Security)が異なっていました。
サポートされるPFSグループ
RouteBased
クラウド | サポートされるPFSグループ |
---|---|
Azure | 1, 2, 14, 24, なし |
OCI | 5 |
出典
PFSの簡易表
PFSグループ | 内容 | Azure表記 |
---|---|---|
1 | 768-bit, DH | PFS1 |
2 | 1024-bit, DH | PFS2 |
5 | 1536-bit, DH | |
14 | 2048-bit, DH | PFS2048 |
19 | 256-bit, DH (Elliptic Curve) | ECP256 |
20 | 384-bit, DH (Elliptic Curve) | ECP384 |
24 | 2048-bit, DH/DSA | PFS24 |
追加情報
解決策
3つぐらい方法があるようです。
- サポートにSRを出す
- Libreswanを使う
- Windows Server RRASを使う
サポートにSRを出す
Stack OverflowにVPN between Oracle Cloud and Azureという投稿があり、オラクルにて対応してもらったようです。これが通常できることなのかどうかはわかりませんので、個別にサポートにSRを出して確認する必要があると思われますが、ここで紹介したクラウド側のサービスで構成できる可能性があります。
I reached out to Oracle and they managed to change the setting for Perfect Forward Secrecy (PFS) to support the preferred Azure PFS setting (PFS 2). This stabilized the connection.
Libreswanを使う
ここで紹介した構成ではなく、オラクルでは、その他のクラウドへのアクセスとしてLibreswanを使った構成をこちらで公開しています。そして、実際にAzureとOCIを接続した例もこちらで公開されておられる方がいらっしゃいます。
この構成の場合は、パフォーマンスや運用を事前にしっかり確認しておく必要があると思われます。
Windows Server RRASを使う
Windows ServerにRouting and Remote Access Service (RRAS)という機能があり、こちらをネットワーク仮想アプライアンスとしてOCIのVM内に構築して、IPSecのVPNを張ることができます。
こちらに記事を書いておきました。