SSL-VPN を使用した VPC への接続

更新日時
Copy as MD

SSL-VPN は、クライアント (Windows、Linux、Android、または macOS) を VPC のプライベートネットワークに接続し、インターネット経由での安全なアクセスを実現します。

iOS および iPadOS クライアントについては、「SSL-VPN 接続を使用して iPhone または iPad を VPC に接続する」をご参照ください。

ユースケース

目的:SSL-VPN が有効な VPN ゲートウェイを作成し、ローカルクライアントがプライベート IP アドレスを使用して VPC 内の Elastic Compute Service (ECS) インスタンスに安全にアクセスできるようにします。

このシナリオでは、次のリソースを使用します:

  • VPC

    • 名前: vpc-demo

    • リージョン: 中国 (杭州)

    • CIDR ブロック: 10.0.0.0/16

    • vSwitch: vsw1vsw2 という名前の 2 つの vSwitch。

      • vsw1 はゾーン J にあり、CIDR ブロックは 10.0.0.0/24 です。

      • vsw2 はゾーン K にあり、CIDR ブロックは 10.0.1.0/24 です。

    • ECS: プライベート IP アドレスが 10.0.0.1 の ECS インスタンスで、Alibaba Cloud Linux 3.2104 LTS 64 ビット オペレーティングシステムを実行しています。

  • クライアントのオンプレミスネットワーク: 172.16.0.0/16

ステップ 1: クラウド VPN リソースの設定

クライアントを VPC に接続する前に、Alibaba Cloud コンソールで VPN ゲートウェイ、SSL サーバー、および SSL クライアントを作成して設定します。

1. VPN ゲートウェイの作成

VPN ゲートウェイは、SSL-VPN 接続におけるクラウド側の出入り口です。

  1. VPN ゲートウェイページに移動し、VPN Gateway の作成 をクリックします。

  2. VPN ゲートウェイページで、次のパラメーターを設定します:

    • インスタンス名vpn-demo

    • リージョン中国 (杭州)

    • VPC: クライアントがアクセスする VPC を選択します。

    • vSwitch 1/vSwitch 2: それぞれ vsw1vsw2 を選択します。

      VPN ゲートウェイインスタンスは、デュアルアクティブアーキテクチャを使用します。複数のゾーンをサポートするリージョンでゾーンをまたいだ高可用性を確保するには、VPC に異なるゾーンの vSwitch が少なくとも 2 つ必要です。この要件が満たされていない場合は、まず vSwitch を作成してください。
    • 最大帯域幅: 10 Mbps

    • IPsec-VPN無効 (このオプションは、後述の SSL-VPN を有効にした後にのみ利用可能です。)

    • SSL-VPNはい

    • SSL 接続:5

    • サービスにリンクされたロール: サービスリンクロールが存在しない場合は、Create Service-linked Role をクリックします。

    パラメーターの詳細については、「VPN ゲートウェイインスタンスの作成と管理」をご参照ください。
  3. 購入完了後、VPN ゲートウェイインスタンスが VPN ゲートウェイページに表示されます。

    新しく作成された VPN ゲートウェイインスタンスは 準備中 状態です。約 1〜5 分で状態が 正常 に変わり、インスタンスが使用可能になります。

2. SSL サーバーの作成

SSL サーバーは、クライアントがアクセスできるクラウドネットワークを定義し、クライアントの IP アドレスプールを設定します。

  1. SSL サーバー ページに移動します。上部のナビゲーションバーで、[中国 (杭州)] リージョンを選択し、SSLサーバーの作成 をクリックします。

  2. SSLサーバーの作成 パネルで、次の設定を行います:

    • 名前server-demo を入力します。

    • VPN Gateway: 先ほど作成した VPN ゲートウェイインスタンスを選択します。

    • ローカルネットワーク: VPC の CIDR ブロック 10.0.0.0/16 を入力します。

      この CIDR ブロックは、クライアントがアクセスできるクラウドネットワークを定義します。通常は VPC の CIDR ブロックです。

    その他のオプションはデフォルト値のままにします。パラメーターの詳細については、「SSL サーバーの作成と管理」をご参照ください。

3. SSL クライアントの作成と証明書のダウンロード

