オープンソースの strongSwan ソフトウェアを使用して、Alibaba Cloud 従来型 VPN Gateway との IPsec 接続を迅速に確立し、クラウド環境とオンプレミス環境間のプライベートネットワーク通信を実現できます。
シナリオ
ある企業が中国 (杭州) リージョンに仮想プライベートクラウド (VPC) を作成しました。この企業は、従来型 VPN Gateway および strongSwan デバイスを用いて、VPC を自社のオンプレミスインターネットデータセンター (IDC) に接続する必要があります。
このシナリオでは、オンプレミス IDC にはパブリック IP アドレスが 1 つしかなく、Alibaba Cloud VPN Gateway とはデュアルトンネルモードで IPsec 接続を確立します。
リソース計画
クラウドリソース:中国 (杭州) リージョンで CIDR ブロックが 10.0.0.0/16 の VPC。
vSwitch 1:可用性ゾーン I に配置し、CIDR ブロックは 10.0.0.0/24。
vSwitch 2:可用性ゾーン J に配置し、CIDR ブロックは 10.0.1.0/24。
ECS インスタンス:vSwitch 1 内に配置し、IP アドレスは 10.0.0.1。
VPN Gateway:VPN Gateway を作成すると、システムが自動的に 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。
暗号化構成:デフォルトのコンソール設定(AES128 / SHA1 / DH グループ 2)を使用します。暗号化アルゴリズム、認証アルゴリズム、DH グループは、クラウド側およびオンプレミス側で同一である必要があります。
ルーティング方式:宛先ベースルーティングを使用します。このモードでは、トラフィックセレクター(VPC およびオンプレミスネットワークの CIDR ブロック)を用いて、VPN トンネル経由でルーティングするトラフィックを指定します。これらの CIDR ブロック間のトラフィックは、トラフィックセレクターに一致します。システムが自動的に該当トラフィックをトンネル経由でルーティングし、対応するルートを生成します。
本トピックでは、単一のパブリック出口 IP および静的ルーティングを用いたシナリオについて説明します。デュアルパブリック出口 IP または BGP 動的ルーティングを用いるシナリオについては、「strongSwan 構成例」をご参照ください。
前提条件
VPC の CIDR ブロックとオンプレミス IDC の CIDR ブロックが重複していないこと。
VPC が作成済みであり、リソース計画に従って異なる可用性ゾーンに 2 つの vSwitch が作成済みであること。また、接続性のテスト用に、VPC 内に少なくとも 1 つの ECS インスタンスが存在すること。
オンプレミス IDC 内に Linux サーバーが展開済みであること。本トピックでは CentOS Stream 9 を例として使用します。このサーバーにはパブリック出口 IP が 1 つあり、strongSwan をインストールしてオンプレミスゲートウェイとして機能させます。
ステップ 1:従来型 VPN Gateway の作成
VPN Gateway ページ に移動し、VPN Gateway の作成 をクリックします。以下の主要パラメーターを設定します。
インスタンス名:わかりやすい名前を入力します(例:
vpn-gw-docdev)。リージョンおよびゾーン:VPC が配置されているリージョンを選択します。本トピックでは 中国 (杭州) を例として使用します。
ゲートウェイタイプ:Standard を選択します。
ネットワークタイプ:パブリック を選択します。
VPC:接続する VPC を選択します。
vSwitch 1:可用性ゾーン I の vSwitch を選択します。
vSwitch 2:可用性ゾーン J の vSwitch を選択します。高可用性を確保するため、vSwitch 1 とは異なる可用性ゾーンに配置する必要があります。利用可能な vSwitch がない場合は、事前に作成してください。
帯域幅:業務要件に応じて適切な帯域幅を選択します。本トピックではデフォルト値を使用します。
IPsec-VPN:有効にする を選択します。
SSL-VPN: 無効化 を選択します。
課金サイクル:デフォルト値を使用します。
サービスにリンクされたロールの作成:必ずサービスリンクロールを作成してください。VPN Gateway は、他のクラウドサービスのリソースにアクセスするためにこのロールを使用します。
今すぐ購入 をクリックして支払いを完了します。VPN Gateway インスタンスの初期化には約 1~5 分かかります。システムが VPN Gateway に 2 つのパブリック IP アドレス(アクティブトンネルおよびスタンバイトンネル用)を割り当てます。
ステップ 2:カスタマーゲートウェイの作成
カスタマーゲートウェイには、オンプレミスゲートウェイデバイスのパブリック IP アドレスが格納されます。本シナリオでは、オンプレミス IDC にパブリック出口 IP が 1 つしかないため、カスタマーゲートウェイは 1 つだけ作成します。
VPN Gateway コンソールの左側ナビゲーションウィンドウで、カスタマーゲートウェイ をクリックします。
カスタマーゲートウェイの作成 をクリックし、以下のパラメーターを設定します。
名前:カスタマーゲートウェイの名前を入力します(例:
cgw-idc-docdev)。IP アドレス:オンプレミス IDC のパブリック出口 IP アドレス(XX.XX.3.3)を入力します。
ステップ 3:IPsec 接続の作成
VPN Gateway コンソールの左側ナビゲーションウィンドウで、IPsec 接続 をクリックし、VPN ゲートウェイと関連付け をクリックします。
IPsec 接続の基本パラメーターを設定します。
IPsec 接続名:わかりやすい名前を入力します(例:
ipsec-docdev)。リージョン:中国 (杭州) を選択します。
VPN ゲートウェイの選択:ステップ 1 で作成した VPN Gateway を選択します。
ルーティングモード:宛先ルーティングモード を選択します。このモードでは、両端の CIDR ブロックを定義する必要があります。システムが自動的に該当トラフィックをトンネル経由でルーティングし、対応するルートを生成します。
ローカルネットワーク:VPC の CIDR ブロック
10.0.0.0/16を入力します。リモートネットワーク:IDC の CIDR ブロック
172.16.0.0/16を入力します。今すぐ有効化:はい を選択します。Alibaba Cloud がリモートピアに対して積極的にネゴシエーションを開始します。これにより、リモートピアの構成後に接続を迅速に確立できます。
BGP の有効化:本チュートリアルでは無効のままにしてください。
トンネルパラメーターを設定します。
Tunnel 1:
カスタマーゲートウェイ:ステップ 2 で作成したカスタマーゲートウェイを選択します。
事前共有鍵:認証に使用される共有鍵です。トンネルを確立するには、両端の事前共有鍵が一致している必要があります。大文字・小文字、数字、特殊文字を含む強力な鍵の使用を推奨します。
暗号化設定:デフォルト設定のままにします。本トピックでは、デフォルトの暗号化アルゴリズム(AES128)、認証アルゴリズム(SHA1)、DH グループ(group2)を使用します。
Tunnel 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 は、サードパーティ製品のパフォーマンスおよび信頼性、およびそれらに対する操作による影響について、明示的または黙示的な保証を行いません。
以下の手順では、CentOS Stream 9 64 ビット オペレーティングシステムにおける strongSwan の構成方法を示します。他のオペレーティングシステムについては、「strongSwan 公式ドキュメント」をご参照ください。
1. ファイアウォールルールの構成
strongSwan デバイスで、2 つの Alibaba Cloud IPsec アドレスからの ESP プロトコル(IP プロトコル番号 50)、UDP ポート 500、および UDP ポート 4500 のトラフィックを許可します。
以下のコマンドは 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以下の設定を追加・保存します。サンプルの IP アドレスおよび事前共有鍵は、実際の値に置き換えてください。
# strongSwan デュアルトンネル IPsec-VPN 構成: # - Alibaba Cloud 従来型 VPN Gateway # - オンプレミス単一パブリック出口 IP # - 宛先ベースルーティング(トラフィックセレクター) # # 「(変更)」とマークされたパラメーターのみを変更してください。 # アルゴリズムの備考:aes128-sha1-modp1024 は、AES-128 / SHA-1 / DH グループ 2(コンソールデフォルト)に対応します。 # 高可用性ロジック:vco1(priority=1)はアクティブトンネル、vco2(priority=2)はスタンバイトンネルです。フェイルオーバーは自動的に行われます。 connections { # === トンネル 1(アクティブ) === vco1 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local_addrs = 172.16.0.1 # (変更) strongSwan NIC のプライベート IP アドレス。NAT 環境ではプライベート IP を使用します。NIC がパブリック IP にバインドされている場合は、パブリック IP を使用します。 local { auth = psk id = XX.XX.3.3 # (変更) オンプレミスのパブリック出口 IP。 } remote_addrs = XX.XX.1.1 # (変更) Alibaba Cloud 上のトンネル 1 のパブリック IP。 remote { auth = psk id = XX.XX.1.1 # (変更) Alibaba Cloud 上のトンネル 1 のパブリック IP。remote_addrs と一致させる必要があります。 } children { vco_child1 { local_ts = 172.16.0.0/16 # (変更) オンプレミスのトラフィックセレクター CIDR ブロック。 remote_ts = 10.0.0.0/16 # (変更) Alibaba Cloud のトラフィックセレクター CIDR ブロック。 mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 1 # アクティブトンネルを指定します。変更しないでください。 } } } # === トンネル 2(スタンバイ) === vco2 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local_addrs = 172.16.0.1 # (変更) strongSwan NIC のプライベート IP アドレス。トンネル 1 と同じです。 local { auth = psk id = XX.XX.3.3 # (変更) オンプレミスのパブリック出口 IP。トンネル 1 と同じです。 } remote_addrs = XX.XX.2.2 # (変更) Alibaba Cloud 上のトンネル 2 のパブリック IP。 remote { auth = psk id = XX.XX.2.2 # (変更) Alibaba Cloud 上のトンネル 2 のパブリック IP。remote_addrs と一致させる必要があります。 } children { vco_child2 { local_ts = 172.16.0.0/16 # (変更) オンプレミスのトラフィックセレクター CIDR ブロック。トンネル 1 と同じです。 remote_ts = 10.0.0.0/16 # (変更) Alibaba Cloud のトラフィックセレクター CIDR ブロック。トンネル 1 と同じです。 mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 2 # スタンバイトンネルを指定します。変更しないでください。 } } } } secrets { ike-vco1 { id = XX.XX.1.1 # (変更) Alibaba Cloud 上のトンネル 1 のパブリック IP。 secret = your-psk-here # (変更) トンネル 1 の事前共有鍵。Alibaba Cloud 上で構成した鍵と一致させる必要があります。 } ike-vco2 { id = XX.XX.2.2 # (変更) Alibaba Cloud 上のトンネル 2 のパブリック IP。 secret = your-psk-here # (変更) トンネル 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 接続が正常に確立されています。
ステップ 5:クラウドルートの構成
本チュートリアルでは宛先ベースルーティングを使用するため、システムが VPN Gateway の ポリシーベースルーティング に自動的にルートエントリを生成します。
このルートをワンクリックで VPC ルートテーブルに公開できます。この操作により、VPC 内の ECS インスタンスからオンプレミス IDC ネットワークセグメントへのトラフィックが VPN Gateway 経由でルーティングされます。
VPN Gateway 一覧ページに戻り、ステップ 1 で作成した VPN Gateway のインスタンス ID をクリックして、詳細ページに移動します。
ポリシーベースルーティング タブをクリックします。IPsec 接続が宛先ベースルーティングを使用しているため、システムが宛先 CIDR ブロック(172.16.0.0/16)、ネクストホップ(IPsec 接続)の宛先ルートエントリを自動的に生成していることが確認できます。
対象ルートエントリの 操作 列で、公開 をクリックして、ルートを VPC ルートテーブルに公開します。
ルートが公開されると、VPC ルートテーブルに宛先が 172.16.0.0/16、ネクストホップが VPN Gateway の新しいルートエントリが追加されます。VPC 内の ECS インスタンスからオンプレミス IDC ネットワークセグメントへのトラフィックは、自動的に VPN トンネル経由でルーティングされます。
構成の検証
接続性の検証
まず、ECS インスタンスのセキュリティグループルールが ICMP トラフィックを許可 していることを確認します。次に、strongSwan デバイスにログインし、以下のコマンドを実行してクラウド側の ECS インスタンスに ping を実行します。
ping 10.0.0.1応答を受信した場合、VPC とオンプレミス IDC 間の通信が成功しています。
オンプレミスファイアウォールが 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 デバイスが VPN Gateway のパブリック IP アドレスに対して ping を実行できることを確認します。また、オンプレミス IDC のファイアウォールが UDP ポート 500 および 4500 のトラフィックを許可していることを確認します。 |
事前共有鍵の不一致 | 両端の事前共有鍵が、大文字・小文字および特殊文字を含めて完全に一致していることを確認します。 | |
IKE パラメーターの不一致 | IKE バージョン、暗号化アルゴリズム、認証アルゴリズム、DH グループが両端で一致しているか確認します。従来型 VPN Gateway は複数のアルゴリズムスイートをサポートしていません。パラメーターは完全に一致させる必要があります。 | |
トンネルは確立されていますが、ping が失敗します。 | ルートが構成されていない | VPN Gateway の宛先ルートが VPC ルートテーブルに公開されていることを確認します。 |
セキュリティグループの制限 | ECS インスタンスのセキュリティグループが、オンプレミス IDC ネットワーク(172.16.0.0/16)からの ICMP トラフィックを許可していることを確認します。 | |
オンプレミスファイアウォールの制限 | オンプレミス IDC のファイアウォールが、VPC(10.0.0.0/16)からのトラフィックを許可していることを確認します。 | |
strongSwan デバイスにルートが設定されていない | strongSwan デバイスで IP 転送が有効化されていること、およびオンプレミス IDC 内の他のサーバーが strongSwan デバイスをネクストホップとして VPC ネットワークへのルートを持っていることを確認します。 |