SSL-VPN 接続を使用すると、クライアント (Windows、Linux、Android、または macOS) を VPC に安全に接続し、インターネット経由でクラウドリソースにアクセスできます。
iOS および iPadOS クライアントについては、「SSL-VPN を使用した iPhone または iPad の VPC への接続」をご参照ください。
シナリオ
SSL-VPN は、次のシナリオに適しています。
オンプレミスに静的パブリック IP アドレスがない場合:SSL-VPN 接続はクライアント側から開始されるため、オンプレミスネットワークに静的パブリック IP アドレスは不要です。クライアントデバイスがインターネットにアクセスできれば、家庭用ブロードバンド、モバイルオフィス、動的 IP アドレスのオフィスなど、動的 IP 環境がすべてサポートされます。静的パブリック IP アドレスを持つゲートウェイデバイスがすでにある場合は、IPsec-VPN を使用してサイト間接続を確立することもできます。
Elastic Compute Service (ECS) インスタンスへのプライベートアクセス:VPC 内の ECS インスタンスはパブリック IP アドレスを必要としません。クライアントが SSL-VPN 経由で接続すると、同じ VPC 内のリソースのプライベート IP アドレスを直接使用できます。
セキュアなアクセス制御:ECS インスタンスに関連付けられたセキュリティグループで、SSL-VPN の [クライアント CIDR ブロック] からのトラフィックのみを許可できます。これにより、インターネット経由の直接アクセスをブロックし、クライアントが SSL-VPN 経由で接続した後にのみアクセスを許可し、SSH (22) や RDP (3389) などの脆弱なポートの公開を減らします。
シナリオ
目標:ローカルクライアントがプライベート IP アドレスで VPC 内の ECS インスタンスに安全にアクセスできるよう、SSL-VPN を有効にした VPN Gateway を作成します。
このチュートリアルでは、以下のリソースを使用します。
VPC
名前:
vpc-demoリージョン: 中国 (杭州)
CIDR ブロック: 10.0.0.0/16
vSwitch:
vsw1とvsw2という名前の 2 つの vSwitch を作成します。vsw1はゾーン J にあり、CIDR ブロックは 10.0.0.0/24 です。vsw2はゾーン K にあり、CIDR ブロックは 10.0.1.0/24 です。
ECS: IP アドレスは 10.0.0.1、オペレーティングシステムは
Alibaba Cloud Linux 3.2104 LTS 64-bitです。
クライアントのオンプレミスネットワーク: 172.16.0.0/16
ステップ 1:クラウド VPN リソースの設定
クライアントを VPC に接続する前に、Alibaba Cloud コンソールで VPN Gateway、SSL サーバー、および SSL クライアントを作成して設定する必要があります。
1. VPN Gateway の作成
VPN Gateway は、SSL-VPN 接続のためのクラウド側の出入り口です。
VPN Gateway のページに移動し、[VPN Gateway の作成] をクリックします。
[VPN Gateway] ページで、次のパラメーターを設定します。
[インスタンス名]:
vpn-demoリージョン: [中国 (杭州)]。
VPC: クライアントがアクセスする必要のある VPC を選択します。
[vSwitch 1]/[vSwitch 2]: それぞれ
vsw1とvsw2を選択します。VPN ゲートウェイはデュアルアクティブアーキテクチャを使用します。複数のゾーンをサポートするリージョンでは、クロスゾーンでの高可用性を確保するために、VPC には異なるゾーンに少なくとも 2 つの vSwitch が必要です。VPC に異なるゾーンの vSwitch がない場合は、まず vSwitch を作成してください。
[最大帯域幅]: 10 Mbps
IPsec-VPN: [無効]。(このオプションは、SSL-VPN を有効にした後にのみ使用できます。)
SSL-VPN: [有効]。
[SSL-VPN 接続]: 5。
[サービスにリンクされたロール]: サービスにリンクされたロールがまだ作成されていない場合は、[サービスにリンクされたロールの作成] をクリックします。
パラメーターの詳細な説明については、「VPN ゲートウェイインスタンスの作成と管理」をご参照ください。
購入を完了すると、新しい VPN Gateway が VPN Gateway ページに表示されます。
新しい VPN ゲートウェイは「[準備中]」の状態で開始されます。約 1〜5 分で「[正常]」に変わり、使用準備が整います。
2. SSL サーバーの作成
SSL サーバーは、クライアントがアクセスできるクラウドネットワークを定義し、クライアントの IP アドレスプールを設定します。
[SSL サーバー] のページに移動します。上部メニューで [中国 (杭州)] リージョンを選択し、[SSL サーバーの作成] をクリックします。
[SSL サーバーの作成] パネルで、SSL サーバーを次の設定で設定します。
[名前]:
server-demoと入力します。[VPN Gateway]: 先ほど作成した VPN Gateway を選択します。
[ローカルネットワーク]: VPC の CIDR ブロック
10.0.0.0/16を入力します。これはクライアントがアクセスするクラウドネットワークで、通常は VPC の CIDR ブロックです。
[クライアント CIDR ブロック]: これは、VPN ゲートウェイがクライアント側の仮想ネットワークアダプターに IP アドレスを割り当てるためのアドレスプールです。 ルーティングの競合を避けるため、このブロックは [ローカルネットワーク] またはクライアントの既存の CIDR ブロック (お使いの クライアントのオンプレミスネットワーク など) と重複しないようにする必要があります。 既存のネットワークとの競合が発生しにくい、RFC 1918 プライベートアドレス範囲 (10.0.0.0/8、172.16.0.0/12、または 192.168.0.0/16) のアドレス、たとえば
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、10.200.200.0/24などを使用します。
他のオプションはデフォルト値のままにします。パラメーターの詳細な説明については、「SSL サーバーの作成と管理」をご参照ください。
3. SSL クライアントの作成と証明書のダウンロード
SSL クライアントはクライアント証明書を管理します。接続する各クライアントは、認証と暗号化のために証明書をインポートする必要があります。
左側メニューで、[相互接続] > [VPN] > [SSL クライアント] を選択します。上部メニューで 中国 (杭州) リージョンを選択します。[SSL クライアント] ページで、[SSL クライアントの作成] をクリックします。
[SSL クライアントの作成] パネルで、[名前] に
client-demoと入力し、[SSL サーバー] にserver-demoを選択して、[OK] をクリックします。[SSL クライアント] ページで、対象の SSL クライアントを見つけ、[操作] 列の [証明書のダウンロード] をクリックします。
ステップ 2:クライアントの設定
クライアントのオペレーティングシステムに応じた設定手順に従ってください。
Windows クライアント
お使いの Windows バージョン用の OpenVPN クライアントをダウンロードし、画面の指示に従ってインストールします。
Windows 64 ビットシステム (Intel/AMD):OpenVPN クライアント (Windows 64 ビット)。
Windows ARM64 システム:OpenVPN クライアント (Windows ARM64)。
ダウンロードした SSL クライアント証明書パッケージを解凍し、展開された すべて のファイルを OpenVPN の設定ディレクトリにコピーします。
デフォルトパス:
C:\Program Files\OpenVPN\config注意: インストールパスを変更した場合は、実際のインストールディレクトリ内の config フォルダーにファイルをコピーしてください。