SSL クライアントはクライアント証明書を管理します。接続が必要な各クライアントは、認証と暗号化のために証明書をインポートする必要があります。

  1. 左側のナビゲーションウィンドウで、ネットワーク間接続 > VPN > SSL クライアント を選択します。上部のナビゲーションバーで、China (Hangzhou) リージョンが選択されていることを確認します。SSL クライアント ページで、SSL クライアントの作成 をクリックします。

  2. SSL クライアントの作成 パネルで、[名前] に client-demo を入力し、[SSL サーバー]server-demo を選択して、OK をクリックします。

  3. SSL クライアント ページで、作成した SSL クライアントを見つけ、操作 列の [証明書のダウンロード] をクリックします。

ステップ 2: クライアントの設定

ご利用のクライアントのオペレーティングシステムに応じた手順に従ってください。

Windows クライアント

  1. お使いの Windows のバージョンに対応する OpenVPN クライアントをダウンロードしてインストールします:

    ダウンロードリンクが開けない場合は、アカウントマネージャーまたは Alibaba Cloud のエンジニアにお問い合わせください。
  2. ダウンロードした SSL クライアント証明書パッケージを解凍し、すべての展開されたファイルを OpenVPN の設定ディレクトリにコピーします。

    • デフォルトパスC:\Program Files\OpenVPN\config

    • 注意: インストールパスを変更した場合は、インストールディレクトリ内の `config` フォルダにファイルをコピーしてください。

    image

  3. テキストエディターで config.ovpn ファイルを開き、ファイルの末尾に次の行を追加します: disable-dco

    OpenVPN 2.6 で導入されたデータチャネルオフロード (DCO) 機能は、Windows 10 や Windows 11 の特定バージョンなど、一部の Windows システムと互換性がありません。DCO を無効にすることで、これらのデバイスで発生する可能性のある接続問題が解決されます。
    client
    dev tun
    proto tcp
    remote 121.41.xxx
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert vsc-bp1xxx.crt
    key vsc-bp1xxx.key
    cipher AES-128-CBC
    ;comp-lzo
    verb 4
    disable-dco
  4. システムトレイで OpenVPN アイコンを右クリックし、[接続] をクリックします。

  5. ステータスが「接続済み」になり、IP アドレスが割り当てられると、接続は成功です。

Linux クライアント

  1. 次のコマンドを実行して OpenVPN クライアントをインストールし、conf ディレクトリを作成します。

    CentOS
    yum install -y openvpn
    mkdir -p /etc/openvpn/conf
    Ubuntu
    apt-get update
    apt-get install -y openvpn
    mkdir -p /etc/openvpn/conf
  2. ダウンロードした SSL クライアント証明書パッケージを解凍し、展開されたファイルを /etc/openvpn/conf/ ディレクトリにコピーします。

    image

  3. /etc/openvpn/conf/ ディレクトリに移動し、次のコマンドを実行して VPN 接続を確立します。

    openvpn --config /etc/openvpn/conf/config.ovpn --daemon
  4. (オプション) 起動時に OpenVPN プロセスが自動的に開始するように設定します。

    1. /etc/rc.local ファイルを編集し、次のコマンドを追加します。

      # /etc/rc.local ファイルを編集モードで開きます。
      vi /etc/rc.local 
      # i を押して編集モードに入り、次のコマンドを /etc/rc.local ファイルに追加します。
      cd /etc/openvpn/conf/
      openvpn --config /etc/openvpn/conf/config.ovpn --daemon
      # Esc を押して編集モードを終了し、次のコマンドを入力してファイルを保存して終了します。
      :wq
    2. /etc/rc.local ファイルに実行権限を付与します。

      chmod +x /etc/rc.local

Android クライアント

  1. Android 用 OpenVPN クライアントをダウンロードしてインストールします。ダウンロードリンクが開けない場合は、アカウントマネージャーまたは Alibaba Cloud のエンジニアにお問い合わせください。

    この例では、OpenVPN クライアント v3.0.5 がインストールされた Android 9.0 デバイスを使用します。

  2. ダウンロードした SSL クライアント証明書パッケージを Android デバイスに転送し、パッケージを解凍します。

    説明
    • お使いの Android デバイスに解凍ユーティリティがない場合は、コンピューターで証明書パッケージを解凍し、展開されたファイルを Android クライアントに転送できます。

    • 次の図に示すように、展開されたすべてのファイルが同じフォルダにあることを確認してください。

    ファイルの保存先

  3. OpenVPN クライアントを開き、config.ovpn ファイルをインポートして、VPN 接続を追加します。

    設定ファイルのインポート

    番号

    説明

    [OVPN Profile] 接続方法を選択します。

    ストレージディレクトリで config.ovpn ファイルを見つけます。

    [IMPORT] をクリックして config.ovpn ファイルをインポートします。

    システムは config.ovpn ファイルから情報を自動的に読み取り、VPN ゲートウェイのパブリック IP アドレスを表示します。[ADD] をクリックして VPN 接続を追加します。

  4. トグルボタンをタップして VPN 接続を有効にします。

    OpenVPN を有効にする

