Amazon Web ServicesとSEIL/x86 Ayameでクラウド間をVPN接続してみました
2024年04月08日 月曜日
CONTENTS
はじめに
はじめまして。クラウドソリューション部の瀬川です。2023年にIIJに入社し、クラウドソリューションの開発や、クラウド導入力の向上に関する活動などに携わっています。
本記事ではSEIL/x86 Ayame、AWS間のSite to Site VPN接続の一例をご紹介いたします。SEIL/x86 Ayameは、VMware、KVM、Hyper-Vなど主要な仮想環境をサポートする高機能なソフトウェアルータです。今回はAWSと対向する環境をIIJ GIOとしておりますが、オンプレミスやAWS(マーケットプレイス)などでも類似の設定を投入してVPN接続することが可能ですので、ご参考になれば幸いです。
構成図
IIJ GIOインフラストラクチャーP2プライベートリソース上に構築したSEIL/x86 AyameとAWS Site-to-Site VPNを接続して疎通確認を行います。本記事ではTransit Gatewayを使用しておりますが、使用しない構成をとることも可能です。
※今回ご紹介しているVPNの接続方法は、シングルトンネルでの接続となりAWSの推奨構成から外れる状態となります。本来は冗長構成とする必要がありますので、その点をご留意いただけますと幸いです。
準備・作成した主要な構成要素
IIJ GIOインフラストラクチャーP2 プライベートリソース
- 仮想マシン2台(内1台は、SEIL/x86 Ayame)
- グローバルIPアドレス
- SEIL/x86 Ayameのライセンス(トライアル版)
AWS
- 仮想マシン1台
- Transit Gateway
- グローバルIPアドレス
- EC2 Instance Connectエンドポイント
SEIL/x86 Ayameのライセンスについては以下のリンクより購入・取得いただけます。
- トライアル(無償)、スタンダード、エンタープライズ
https://www.seil.jp/product/x86ayame.html
設定から疎通確認まで
AWS側のリソース作成
※VPCや疎通確認用の仮想マシンなどは、すでに作成されている前提で作業を進めていきます。
Transit Gateway の作成
まずはじめに、Transit Gateway関連のリソースを作成します。
Amazon側のASNについては、プライベート ASN (64512~65534 の範囲) を使用します。未指定の場合デフォルト値の65000が使用されます。
続いて、VPC側のTransit Gatewayアタッチメントを作成します。
さらにVPN用のTransit Gatewayアタッチメントを作成します。
カスタマーゲートウェイには、SEIL/x86 Ayame のグローバルIPアドレスを設定します。
BGP ASNにはAWS側で禁止されていない値を設定します。
※ASNについては基本的にプライベート ASN (64512~65534 の範囲) を使用します。
Site-to-Site VPN接続の設定をダウンロード
アタッチメントタイプVPNのTransitGatewayアタッチメントを作成すると、Site-to-Site VPN接続が合わせて作成されます。
ここで設定のダウンロードを実施します。
ベンダーにIIJを設定した場合、IKEv2が選択できなくなりますのでGenericを選択します。
GIO側の設定
SEIL/x86 Ayameへの設定投入
ダウンロードしたファイルを元にSEIL/x86 Ayameに投入するConfigを作成します。例示する設定はfilterやnat設定等を除いています。
option.ipv4.update-connected-route.service:enable ike.auto-initiation:enable ike.dpd-interval:10 ike.dpd-maxfail:5 ike.interval:40 ike.phase1-timeout:01m ike.phase2-timeout:02m20s 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.105.118/30 interface.ipsec100.ipv4.destination:192.51.100.1 interface.ipsec100.ipv4.remote:169.254.105.117 interface.ipsec100.ipv4.source:192.0.2.1 interface.ipsec100.ipv4.tcp-mss:1379 interface.ipsec100.nat-traversal:force interface.ipsec100.preshared-key:Rz0FXsNFIX3SRtifMTAhvP7CDCQOad5I bgp.ipv4.network.100.prefix:192.168.120.0/24 bgp.my-as-number:65534 bgp.neighbor.110.address:169.254.105.117 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
AWS Site-to-Site VPNは、SEIL/x86 Ayameのデフォルト設定(暗号化アルゴリズム・整合性アルゴリズム・DH グループ番号等)を受け入れる状態になっているので当該項目について明示的には設定しません。
VPN接続の確認
Site-to-Site VPNのステータス確認
SEIL/x86 Ayameに設定を投入後、VPNのトンネルの状態がUpとなっていることを確認します。
今回の手順ではトンネル2を使用しないため、トンネル1のみステータスが正常か確認します。
Transit Gatewayのルート伝播確認
AWS側からの疎通確認
サブネットのルートテーブルを編集
AWSからGIO側へのルートを追加します。
EC2に接続
EC2 Instance Connectエンドポイント経由で疎通確認用のEC2に接続します。
AWSの仮想マシンからGIOの仮想マシンにPingを送信して疎通を確認します。
以下の通り、10.0.0.0/16のIP範囲から192.168.120.0/24の範囲に対して通信が成功しています。
以上で接続から疎通まで確認することができました。
おわりに
IIJへ入社して2ヶ月目にして、初めてSEIL/x86 Ayameに取り組む機会が訪れ、それがこの記事を執筆するきっかけとなりました。クラウドソリューション部としての業務では、SEIL/x86 Ayameに触れる機会は少ないので貴重な経験が出来ました。
AWS以外にも、AzureやGoogle CloudにVPN接続する流れをご紹介した記事も投稿しておりますので、そちらもお読みいただけると嬉しいです。
- Microsoft AzureとSEIL/x86 Ayameでクラウド間をVPN接続してみました
- Google Cloud PlatformとSEIL/x86 Ayameでクラウド間をVPN接続してみました
他にもSEIL/x86 Ayame関連の記事があります。ご興味がございましたらあわせてご覧ください。