現在、Enhanced VPN Gateway をサポートしているリージョンは、[中国北部 2]、[中国東部 1]、[中国東部 2]、[中国南部 1]、[Chengdu]、[香港]、[シンガポール]、[クアラルンプール(マレーシア)]、[ジャカルタ]、[米国西部 1]、[米国東部 1]、[ドイツ1]、[ロンドン] です。
Enhanced VPN Gateway と標準 VPN Gateway の詳細な比較については、「機能比較」をご参照ください。
オープンソースソフトウェア strongSwan を使用して、Enhanced VPN Gateway との IPsec 接続を迅速に確立し、オンプレミス IDC と VPC 間のプライベート通信を実現できます。
シナリオ
ある企業は、マレーシア (クアラルンプール) リージョンに VPC を保有しており、Enhanced VPN Gateway と strongSwan を使用して、VPC をオンプレミス IDC に接続する必要があります。
このシナリオでは、オンプレミス IDC はパブリック出口 IP アドレスが 1 つあり、デュアルトンネル IPsec 接続を使用して VPN Gateway に接続します。
リソース計画
クラウドリソース:マレーシア (クアラルンプール) リージョンに、CIDR ブロック 10.0.0.0/16 の VPC。
vSwitch 1:アベイラビリティーゾーン A に配置され、CIDR ブロックは 10.0.0.0/24。
vSwitch 2:アベイラビリティーゾーン B に配置され、CIDR ブロックは 10.0.1.0/24。
ECS インスタンス:vSwitch 1 にデプロイされ、IP アドレスは 10.0.0.1。
VPN Gateway:IPsec 接続を 1 つ作成します。システムは、この接続に 2 つのパブリック IP アドレスを自動的に割り当てます。
IPsec アドレス 1 (プライマリトンネル用):XX.XX.1.1
IPsec アドレス 2 (セカンダリトンネル用):XX.XX.2.2
オンプレミスリソース:CIDR ブロック 172.16.0.0/16 のオンプレミス IDC。
strongSwan デバイス:プライベート IP アドレス 172.16.0.1。
パブリック出口 IP アドレス:XX.XX.3.3
暗号化設定:クラウド側とオンプレミス側で一致している必要があります。
IKE バージョン:v2
ネゴシエーションモード:main
暗号化アルゴリズム:AES-256-GCM-16 / SHA-256 / DH Group 14。オンプレミス側で明示的に指定する必要があります。クラウド側の Enhanced VPN Gateway は自動的にサポートします。
SA ライフタイム:86400 秒。
ルーティング方式:ポリシーベースモードで静的ルーティングを使用します。このモードでは、両端のネットワークを定義して、「対象トラフィック」と呼ばれる、VPN トンネルを通過するトラフィックを指定します。システムは、このトラフィックを自動的にルーティングし、必要なルートを作成します。
本トピックでは、パブリック出口 IP アドレスが 1 つで、静的ルーティングを使用するシナリオについて説明します。パブリック出口 IP アドレスが 2 つ、または BGP 動的ルーティングを使用するシナリオについては、「strongSwan 設定」をご参照ください。
前提条件
VPC の CIDR ブロックとオンプレミス IDC の CIDR ブロックが重複していないこと。
リソース計画セクションで説明されているように、「VPC を作成」済みであること。VPC には、異なるアベイラビリティーゾーンに 2 つの vSwitch と、接続をテストするための ECS インスタンスが少なくとも 1 つ含まれています。
オンプレミス IDC に Linux サーバーがデプロイされていること。本トピックでは、CentOS Stream 9 を例として使用します。サーバーには、パブリック出口 IP アドレスが 1 つあります。このサーバーに strongSwan をインストールして、オンプレミスゲートウェイとして機能させます。
ステップ 1:Enhanced VPN Gateway の作成
VPN Gateway ページに移動します。上部メニューで、[マレーシア (クアラルンプール)] リージョンを選択します。
Enhanced IPsec-VPN タブで、Enhanced IPsec-VPN の作成 をクリックします。
リージョン:VPC が配置されているリージョンを選択します。本トピックでは、[マレーシア (クアラルンプール)] を選択します。Enhanced VPN Gateway がサポートされているリージョンについては、「リージョンとゾーンのサポート」をご参照ください。
VPC:接続する対象の VPC を選択します。
vSwitch 1:アベイラビリティーゾーン A の vSwitch を選択します。
[vSwitch 2]: 可用性ゾーン B の vSwitch を選択します。クロスゾーン高可用性をサポートするには、vSwitch 1 とは異なるゾーンにある必要があります。vSwitch 1 を選択すると、vSwitch 2 のゾーンリストで vSwitch 1 のゾーンが淡色表示されて選択できなくなり、クロスゾーン高可用性のために 2 つの異なるゾーンで vSwitch を選択するように求めるメッセージが表示されます。
VPC に 1 つのゾーンにのみ vSwitch がある場合、セレクターの他のゾーンには使用可能な vSwitch がありません。vSwitch 1 または vSwitch 2 の選択パネルで、[vSwitch の作成] をクリックして、VPC コンソールの vSwitch 作成ページに移動します。現在の VPC があらかじめ入力されています。別のゾーンに vSwitch を作成した後、このページに戻ってリストを更新し、異なるゾーンの 2 つの vSwitch を選択します。または、VPC コンソールに直接移動して、続行する前に VPC に別のゾーンの vSwitch を追加します。
このゾーンレベルの制限 (vSwitch 2 のゾーンオプションがグレー表示され、選択できない) は、Enhanced VPN Gateway が使用するデュアルトンネルモードを反映しています。このモードでは、異なるゾーンに 2 つの vSwitch が必要です。これは、権限、在庫、またはクォータとは関係ありません。
システムは、各 vSwitch に Elastic Network Interface (ENI) を作成します。これらの ENI は、IPsec 接続と VPC 間のトラフィックのインターフェースとして機能します。各 ENI は、その vSwitch から 1 つの IP アドレスを消費します。
ステップ 2:カスタマーゲートウェイの作成
カスタマーゲートウェイは、オンプレミスゲートウェイデバイスのパブリック IP アドレスを記録する Alibaba Cloud 上のオブジェクトです。このシナリオでは、オンプレミス IDC にはパブリック出口 IP アドレスが 1 つしかないため、カスタマーゲートウェイを 1 つだけ作成する必要があります。
VPN Gateway コンソールの左側メニューで、カスタマーゲートウェイ をクリックします。
カスタマーゲートウェイの作成 をクリックして、パラメータを設定します。
名前:カスタマーゲートウェイの名前を入力します。例:
cgw-idc-kl。IP アドレス:ローカル IDC のパブリック出口 IP (
XX.XX.3.3) を入力します。
ステップ 3:IPsec 接続の作成
左側メニューで、IPsec 接続 をクリックし、VPN ゲートウェイの選択 をクリックします。
IPsec 接続の基本パラメータを設定します。
IPsec 接続名:リソースにわかりやすい名前を入力します。例:
ipsec-demo。リージョン:[マレーシア (クアラルンプール)] を選択します。
ゲートウェイタイプ:Enhanced IPsec-VPN を選択します。
課金:値は自動的に [CDT 課金] に設定されます。詳細については、「CDT パブリックネットワークトラフィック」をご参照ください。
VPN ゲートウェイと関連付け:ステップ 1 で作成した Enhanced VPN Gateway を選択します。
ルーティングモード:保護されたデータフロー を選択します。このモードでは、両端のネットワークセグメントを定義する必要があります。システムは、一致するトラフィックをトンネル経由で自動的に送信し、ルートを生成します。
ローカルネットワーク:VPC CIDR ブロック
10.0.0.0/16を入力します。リモートネットワーク:データセンター CIDR ブロック
172.16.0.0/16を入力します。今すぐ有効化:はい を選択すると、Alibaba Cloud がピアとのネゴシエーションを積極的に開始します。これにより、ピアが設定された後、接続を迅速に確立できます。
BGP の有効化:このシナリオでは、このオプションを無効のままにします。
トンネルパラメータを設定します。
Enhanced VPN Gateway はマルチアルゴリズムネゴシエーションをサポートしているため、デフォルトの暗号化設定を使用できます。
[トンネル 1 (プライマリ)]:
カスタマーゲートウェイ:ステップ 2 で作成したカスタマーゲートウェイを選択します。
事前共有鍵:このキーは、IPsec ネゴシエーション中の認証に使用されます。トンネルの両端の事前共有キーは同一である必要があります。そうでない場合、トンネルを確立できません。大文字、小文字、数字、特殊文字を含む強力なキーを使用してください。
[暗号化設定]:デフォルトのままにします。Enhanced VPN Gateway は、デフォルトでマルチアルゴリズム互換モードを有効にします。暗号化設定では、複数の一般的なアルゴリズムが事前に選択されており、システムはオンプレミスゲートウェイデバイスと自動的にネゴシエーションを行い、両者がサポートするアルゴリズムを選択します。アルゴリズムを手動で指定するには、暗号化設定 を展開して変更します。
重要設定を変更する必要がある場合は、次のパラメータがクラウド側とオンプレミス側で一致していることを確認してください:IKE バージョン、ネゴシエーションモード、SA ライフタイム。
トンネル 2 (セカンダリ)
カスタマーゲートウェイ:このシナリオのオンプレミス IDC にはパブリック出口 IP アドレスが 1 つしかないため、プライマリトンネルで選択したものと同じカスタマーゲートウェイを選択します。
事前共有鍵:本トピックでは、プライマリトンネルと同じキーを使用します。
[暗号化設定]:本トピックでは、プライマリトンネルと同じ設定を使用します。
OK をクリックすると、ルートをアドバタイズするように求めるダイアログボックスが表示されます。今のところ キャンセル をクリックします。
IPsec 接続リソースの初期化には約 5 分かかります。この期間中、ステータス は 準備中 であり、ルートを設定できません。最初にステップ 4 で strongSwan デバイスを設定し、その後ステップ 5 でルート設定を完了できます。
2 つのクラウドトンネルのパブリック IP アドレスを記録します。strongSwan を設定する際に必要になります。
IPsec-VPN 接続 ページに戻り、作成した IPsec 接続を見つけます。
ゲートウェイ IP アドレス 列で、[IPsec アドレス 1] と [IPsec アドレス 2] を記録します。本トピックでは、
XX.XX.1.1とXX.XX.2.2を例として使用します。
ステップ 4:strongSwan の設定
本トピックのサードパーティ製品情報は参考用です。Alibaba Cloud は、サードパーティ製品のパフォーマンスや信頼性について、明示的または黙示的ないかなる保証も行わず、その動作による影響についても責任を負いません。
次の例は、64 ビット CentOS Stream 9 オペレーティングシステムで strongSwan を設定する方法を示しています。他のオペレーティングシステムについては、「strongSwan 公式ドキュメント」をご参照ください。
1. ファイアウォールルールの設定
strongSwan デバイスで、ESP プロトコル (IP プロトコル番号 50)、UDP ポート 500、UDP ポート 4500 を許可して、クラウド側の 2 つの IPsec アドレスからのアクセスを許可します。
次のコマンドは、iptables を例として使用しています。使用しているファイアウォールツールに基づいてコマンドを変更してください。
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p esp -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 500 -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 4500 -j ACCEPT2. IP フォワーディングの有効化
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sudo sysctl -p3. strongSwan のインストール
dnf install epel-release -y
dnf install strongswan -y4. strongSwan の設定
元の設定ファイルをバックアップします。
mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak新しい設定ファイルを作成します。
vi /etc/strongswan/swanctl/swanctl.conf次の設定を追加して、ファイルを保存します。プレースホルダー値を実際の値に置き換えてください。
# strongSwan デュアルトンネル IPsec 接続設定:Alibaba Cloud Enhanced VPN Gateway + オンプレミスのパブリック出口 IP 1 つ + ポリシーベースモード # # 注意:「MODIFY」とマークされたパラメータのみを変更してください。残りはデフォルトのままにしてください。 # アルゴリズムの詳細:aes256gcm16-sha256-modp2048 = AES-256-GCM-16 / SHA-256 / DH Group 14 # 高可用性:vco1 (priority=1) がプライマリトンネル、vco2 (priority=2) がセカンダリトンネル。フェールオーバーは自動です。 connections { # === トンネル 1 (プライマリ) === vco1 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes256gcm16-sha256-modp2048 encap = yes local_addrs = 172.16.0.1 # MODIFY:strongSwan サーバーのネットワークインターフェースのプライベート IP アドレス。サーバーが NAT デバイスの背後にある場合は、プライベート IP アドレスを入力します。サーバーのネットワークインターフェースにパブリック IP アドレスが直接割り当てられている場合は、パブリック IP アドレスを入力します。 local { auth = psk id = XX.XX.3.3 # MODIFY:オンプレミスゲートウェイのパブリック出口 IP アドレス。 } remote_addrs = XX.XX.1.1 # MODIFY:Alibaba Cloud トンネル 1 のパブリック IP アドレス。 remote { auth = psk id = XX.XX.1.1 # MODIFY:Alibaba Cloud トンネル 1 のパブリック IP アドレス。remote_addrs と一致する必要があります。 } children { vco_child1 { local_ts = 172.16.0.0/16 # MODIFY:オンプレミスネットワークの CIDR ブロック (対象トラフィック)。 remote_ts = 10.0.0.0/16 # MODIFY:VPC の CIDR ブロック (対象トラフィック)。 mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes256gcm16-sha256-modp2048 priority = 1 # プライマリトンネルを指定します。このパラメータは変更しないことを推奨します。 } } } # === トンネル 2 (セカンダリ) === vco2 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes256gcm16-sha256-modp2048 encap = yes local_addrs = 172.16.0.1 # MODIFY:strongSwan サーバーのネットワークインターフェースの IP アドレス。トンネル 1 の local_addrs と同じである必要があります。 local { auth = psk id = XX.XX.3.3 # MODIFY:オンプレミスゲートウェイのパブリック出口 IP アドレス。トンネル 1 の id と同じである必要があります。 } remote_addrs = XX.XX.2.2 # MODIFY:Alibaba Cloud トンネル 2 のパブリック IP アドレス。 remote { auth = psk id = XX.XX.2.2 # MODIFY:Alibaba Cloud トンネル 2 のパブリック IP アドレス。remote_addrs と一致する必要があります。 } children { vco_child2 { local_ts = 172.16.0.0/16 # MODIFY:オンプレミスネットワークの CIDR ブロック。トンネル 1 の local_ts と同じである必要があります。 remote_ts = 10.0.0.0/16 # MODIFY:VPC の CIDR ブロック。トンネル 1 の remote_ts と同じである必要があります。 mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes256gcm16-sha256-modp2048 priority = 2 # セカンダリトンネルを指定します。このパラメータは変更しないことを推奨します。 } } } } secrets { ike-vco1 { id = XX.XX.1.1 # MODIFY:Alibaba Cloud トンネル 1 のパブリック IP アドレス。 secret = your-psk-here # MODIFY:トンネル 1 の事前共有キー。Alibaba Cloud コンソールで設定したキーと一致する必要があります。 } ike-vco2 { id = XX.XX.2.2 # MODIFY:Alibaba Cloud トンネル 2 のパブリック IP アドレス。 secret = your-psk-here # MODIFY:トンネル 2 の事前共有キー。Alibaba Cloud コンソールで設定したキーと一致する必要があります。 } }
5. strongSwan の起動とトンネルステータスの確認
sudo systemctl restart strongswan
swanctl --load-all
watch swanctl --list-sas両方のトンネルで ESTABLISHED が表示され、CHILD_SA が INSTALLED 状態である場合、strongSwan デバイスと Alibaba Cloud VPN Gateway の間で IPsec 接続が正常に確立されたことを示しています。
Every 2.0s: swanctl --list-sas iZ8psgynxxx: Fri Mar 13 14:53:47 2026
plugin 'sqlite': failed to load - sqlite_plugin_create not found and no plugin file
available
vco1: #11, ESTABLISHED, IKEv2, fbf8cda98d1d4f45_i c8a12ae19f8303d8_r*
local 'XX.XX.3.3x.18' @ 172.16.0.1[4500]
remote 'XX.XX.1.1x.58' @ XX.XX.1.1x.58[4500]
AES_GCM_16-256/PRF_HMAC_SHA2_256/MODP_2048
established 1534s ago, rekeying in 81327s
vco_child1: #10, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-256/MODP_2048
installed 10638s ago, rekeying in 73995s, expires in 75762s
in c31a70fc, 892248 bytes, 10622 packets, 1s ago
out c53ef972, 892332 bytes, 10623 packets, 1s ago
local 172.16.0.0/16
remote 10.0.0.0/16
vco2: #10, ESTABLISHED, IKEv2, 9b259bb527d43acf_i f53df17098e08519_r*
local 'XX.XX.3.3x.18' @ 172.16.0.1[4500]
remote 'XX.XX.2.2x.121' @ XX.XX.2.2x.121[4500]
AES_GCM_16-256/PRF_HMAC_SHA2_256/MODP_2048
established 3270s ago, rekeying in 81252s
vco_child2: #9, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-256/MODP_2048
installed 12865s ago, rekeying in 71956s, expires in 73535s
in c11c544e, 0 bytes, 0 packets, 7s ago
out c7acef03, 0 bytes, 0 packets, 14s ago
local 172.16.0.0/16
remote 10.0.0.0/16ステップ 5:クラウドルートの設定
本トピックではポリシーベースモードを使用するため、システムは Enhanced VPN Gateway の 宛先ベースルーティング にルートエントリを自動的に追加します。
このルートを VPC ルートテーブルにアドバタイズできます。ルートをアドバタイズすると、VPC 内の ECS インスタンスからオンプレミス IDC ネットワークへのトラフィックが VPN Gateway 経由で転送されます。
作成した Enhanced VPN Gateway のインスタンス ID をクリックして、詳細ページを開きます。
宛先ベースルーティング タブに移動します。システムが自動生成した宛先ルートエントリ (宛先ネットワーク 172.16.0.0/16、ネクストホップは IPsec 接続) を見つけます。
対象ルートエントリの アクション 列で、公開 をクリックして、ルートを VPC ルートテーブルにアドバタイズします。
ルートをアドバタイズすると、宛先ネットワークが 172.16.0.0/16 で、ネクストホップが VPN Gateway である新しいルートエントリが VPC ルートテーブルに追加されます。VPC 内の ECS インスタンスからオンプレミス IDC ネットワークへのトラフィックは、VPN トンネル経由で自動的にルーティングされます。
接続の検証
接続性の検証
「ECS インスタンスのセキュリティグループルールが ICMP トラフィックを許可していること」を確認します。次に、strongSwan デバイスにログオンして、クラウド ECS インスタンスのプライベート IP アドレスに ping を実行します。
ping 10.0.0.1応答パケットが返されると、オンプレミス IDC とクラウド VPC 間の通信が確立されていることを確認できます。
オンプレミスファイアウォールが ICMP トラフィックを許可していることを確認します。次に、VPC 内の ECS インスタンス (10.0.0.1) にログオンして、strongSwan デバイスのプライベート IP アドレスに ping を実行します。
ping 172.16.0.1応答パケットを受信した場合、逆方向の接続も確立されています。
高可用性の検証
ECS インスタンスから、オンプレミスサーバーに継続的な ping を実行します。
ping 172.16.0.1 -c 10000プライマリトンネルを中断します。Alibaba Cloud コンソールで、プライマリトンネルの事前共有キーを変更してキーの不一致を発生させます。これにより、プライマリトンネルの接続が失敗します。
ping の結果を観察します。短時間の中断後、通信が再開されます。これは、トラフィックがセカンダリトンネルに自動的にフェールオーバーしたことを示しています。
プライマリトンネルを復元します。プライマリトンネルの事前共有キーを正しい値に戻します。プライマリトンネルが復元されると、トラフィックは自動的にフェイルバックします。
トラブルシューティング
一般的な問題と解決策:
症状 | 考えられる原因 | 解決策 |
トンネルネゴシエーションが失敗します。 | ネットワーク接続の障害 | strongSwan デバイスが Alibaba Cloud の IPsec アドレスに ping できるかどうかを確認してください。オンプレミス IDC のファイアウォールがポート 500 および 4500 の UDP トラフィックを許可していることを確認してください。 |
事前共有キーの不一致 | 両端の事前共有キーが、大文字小文字や特殊文字を含めて同一であることを確認してください。 | |
IKE パラメータの不一致 | IKE バージョン、暗号化アルゴリズム、認証アルゴリズム、DH グループ、その他のパラメータが両端で一致しているかどうかを確認してください。 | |
トンネルは確立されていますが、ping が失敗します。 | ルートが設定されていません。 | VPN Gateway から VPC ルートテーブルに宛先ルートをアドバタイズしたことを確認してください。 |
セキュリティグループの制限 | ECS セキュリティグループが、オンプレミス IDC ネットワーク (172.16.0.0/16) からの ICMP トラフィックを許可しているかどうかを確認してください。 | |
オンプレミスファイアウォールの制限 | オンプレミスファイアウォールが、VPC ネットワーク (10.0.0.0/16) からのトラフィックを許可しているかどうかを確認してください。 | |
strongSwan 側のルートの欠落 | strongSwan デバイスで IP フォワーディングが有効になっていること、および IDC 内の他のサーバーが VPC ネットワークへのトラフィックのネクストホップとして strongSwan デバイスを使用していることを確認してください。 |
詳細については、「トラブルシューティング」をご参照ください。