Mac クライアント (GUI、M シリーズチップに推奨)

  1. Tunnelblick リリースページに移動し、バージョン Tunnelblick 4.0.1 (build 5971) を見つけ、Assets パネルから .dmg ファイルをダウンロードします。ダウンロードリンクが開けない場合は、アカウントマネージャーまたは Alibaba Cloud のエンジニアにお問い合わせください。

    image

  2. Tunnelblick ソフトウェアをインストールします。

    image

    番号

    説明

    ダウンロードした Tunnelblick インストーラーパッケージをダブルクリックします。

    Tunnelblick アイコンをダブルクリックします。

    [設定ファイルがあります] を選択します。

    [OK] をクリックします。

  3. ダウンロードした SSL クライアント証明書パッケージを解凍します。次に、展開した config.ovpn ファイルを [設定] パネルにドラッグします

image

番号

説明

Launchpad から Tunnelblick アイコンをクリックします。

展開した config.ovpn ファイルを [設定] パネルにドラッグします。

[自分のみ] を選択します。

[接続] をクリックします。

macOS (CLI)

  1. ターミナルアプリを開きます。Mac に Homebrew がインストールされていない場合は、次のコマンドを実行してインストールします。

    説明

    Homebrew のインストールスクリプトには sudo コマンドが含まれており、管理者パスワードの入力を求められます。「Press RETURN/ENTER to continue...」と表示されたら、Enter キーを押して続行してください。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    image

  2. 次のコマンドを実行して OpenVPN クライアントをインストールします。

    brew install openvpn

    image

  3. ダウンロードした SSL クライアント証明書を構成ディレクトリにコピーします。

    1. /opt/homebrew/etc/openvpn ディレクトリをバックアップします。

      cp -r  /opt/homebrew/etc/openvpn /opt/homebrew/etc/openvpn_bak
    2. 次のコマンドを実行して、現在の OpenVPN 設定ファイルを削除します。

      rm /opt/homebrew/etc/openvpn/*
    3. 次のコマンドを実行して、ダウンロードした SSL クライアント証明書パッケージを構成ディレクトリにコピーします。

      cp /path/to/certs.zip /opt/homebrew/etc/openvpn/
      説明

      /path/to/certs.zip は、ダウンロードした SSL クライアント証明書パッケージへのパスです。通常は、現在のユーザーのダウンロードディレクトリにあります。例: /Users/example/Downloads/certs.zip

  4. 次のコマンドを実行して証明書を解凍します。

    cd /opt/homebrew/etc/openvpn/
    unzip /opt/homebrew/etc/openvpn/certs.zip
  5. /etc/rc.local ファイルに実行権限を付与します。

    chmod +x /etc/rc.local

Android クライアント

  1. このトピックでは、OpenVPN クライアント 3.0.5 がインストールされた Android 9.0 クライアントを使用します。

  2. ダウンロードした SSL クライアント証明書を Android デバイスに転送し、証明書を解凍します。

    説明
    • お使いの Android デバイスにファイルを解凍するソフトウェアがない場合は、コンピューターで証明書を解凍してください。その後、解凍したファイルを Android クライアントに転送します。

    File save location

  3. OpenVPN クライアントを開き、config.ovpn ファイルをインポートして、VPN 接続を追加します。

    Import config file

    番号

    説明

    [OVPN Profile] 接続方法を選択します。

    ストレージディレクトリで config.ovpn ファイルを見つけます。

    [IMPORT] をクリックして config.ovpn ファイルをインポートします。

    システムは config.ovpn ファイルを読み取り、VPN ゲートウェイのパブリック IP アドレスを表示します。[ADD] をクリックして VPN 接続を追加します。

  4. トグルボタンをクリックして VPN 接続を有効にします。

    Enable OpenVPN

Mac クライアント (GUI、M シリーズチップに推奨)

  1. Tunnelblick リリースページに移動し、バージョン Tunnelblick 4.0.1 (build 5971) を見つけ、Assets パネルから .dmg ファイルをダウンロードします。ダウンロードリンクが開けない場合は、アカウントマネージャーまたは Alibaba Cloud のエンジニアにお問い合わせください。

    image

  2. Tunnelblick ソフトウェアをインストールします。

    image

    No.

    説明

    ダウンロードした Tunnelblick インストールパッケージをダブルクリックします。

    Tunnelblick アイコンをダブルクリックします。

    [設定ファイルがあります] を選択します。

    [OK] をクリックします。

  3. ダウンロードした SSL クライアント証明書を解凍します。解凍した config.ovpn ファイルを [設定] パネルにドラッグして VPN 接続を作成します。

image

No.

説明

Launchpad で Tunnelblick アイコンをクリックして Tunnelblick ソフトウェアを開きます。

解凍した config.ovpn ファイルを [設定] パネルにドラッグします。

[自分のみ] を選択します。

[接続] をクリックします。

Mac クライアント (コマンドライン)

  1. ターミナルウィンドウを開きます。Homebrew がインストールされていない場合は、次のコマンドを実行してインストールします。

    説明

    Homebrew のインストールスクリプトには sudo コマンドが含まれています。管理者パスワードの入力を求められます。「Press RETURN/ENTER to continue...」と表示されたら、Enter キーを押して続行してください。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    image

  2. 次のコマンドを実行して OpenVPN クライアントをインストールします。

    brew install openvpn

    image

  3. ダウンロードした SSL クライアント証明書を構成ディレクトリにコピーします。

    1. /opt/homebrew/etc/openvpn ディレクトリをバックアップします。

      cp -r  /opt/homebrew/etc/openvpn /opt/homebrew/etc/openvpn_bak
    2. 次のコマンドを実行して、現在の OpenVPN 設定ファイルを削除します。

      rm /opt/homebrew/etc/openvpn/*
    3. 次のコマンドを実行して、ダウンロードした SSL クライアント証明書を構成ディレクトリにコピーします。

      cp /path/to/certs.zip /opt/homebrew/etc/openvpn/
      説明

      /path/to/certs.zip は、ダウンロードした SSL クライアント証明書へのパスです。通常は、ユーザーのダウンロードディレクトリにあります。例: /Users/example/Downloads/certs.zip

  4. 次のコマンドを実行して証明書を解凍します。

    cd /opt/homebrew/etc/openvpn/
    unzip /opt/homebrew/etc/openvpn/certs.zip
  5. クライアントの実行方法を選択します。

    フォアグラウンドで実行

    次のコマンドを実行してクライアントプロセスを開始し、VPN 接続を確立します:

    sudo /opt/homebrew/opt/openvpn/sbin/openvpn --config /opt/homebrew/etc/openvpn/config.ovpn

    このコマンドを実行すると、フォアグラウンドで実行され続けます。切断するには、Ctrl+C を押してコマンドを停止します。

    バックグラウンドで実行

    次のコマンドを実行して、VPN クライアントを起動時に自動的に開始するバックグラウンドサービスとして実行します:

    cp config.ovpn openvpn.conf
    sudo brew services start openvpn

    サービスを停止するには、次のコマンドを実行します:

    sudo brew services stop  openvpn

ステップ 3: 接続性のテスト

  1. セキュリティグループルールの設定

    クライアントが VPC 内のリソースにアクセスできるように、ECS インスタンスに関連付けられたセキュリティグループにインバウンドルールを追加し、クライアント CIDR ブロック (10.200.200.0/24) からのトラフィックを許可します。

    • 接続性テストの場合ping コマンドが正常に機能するように、ICMP プロトコルを許可します。

    • サービスアクセスの場合: TCP 22 (SSH)、TCP 3389 (RDP)、TCP 80/443 (Web サービス) など、サービスで必要な特定のポートを許可します。

  2. Ping テスト

    クライアントで ping コマンドを使用して、ECS インスタンスへの接続性をテストします。正常な応答は、ECS インスタンスへのプライベート接続が確立されていることを示します:

    ping 10.0.0.1

    image

  3. サービスポートのテスト

    サービスへのアクセスを確認するには、ECS インスタンスで実行されているサービスにアクセスします。たとえば、ECS インスタンスに Nginx などの Web サービスをインストールして起動します:

    # ECS インスタンスで実行 (Alibaba Cloud Linux 3 の例):
    yum install -y nginx
    systemctl start nginx.service

    ECS インスタンスに関連付けられたセキュリティグループが、クライアント CIDR ブロックからの TCP ポート 80 でのトラフィックを許可していることを確認した後、クライアントのブラウザで http://10.0.0.1 にアクセスします。

    Nginx のウェルカムページが表示されれば、サービスにアクセスできています。

    image

よくある質問

ユーザー名とパスワードによる認証

二要素認証を有効にできます。これにより、クライアントは証明書とユーザー名/パスワードの両方を使用して認証し、SSL-VPN 接続を確立する必要があります。

Linux または macOS での VPN 切断

  1. OpenVPN プロセスを見つけるには、コマンドラインを開き、次のコマンドを実行します。プロセス ID をメモしてください。

    ps aux | grep openvpn
  2. OpenVPN プロセスを終了するには、次のコマンドを実行します。

    kill -9 <プロセス ID>

接続問題のトラブルシューティング

症状

原因と解決策

接続が失敗します。たとえば、クライアントログAUTH_FAILEDTLS Handshake failed が表示されます

1. ネットワークの問題: クライアントデバイスがインターネットにアクセスできることを確認します。ローカルネットワークのファイアウォールやセキュリティソフトウェアが、OpenVPN クライアントから VPN ゲートウェイのパブリック IP アドレスとポート (デフォルト: TCP/1194) へのアクセスをブロックしていないことを確認します。

2. 証明書の問題: インポートした config.ovpn ファイルと関連する証明書ファイルが完全で、変更されていないことを確認します。コンソールから証明書を再度ダウンロードしてインポートしてみてください。

接続は成功しましたが、VPC 内の ECS インスタンスに ping できません。

1. セキュリティグループルール: これが最も一般的な原因です。ECS コンソールにログインし、ターゲットインスタンスのセキュリティグループを確認します。ソースがご利用の クライアント CIDR ブロック (例: 10.200.200.0/24) に設定された ICMP プロトコルを許可するインバウンドルールがあることを確認します。

2. オペレーティングシステムのファイアウォール: ECS インスタンスのオペレーティングシステムのファイアウォール (firewalld や iptables など) が ICMP リクエストをブロックしていないか確認します。

接続は成功し、ping も機能しますが、ECS インスタンス上のサービス (Web サイトや SSH など) にアクセスできません。

1. セキュリティグループルール: ECS インスタンスのセキュリティグループを確認し、必要なサービスポート (例: TCP 80、TCP 22) でクライアント CIDR ブロックからのトラフィックを許可していることを確認します。

2. サービスのリスニング状態: ECS インスタンスにログインし、サービスが正しいポートでリッスンしていることを確認します。たとえば、Linux システムでは netstat -nltp コマンドを実行できます。

3. オペレーティングシステムのファイアウォール: ECS インスタンスにログインし、オペレーティングシステムのファイアウォールが必要なポートでのトラフィックを許可していることを確認します。

VPN に接続した後、ローカルネットワーク (プリンターなど) やインターネットにアクセスできなくなります。

ルーティングの競合: この問題は、SSL サーバーで設定した クライアント CIDR ブロック がローカルネットワークの CIDR ブロックと競合する場合に発生します。ステップ 1 に戻り、SSL サーバーのクライアント CIDR ブロックを、より一般的に使用されていない範囲 (例: 10.240.240.0/24) に変更してから、再度証明書をダウンロードしてクライアントを設定してください。

ECS インスタンスからクライアントへの ping を開始できません。

これは想定される動作です。セキュリティ上の理由から、クライアントのオペレーティングシステムのファイアウォールは、通常、VPN エンドポイントを含む外部ソースからの未承諾のインバウンドリクエストをブロックします。これは、クライアントがクラウドリソースにアクセスする能力には影響しません。クラウドリソースからのインバウンド接続を許可するには、クライアントのファイアウォールで必要なトラフィック (ping リクエストの場合は ICMP など) を許可するように設定する必要があります。

詳細については、「SSL-VPN 接続に関するよくある質問」をご参照ください。