config.ovpnファイルをテキストエディターで開き、ファイルの末尾に次の行を追加します:disable-dco。OpenVPN 2.6 で導入されたデータチャネルオフロード (DCO) 機能は、特定のバージョンの Windows 10 や 11 などの一部の Windows システムと互換性がありません。この設定は DCO を無効にすることで、これらのデバイスでの潜在的な接続問題を解決します。

システムトレイの OpenVPN アイコンを右クリックし、[接続] をクリックして VPN 接続を確立します。

状態が「Connected」に変わり、IP アドレスが割り当てられれば、接続は成功です。

Linux クライアント
次のコマンドを実行して OpenVPN クライアントをインストールし、
confディレクトリを作成します。CentOS
yum install -y openvpn mkdir -p /etc/openvpn/confUbuntu
apt-get update apt-get install -y openvpn mkdir -p /etc/openvpn/confダウンロードした SSL クライアント証明書パッケージを解凍し、ファイルを /etc/openvpn/conf/ ディレクトリにコピーします。

/etc/openvpn/conf/ ディレクトリに移動し、次のコマンドを実行して VPN 接続を確立します。
openvpn --config /etc/openvpn/conf/config.ovpn --daemon(オプション) 起動時に OpenVPN プロセスが自動で開始されるように設定します。
/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/etc/rc.local ファイルに実行権限を付与します。
chmod +x /etc/rc.local
Android クライアント
Android 用 OpenVPN クライアントをダウンロードしてインストールします。
この例では、OpenVPN クライアント v3.0.5 がインストールされた Android 9.0 デバイスを使用します。
ダウンロードした SSL クライアント証明書パッケージを Android デバイスに転送し、解凍します。
説明Android デバイスに解凍ユーティリティがない場合は、コンピューターで証明書パッケージを解凍し、展開されたファイルを Android デバイスに転送できます。
次の図に示すように、展開されたすべてのファイルが同じフォルダーにあることを確認してください。

