Google Cloud PlatformとSEIL/x86 Ayameでクラウド間をVPN接続してみました
2024年04月08日 月曜日
CONTENTS
はじめに
はじめまして。クラウドソリューション部の瀬川です。2023年にIIJに入社し、クラウドソリューションの開発や、クラウド導入力の向上に関する活動などに携わっています。
本記事ではSEIL/x86 Ayame、Google Cloud間のSite to Site VPN接続の一例をご紹介いたします。SEIL/x86 Ayameは、VMware、KVM、Hyper-Vなど主要な仮想環境をサポートする高機能なソフトウェアルータです。今回はGoogle Cloudと対向する環境をIIJ GIOとしておりますが、オンプレミスやAWS(マーケットプレイス)などでも類似の設定を投入してVPN接続することが可能ですので、ご参考になれば幸いです。
構成図
IIJ GIOインフラストラクチャーP2プライベートリソース上に構築したSEIL/x86 AyameとGoogle Cloudの高可用性Cloud VPNを接続して疎通確認を行います。
※今回ご紹介する構成はシングルトンネルでの接続となるため、Google Cloudのコンソールで以下の注意が表示されます。本来は冗長構成とする必要がありますので、その点をご留意いただけますと幸いです。
準備・作成した主要な構成要素
IIJ GIOインフラストラクチャーP2 プライベートリソース
- 仮想マシン2台(内1台は、SEIL/x86 Ayame)
- グローバルIPアドレス
- SEIL/x86 Ayameのライセンス(トライアル版)
Google Cloud
- 仮想マシン1台
SEIL/x86 Ayameのライセンスについては以下のリンクより購入・取得いただけます。
- トライアル(無償)、スタンダード、エンタープライズ
https://www.seil.jp/product/x86ayame.html
設定から疎通確認まで
Google Cloud側のリソース作成
※VPCや疎通確認用の仮想マシンなどは、すでに作成されている前提で作業を進めていきます。
VPN設定ウィザード
VPN設定ウィザードを使用してVPN関連のリソースを作成します。
まず初めにVPNの種類を選択します。シングルトンネルでの構成となりますがBGPを使用するため高可用性を選択します。
続いてゲートウェイを作成します。
VPNトンネルの追加を行います。ここで合わせてピアVPNゲートウェイを作成します。
インターフェースのIPアドレスにはSEIL/x86 AyameのグローバルIPアドレスを指定します。
続いてクラウドルーターを作成します。Google ASNはSEIL/x86 Ayameに設定するものと重複しないものを入力します。
※ASNについては基本的にプライベートASNの範囲を使用します。
前手順で作成したゲートウェイ、クラウドルーターを選択します。
事前共有キーについては念のためここでメモします。
続いてBGPセッションを作成します。
ピアASNはGoogle Cloudで禁止されていないかつGoogle ASNと重複しない範囲を入力します。
※ASNについては基本的にプライベートASNの範囲を使用します。
BGPセッションを作成後、構成を保存します。
最後に構成のダウンロードから設定ファイルをダウンロードします。
本記事ではJuniperの設定を参考に構成ファイルを作成するため、VenderとしてJuniperを選択します。
GIO側の設定
Configの作成
ダウンロードしたファイルを元にSEIL/x86 Ayameに投入するConfigを作成します。
また、今回はGoogle Cloudが指定する暗号化方式に従って設定します。Config中の暗号化方式とSEIL/x86 Ayameの暗号化方式の表記が若干異なるため以下に読み替えています。
Juniper → SEIL ----------------------------------------------------------------------------------- aes-256-cbc → aes256 hmac-sha-256-128 → hmac-sha256 group14 → modp2048 sha-256 → hmac-sha256
SEIL/x86 Ayameへの設定投入
最終的には以下の設定を投入します。例示する設定はfilterやnat設定等を除いています。
interface.ipsec100.ike.v2.proposal.child-sa.encryption.0.algorithm:aes256 interface.ipsec100.ike.v2.proposal.child-sa.integrity.0.algorithm:hmac-sha256 interface.ipsec100.ike.v2.proposal.child-sa.lifetime-of-time:1h interface.ipsec100.ike.v2.proposal.ike-sa.dh-group.0.algorithm:modp2048 interface.ipsec100.ike.v2.proposal.ike-sa.encryption.0.algorithm:aes256 interface.ipsec100.ike.v2.proposal.ike-sa.integrity.0.algorithm:hmac-sha256 interface.ipsec100.ike.v2.proposal.ike-sa.lifetime:8h interface.ipsec100.ike.v2.proposal.ike-sa.prf.0.algorithm:hmac-sha256 interface.ipsec100.ike.v2.keepalive:enable interface.ipsec100.ike.v2.my-identifier.type:address interface.ipsec100.ike.v2.peers-identifier.type:address interface.ipsec100.ike.version:2 interface.ipsec100.ipv4.address:169.254.212.198/30 interface.ipsec100.ipv4.destination:198.51.100.1 interface.ipsec100.ipv4.remote:169.254.212.197 interface.ipsec100.ipv4.source:192.0.2.1 interface.ipsec100.ipv4.tcp-mss:1360 interface.ipsec100.nat-traversal:force interface.ipsec100.preshared-key:/uSosawwRSxu9A0auZZ9Ye+E0xtE0KkU bgp.ipv4.network.100.prefix:192.168.120.0/24 bgp.my-as-number:65534 bgp.neighbor.110.address:169.254.212.197 bgp.neighbor.110.filter.in.100.action:pass bgp.neighbor.110.filter.in.100.match.prefix:0.0.0.0/0 bgp.neighbor.110.filter.in.100.set.metric:100 bgp.neighbor.110.hold-timer:30 bgp.neighbor.110.remote-as:64512 bgp.router-id:192.168.120.254
VPN接続の確認
ステータス確認
SEIL/x86 Ayameに設定を投入後、BGPセッションが確立しているか確認します。
Google Cloud側からの疎通確認
Cloud Consoleから仮想マシンに接続
Cloud Console経由で仮想マシンにSSH接続を実施します。
また、当該機能を利用するために必要なファイアウォールルールを事前に追加しています。
(35.235.240.0/20からのtcp:22通信を許可)
Google Cloudの仮想マシンからGIOの仮想マシンにPingを送信して疎通を確認します。
以下の通り、10.0.0.0/16のIP範囲から192.168.120.0/24の範囲に対して通信が成功しています。
以上で接続から疎通まで確認することができました。
おわりに
IIJへ入社して2ヶ月目にして、初めてSEIL/x86 Ayameに取り組む機会が訪れ、それがこの記事を執筆するきっかけとなりました。クラウドソリューション部としての業務では、SEIL/x86 Ayameに触れる機会は少ないので貴重な経験が出来ました。
Google Cloud以外にも、AzureやAWSにVPN接続する流れをご紹介した記事も投稿しておりますので、そちらもお読みいただけると嬉しいです。
- Microsoft AzureとSEIL/x86 Ayameでクラウド間をVPN接続してみました
- Amazon Web ServicesとSEIL/x86 Ayameでクラウド間をVPN接続してみました
他にもSEIL/x86 Ayame関連の記事があります。ご興味がございましたらあわせてご覧ください。