Microsoft AzureとSEIL/x86 Ayameでクラウド間をVPN接続してみました
2024年04月08日 月曜日
CONTENTS
はじめに
はじめまして。クラウドソリューション部の瀬川です。2023年にIIJに入社し、クラウドソリューションの開発や、クラウド導入力の向上に関する活動などに携わっています。
本記事ではSEIL/x86 Ayame、Azure間のSite to Site VPN接続の一例をご紹介いたします。SEIL/x86 Ayameは、VMware、KVM、Hyper-Vなど主要な仮想環境をサポートする高機能なソフトウェアルータです。今回はAzureと対向する環境をIIJ GIOとしておりますが、オンプレミスやAWS(マーケットプレイス)などでも類似の設定を投入してVPN接続することが可能ですので、ご参考になれば幸いです。
構成図
IIJ GIOインフラストラクチャーP2プライベートリソース上に構築したSEIL/x86 AyameとAzure VPN Gatewayを接続して疎通確認を行います。
準備・作成した主要な構成要素
IIJ GIOインフラストラクチャーP2 プライベートリソース
- 仮想マシン2台(内1台は、SEIL/x86 Ayame)
- グローバルIPアドレス
- SEIL/x86 Ayameのライセンス(トライアル版)
Azure
- 仮想マシン1台
- 仮想ネットワークゲートウェイ
- グローバルIPアドレス
- Azure Bastion
SEIL/x86 Ayameのライセンスについては以下のリンクより購入・取得いただけます。
- トライアル(無償)、スタンダード、エンタープライズ
https://www.seil.jp/product/x86ayame.html
設定から疎通確認まで
Azure側のリソース作成
※仮想ネットワークや疎通確認用の仮想マシンなどは、すでに作成されている前提で作業を進めていきます。
仮想ネットワークゲートウェイ(VPNゲートウェイ)
まずはじめに、最も時間のかかる仮想ネットワークゲートウェイの作成を実施します。(約30分)
※今回はBGPを利用するため、VpnGw1以上を選択する必要があります。
2023年7月時点では、アクティブ/アクティブ モードの有効化がデフォルトで有効ですが、本記事では無効化します。
パブリックIPアドレスは既存のものが無い場合、新規作成をご選択ください。
ローカルネットワークゲートウェイの作成
続いてローカルネットワークゲートウェイにてGIOのアドレス空間を定義します。
ここではSEIL/x86 AyameにアタッチされているグローバルIPアドレスを指定します。
詳細設定にてBGPを設定します。
ASNについては、仮想ネットワークゲートウェイと重複しないプライベート ASN (64512~65534 の範囲)を使用します。
BGPピアのIPアドレスとしてSEIL/x86 AyameのプライベートIPアドレスを指定します。
Site to Site接続の作成
ローカルネットワークゲートウェイの接続の作成にてサイト対サイトの接続設定を作成します。
今回共有キーはAzure側で自動生成されるものを使用します。
※検証用途の短期利用を除いてデフォルトのPSKは使用しないでください。
IKEフェーズ1、IKEフェーズ1についてデフォルトから設定を変更しています。
これは、SEIL/x86 Ayameが採用しているデフォルト設定とAzureが受け入れているデフォルト設定が異なるため明示的に設定する必要があります。
SEIL/x86 Ayameへの設定投入
SEIL/x86 Ayameに設定を投入します。例示する設定はfilterやnat設定等を除いています。
#SEILグローバルIP:192.0.2.1 #SEILプライベートIP:192.168.120.254 #Azure VPN GW グローバルIP:198.51.100.1 #Azure VPN GW プライベートIP:10.0.250.5 interface.ge1.ipv4.address:192.0.2.1 interface.ge2.ipv4.address:192.168.120.254/24 interface.ipsec12.ike.v2.keepalive:enable interface.ipsec12.ike.v2.my-identifier.type:address interface.ipsec12.ike.v2.peers-identifier.type:address interface.ipsec12.ike.v2.proposal.child-sa.encryption.0.algorithm:aes256 interface.ipsec12.ike.v2.proposal.child-sa.integrity.0.algorithm:hmac-sha1 interface.ipsec12.ike.v2.proposal.child-sa.lifetime-of-time:1h interface.ipsec12.ike.v2.proposal.ike-sa.dh-group.0.algorithm:modp1024 interface.ipsec12.ike.v2.proposal.ike-sa.encryption.0.algorithm:aes256 interface.ipsec12.ike.v2.proposal.ike-sa.integrity.0.algorithm:hmac-sha1 interface.ipsec12.ike.v2.proposal.ike-sa.lifetime:1h interface.ipsec12.ike.v2.proposal.ike-sa.prf.0.algorithm:hmac-sha1 interface.ipsec12.ike.version:2 interface.ipsec12.ipv4.address:192.168.120.254/32 interface.ipsec12.ipv4.remote:10.0.250.5 interface.ipsec12.ipv4.destination:198.51.100.1 interface.ipsec12.ipv4.source:192.0.2.1 interface.ipsec12.ipv4.tcp-mss:1350 interface.ipsec12.preshared-key:##Admin20240222 bgp.my-as-number:65534 bgp.router-id:192.0.2.1 bgp.neighbor.100.address:10.0.250.5 bgp.neighbor.100.remote-as:65515 bgp.neighbor.100.filter.in.100.action:pass bgp.neighbor.100.filter.in.100.match.prefix:0.0.0.0/0 bgp.neighbor.100.filter.in.100.set.metric:100 bgp.neighbor.100.hold-timer: 30 bgp.ipv4.network.100.prefix: 192.168.120.0/24
疎通確認
エラーなく設定の投入が完了しましたら、疎通確認を行っていきます。
SEIL/x86 Ayame側
- IKEv2
- IPsec
- ルートテーブル
Azure側
BGPでルートが広報されていることを確認します。
Azure Bastion経由でSSH接続
疎通確認を実施するため、SSHおよびPingベースでの通信を行ってみます。
Azure BastionからAzure仮想マシンにSSH接続を実施し、そこからIIJ GIO側の仮想マシンに多段SSH接続をします。
その後IIJ GIO側からAzureに向かってPingを送信して戻りの通信についても確認してみます。
以上で疎通まで確認できました。
おわりに
IIJへ入社して2ヶ月目にして、初めてSEIL/x86 Ayameに取り組む機会が訪れ、それがこの記事を執筆するきっかけとなりました。クラウドソリューション部としての業務では、SEIL/x86 Ayameに触れる機会は少ないので貴重な経験が出来ました。
Azure以外にも、AWSやGoogle CloudにVPN接続する流れをご紹介した記事も投稿しておりますので、そちらもお読みいただけると嬉しいです。
- Amazon Web ServicesとSEIL/x86 Ayameでクラウド間をVPN接続してみました
- Google Cloud PlatformとSEIL/x86 Ayameでクラウド間をVPN接続してみました
他にもSEIL/x86 Ayame関連の記事があります。ご興味がございましたらあわせてご覧ください。