OpenVPN クライアントを開き、
config.ovpnファイルをインポートし、VPN 接続を追加します。
ステップ
説明
①
[OVPN プロファイル] の接続方法を選択します。
②
ストレージディレクトリで
config.ovpnファイルを見つけます。③
[インポート] をタップして
config.ovpnファイルをインポートします。④
クライアントは
config.ovpnファイルから設定をインポートし、VPN Gateway のパブリック IP アドレスを表示します。[追加] をタップして VPN 接続を追加します。トグルをタップして VPN 接続を有効にします。

macOS クライアント (GUI)
Tunnelblick リリースページを開き、最新の安定バージョンを見つけて dmg ファイルをダウンロードします。ここでは、バージョン
Tunnelblick 4.0.1 (build 5971)を例に、Assets パネルから.dmg形式のファイルをダウンロードします。
Tunnelblick ソフトウェアをインストールします。

ステップ
説明
①
ダウンロードした Tunnelblick インストーラーパッケージをダブルクリックします。
②
Tunnelblick アイコンをダブルクリックします。
③
[設定ファイルがあります] を選択します。
④
[OK] をクリックします。
ダウンロードした SSL クライアント証明書パッケージを解凍します。次に、解凍した
config.ovpnファイルを 設定 パネルにドラッグします。
ステップ
説明
①
Launchpad で Tunnelblick アイコンをクリックして Tunnelblick を開きます。
②
展開した
config.ovpnファイルを [設定] パネルにドラッグします。③
[自分のみ] を選択します。
④
[接続] をクリックします。
macOS クライアント (CLI)
ターミナルウィンドウを開きます。クライアントに Homebrew がインストールされていない場合は、次のコマンドを実行してインストールします。
説明Homebrew のインストールスクリプトには sudo コマンドが含まれており、管理者パスワードの入力を求められます。「Press RETURN/ENTER to continue...」と表示されたら、Enter キーを押して続行します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
次のコマンドを実行して、OpenVPN クライアントをインストールします。
brew install openvpn
ダウンロードした SSL クライアント証明書パッケージを、設定ディレクトリにコピーします。
/opt/homebrew/etc/openvpn ディレクトリをバックアップします。
cp -r /opt/homebrew/etc/openvpn /opt/homebrew/etc/openvpn_bak次のコマンドを実行して、現在の OpenVPN 設定ファイルを削除します。
rm /opt/homebrew/etc/openvpn/*次のコマンドを実行して、ダウンロードした SSL クライアント証明書パッケージを設定ディレクトリにコピーします。
cp /path/to/certs.zip /opt/homebrew/etc/openvpn/説明/path/to/certs.zipは、ダウンロードした SSL クライアント証明書パッケージへのパスです。通常は、現在のユーザーのダウンロードディレクトリにあります。例:/Users/example/Downloads/certs.zip。
次のコマンドを実行して、証明書パッケージを解凍します。
cd /opt/homebrew/etc/openvpn/ unzip /opt/homebrew/etc/openvpn/certs.zip実行モードを選択します。
フォアグラウンドでの実行
次のコマンドを実行してクライアントプロセスを開始し、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:接続のテスト
セキュリティグループルールの設定
クライアントが VPC 内のリソースにアクセスできるように、ECS インスタンスのセキュリティグループにインバウンドルールを追加して、[クライアント CIDR ブロック] (
10.200.200.0/24) からのトラフィックを許可します。接続テスト用:
pingコマンドが機能するように ICMP プロトコルを許可します。アプリケーションアクセス用: TCP 22 (SSH)、TCP 3389 (RDP)、または TCP 80/443 (Web サービス) など、サービスで必要な特定のポートを許可します。
Ping テスト
クライアントデバイスで ECS インスタンスに ping を実行します。ping が成功すると、ECS インスタンスへのプライベート接続が確立されたことを示します。
ping 10.0.0.1
サービスポートテスト
アプリケーションアクセスをさらに確認するには、ECS インスタンスで実行されているサービスに接続してみてください。たとえば、ECS インスタンスに Web サービス (Nginx など) をインストールして起動します。
# ECS インスタンスで実行 (Alibaba Cloud Linux 3 を例として使用) yum install -y nginx systemctl start nginx.serviceECS インスタンスのセキュリティグループがクライアント CIDR ブロックからの TCP ポート 80 トラフィックを許可していることを確認します。次に、クライアントで Web ブラウザーを開き、
http://10.0.0.1にアクセスします。Nginx のウェルカムページが表示されれば、アプリケーションアクセスは正常に機能しています。

よくある質問
ユーザー名とパスワード認証を使用するにはどうすればよいですか?
二要素認証を有効にできます。これにより、クライアントは SSL-VPN 接続を確立する前に、証明書とユーザー名/パスワードの両方で認証する必要があります。
接続時にクライアントは VPN Gateway のアドレスを入力する必要がありますか?
接続時に VPN Gateway のアドレスを手動で入力する必要はありません。コンソールからダウンロードした config.ovpn 設定ファイルには、すでに VPN Gateway のパブリック IP アドレスが含まれています。OpenVPN クライアントにインポートすると、追加の入力なしで自動的に認識します。
Alibaba Cloud SSL-VPN クライアントを別の OpenVPN クライアントと併用できますか?
はい、同時に使用できますが、設定ファイルの競合を避ける必要があります。複数の OpenVPN クライアントが同じ設定ディレクトリを共有している場合、証明書と config.ovpn ファイルが互いに上書きされたり、間違ったクライアントによって読み込まれたりして、OpenVPN の競合や接続障害が発生する可能性があります。
クライアントごとに個別のインストールを使用してください。
Alibaba Cloud SSL-VPN に使用する OpenVPN クライアントを、既存のクライアントとは 異なるパス にインストールします。たとえば、既存のクライアントが
C:\Program Files\OpenVPNにインストールされている場合、新しいクライアントを別のディレクトリにインストールします。各クライアントに独自の config フォルダーがあることを確認します。Alibaba Cloud SSL-VPN 証明書ファイルは、このトピックで使用するインストールディレクトリの config フォルダーにのみ展開してコピーします。
対応するインストールディレクトリのクライアントから接続を開始します。同じクライアントに複数の設定ファイルを置かないでください。
Linux または macOS で VPN から切断する方法
コマンドライン端末を開き、次のコマンドを実行して OpenVPN プロセスを見つけ、プロセス ID を書き留めます。
ps aux | grep openvpn次のコマンドを実行して OpenVPN プロセスを終了します。
kill -9 <process ID>
SSL-VPN 経由で接続した後も、Bastionhost を使用して SSH 経由で ECS インスタンスにログインする必要がありますか?
ほとんどの場合、必要ありません。SSL-VPN 接続が機能し、ECS インスタンスのセキュリティグループが [クライアント CIDR ブロック] からの TCP ポート 22 のトラフィックを許可している限り、SSH クライアントを使用してプライベート IP アドレスで直接 ECS インスタンスにログインできます。Bastionhost は必要ありません。
組織が運用のためにセッション監査、詳細な権限制御、または共有ログイン管理を必要とする場合は、Bastionhost を SSL-VPN と一緒に使用できます。ただし、Bastionhost は SSL-VPN 接続を確立したり、プライベート IP アドレス経由で ECS インスタンスにログインしたりするための前提条件ではありません。
接続問題のトラブルシューティング
SSL-VPN クライアントが接続すると、プライベート IP アドレスを介して同じ VPC 内の ECS インスタンスと自動的に通信できます。追加のルートエントリやネットワーク設定は必要ありません。したがって、接続が確立されてもアクセスが失敗する場合、原因は通常、VPN トンネル自体ではなく、ECS インスタンスのアクセス制御にあります。
症状 | 原因と解決策 |
接続が失敗する。たとえば、クライアントログに | 1. ネットワークの問題: クライアントデバイスが安定したインターネット接続を持っていること、およびローカルネットワークのファイアウォールやセキュリティソフトウェアが OpenVPN クライアントから VPN Gateway のパブリック IP アドレスとポート (デフォルトは TCP/1194) へのアクセスをブロックしていないことを確認します。 2. 証明書の問題: インポートした |
接続は成功したが、VPC 内の ECS インスタンスに | 1. セキュリティグループルール (最初にこれを確認): ping が失敗した場合、まず ECS コンソールにログインし、インスタンスのセキュリティグループに、SSL サーバーで設定された [クライアント CIDR ブロック] (例: 2. ECS 内部ファイアウォール: ECS インスタンスのオペレーティングシステムのファイアウォール (firewalld や iptables など) が ICMP リクエストをブロックしていないか確認します。 |
接続は成功し、 | 1. セキュリティグループルール: ECS インスタンスのセキュリティグループを確認し、クライアント CIDR ブロック からの関連するサービスポート (TCP 80 や TCP 22 など) のトラフィックを許可していることを確認します。 2. サービスのリスニング状態: ECS インスタンスにログインし、ポートがリスニング状態にあることを確認します (例: Linux システムで 3. ECS 内部ファイアウォール: ECS インスタンスにログインし、インスタンスのオペレーティングシステムのファイアウォールが必要なポートのトラフィックを許可していることを確認します。 |
VPN に接続した後、ローカルネットワーク (プリンターなど) やインターネットにアクセスできなくなる。 | ルーティングの競合: SSL サーバーで設定された [クライアント CIDR ブロック] が、ローカルネットワークの CIDR ブロックと競合している可能性があります。ステップ 1 に戻り、SSL サーバーのクライアント CIDR ブロックをあまり一般的でない範囲 (例: |
ECS インスタンスからクライアントに | これは想定される動作です。セキュリティ上の理由から、クライアントのオペレーティングシステムのファイアウォールは通常、VPN エンドポイントを含む外部ソースからの未承諾の着信接続をブロックします。これは、クライアントがクラウドリソースにアクセスする能力には影響しません。クラウドリソースがクライアントにアクセスする必要がある場合は、クライアントのファイアウォールで ICMP トラフィックを許可するように設定する必要があります。 |
その他の質問については、「SSL-VPN 接続に関する FAQ」をご参照ください。