IBM Cloud Docs
VPN サーバーの作成

VPN サーバーの作成

VPN サーバーを作成して、クライアントがセキュアな接続を維持しながらインターネットから VPC ネットワークに接続できるようにします。

VPNサーバーは、コンソール、CLI、またはAPIを使用して作成できます。

開始前に

VPN サーバーをプロビジョンする前に、以下の前提条件を記載されている順番で実行してください。

  1. VPN サーバーに関する計画時の考慮事項を確認します。

  2. VPNクライアントの認証モードを、証明書ベース、ユーザーIDとパスコード、またはその両方から選択します。 詳しくは、クライアントとサイト間の認証のセットアップを参照してください。

  3. Secrets Manager サービス・インスタンスを作成 し、 証明書を管理 します。

    これらの考慮事項 を念頭に置いて、 プライベート証明書を作成 することをお勧めします。

  4. VPNサーバーとIBM Cloud Secrets ManagerのIAMサービス間認証 を作成します。

  5. 選択した VPC に VPC と少なくとも 1 つのサブネットを作成 します。

    高可用性のために、1 つの VPC と 2 つのサブネットを 2 つの異なるゾーンに作成します。 VPN サーバーは 2 つのサブネット内にあります。

コンソールでVPNサーバーを作成する

コンソールでクライアント・ツー・サイトVPNサーバーを作成するには:

  1. 『始める前に』セクションの前提条件をすべて完了します。

  2. ブラウザから、 IBM Cloud コンソールを開き、アカウントにログインします。

  3. ナビゲーションメニューメニューアイコン 選択し、「インフラ > ネットワーク > VPN クリックする。

  4. ページ右上の**「作成」**をクリックします。

  5. VPNの種類]セクションで、[ クライアントからサイトへのサーバー ]をクリックします。

    VPN タイプ・セクション
    VPN タイプ・セクション

    Locations」セクションには、VPCが配置され、VPNサーバーがプロビジョニングされる地域が表示されます。

  6. 「詳細」セクションで次の情報を指定します。

    • VPN サーバー名 - VPN サーバーの名前 (my-vpn-server など) を入力します。

    • リソース・グループ - VPN サーバーのリソース・グループを選択します。

    • タグ- オプションで、タグを追加して、リソースの整理、使用コストの追跡、アクセス管理を行うことができます。

    • アクセス管理タグ-オプションで、アクセス制御関係の編成に役立つアクセス管理タグをリソースに追加します。 サポートされるアクセス管理タグの形式は key:value のみです。 詳しくは、タグを使用したリソースに対するアクセス権限の制御を参照してください。

    • 仮想プライベート・クラウド - VPN サーバーの VPC を選択します。

    • クライアント IPv4 アドレス・プール - CIDR の範囲を入力します。 クライアントには、このアドレス・プールからのセッションの IP アドレスが割り当てられます。

      「VPN の詳細」セクション
      「VPN の詳細」セクション

  7. 「サブネット」セクションで次の情報を指定します。

    • VPN サーバー・モードを選択します。

      • 高可用性モード - 異なるゾーンにある 2 つのサブネットにわたって VPN サーバーをデプロイします。 クライアントの VPN アクセスが重要なマルチゾーン・デプロイメントおよびソリューションに最適です。
      • スタンドアロン・モード - VPN サーバーを単一のサブネットおよびゾーンにデプロイします。 マルチゾーンの回復力が不要な単一ゾーン・デプロイメントに最適です。
    • VPC の 1 つのサブネット (スタンドアロン・モード) または複数のサブネット (HA モード) を指定します。

      「VPN サブネット」セクション
      「VPN サブネット」セクション

  8. 「認証」セクションで次の情報を指定します。

    • VPN サーバー認証- Secrets Managerからサーバー SSL 証明書を選択します。 すべての必須フィールドに入力します。

      VPN サーバー認証セクション
      VPN サーバー認証セクション

    • クライアント認証モード - クライアント証明書、ユーザー ID とパスコード、またはその両方を選択し、それを使用したユーザー認証を構成します。

      • クライアント証明書 - クライアント証明書を選択してユーザー ID とパスコードを構成することにより、最適なセキュリティーを実現できます。 ユーザーIDとパスコードは、アカウントアクセスに追加のログイン認証情報を必要とするセキュリティの追加レイヤーを提供します。

        オプションで、証明書失効リスト (CRL) を PEM 形式でアップロードできます。 CRL をアップロードすると、PEM ファイルは VPN サーバーの名前として表示されます。

      • ユーザー ID とパスコード-VPN クライアント・ユーザーの追加認証を構成します。 この認証方式は、 IBM Cloud IAMと統合してクライアント認証を完了する、セキュリティの追加レイヤーを提供します。 認証が完了すると、システムは認証用のコードを openVPN クライアントに渡す。

      VPN クライアント認証セクション
      VPN クライアント認証セクション

  9. 「セキュリティー・グループ」セクションで、少なくとも 1 つのセキュリティー・グループを選択します。

    1つまたは複数のセキュリティグループとそのルールを設定したり、VPNサーバを配置する予定のサブネットや、VPNトンネルを介して通信する他のVPCサブネットにアクセス制御リスト(ACL)を設定したりするには、「 VPNサーバで使用するACLの設定 」を参照してください。

    「VPN セキュリティー・グループ」セクション
    「VPN セキュリティー・グループ」セクション

    VPN サーバーの詳細ページ (「セキュリティー・グループ」タブ) からプロビジョニング後にセキュリティー・グループを関連付けることができます。

  10. **「追加構成 (Additional configuration)」**セクションで次の情報を指定します。

    • DNS サーバーの IP アドレス - オプションで、ドメイン・ネーム解決のために 1 つまたは 2 つの DNS サーバー IP アドレスを指定します。

    • アイドル・タイムアウト・セッション (秒数) - この期間が経過しても VPN サーバーにトラフィックがない場合、自動的に切断されます。 この値は 0 秒から 28800 秒の間の値を指定できます。 デフォルト値は 600 秒です。

    • トランスポート・プロトコル - 以下のいずれかのプロトコルを選択し、有効な VPN ポート (1 - 65535) を入力します。

      • UDP はエラー検査を実行するが、エラーのあるパケットを破棄するコネクションレス・プロトコルです。 TCP よりも高速です。
      • TCP はエラー検査とエラー・リカバリーを行う、コネクション指向型プロトコルです。 UDP よりも信頼性が高いプロトコルです。
    • トンネル・モード - 以下のいずれかを指定します。

      • フル・トンネル - すべてのトラフィックが VPN インターフェースを経由して VPN トンネルに流れます。

      • スプリット・トンネル - プライベート・トラフィックは VPN インターフェースを介して VPN トンネルに流れ、パブリック・トラフィックは既存の LAN インターフェースを介して流れます。

        VPN 追加構成セクション
        VPN 追加構成セクション

CLIからVPNサーバーを作成する

開始する前に、 CLI 環境をセットアップします

CLIからVPNサーバーを作成するには、以下のコマンドを入力する:

ibmcloud is vpn-server-create --subnets SUBNETS --client-ip-pool CLIENT_IP_POOL --cert CERT (--client-auth-methods certificate | username | certificate,username | username,certificate) [--client-ca CLIENT_CA] [--client-crl CLIENT_CRL] [--client-dns CLIENT_DNS] [--client-idle-timeout CLIENT_IDLE_TIMEOUT] [--enable-split-tunnel false | true] [--port PORT] [--protocol udp | tcp] [--security-group SECURITY_GROUP1 --security-group SECURITY_GROUP2 ...] [--name NAME] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]

コマンド・オプション

  • --subnets: この VPN サーバーをプロビジョンするサブネットのコンマ区切りの ID。 高可用性を確保するには異なるゾーンのサブネットを使用します。最大で 2 つのサブネットを設定できます。
  • --client-ip-pool: CIDR 形式で表される VPN クライアントの IPv4 アドレス・プール。 要求は、VPC 内の既存のアドレス接頭辞、または予約済みアドレス範囲である 127.0.0.0/8 (IPv4 ループバック・アドレス)、161.26.0.0/16 (IBM サービス)、166.8.0.0/14 (クラウド・サービス・エンドポイント)、169.254.0.0/16 (IPv4 リンクローカル・アドレス)、224.0.0.0/4 (IPv4 マルチキャスト・アドレス) のいずれかとオーバーラップできません。 クライアント IP アドレス・プールの CIDR の接頭辞の長さは、/9 (8,388,608 個のアドレス) と /22 (1024 個のアドレス) の間である必要があります。 最大数の同時接続を可能にするために必要な IP アドレス数の倍の数を含む CIDR ブロックが推奨されます。
  • --cert: この VPN サーバーの証明書インスタンス CRN。
  • --client-auth-methods: クライアント認証方式のコンマ区切りリスト。 certificateusernamecertificate,usernameusername,certificate のいずれかです。
  • --client-ca: VPN クライアント認証局 (CA) に使用する証明書インスタンスの CRN。
  • --client-crl: CRL | @CRL-file。 PEM 形式でエンコードされた証明書失効リストの内容。
  • --client-dns: この VPN サーバーに接続された VPN クライアントに提供される、コンマ区切りの DNS サーバー・アドレス。 最大で 2 つの DNS サーバーを設定できます。
  • --client-idle-timeout: VPN クライアントがアイドル状態になっている時間がこの秒数に達すると、この VPN サーバーが接続を切断する秒数。 アイドル状態のクライアントをサーバーが切断しないようにするには、0 を指定します (デフォルト: 600)。
  • --enable-split-tunnel: この VPN サーバー上でスプリット・トンネリングが有効になっているかどうかを示します。 falsetrue のいずれかです (デフォルト: false)。
  • --port: この VPN サーバーに使用するポート番号 (デフォルト: 443)。
  • --protocol: この VPN サーバーに使用するトランスポート・プロトコル。 udptcp のいずれか (デフォルト: udp)。
  • --security-group: セキュリティー・グループの ID。
  • --name: VPN サーバーの新しい名前。
  • --resource-group-id: リソース・グループの ID。 このオプションは --resource-group-name と同時に指定することはできません。
  • --resource-group-name: リソース・グループの名前。 このオプションは --resource-group-id と同時に指定することはできません。
  • --output: 出力形式を指定します。JSON のみがサポートされています。 次のいずれか: JSON
  • -q, --quiet: 詳細出力を抑制します。

コマンドの例

  • ibmcloud is vpn-server-create --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.165.7.0/20 --client-auth-methods certificate --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc
  • ibmcloud is vpn-server-create --name myvpnserver --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.166.7.0/20 --client-auth-methods username
  • ibmcloud is vpn-server-create --name myvpnserver2 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.167.7.0/20 --client-auth-methods username --client-dns 9.9.9.9,8.8.8.8 --protocol tcp --port 8888 --enable-split-tunnel true --client-idle-timeout 1200
  • ibmcloud is vpn-server-create --name myvpnserver3 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.168.7.0/20 --client-auth-methods username --security-group r006-e32f671c-463d-4f93-88e3-2dd0413476b4 --security-group r006-3af7a9db-d9bc-43d4-bced-93e0a33fee25
  • ibmcloud is vpn-server-create --subnets 0736-4b871e22-e819-4f87-bb17-e457a88246a2 --client-ip-pool 192.170.0.0/22 --client-dns 172.34.1.100 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-auth-methods certificate,username --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-crl @./openvpn/crl.pem --name vpnswithcrl --security-group r006-5744b689-e5c4-461d-9f9b-ce5e7e8dbed6

APIを使用したVPNサーバーの作成

APIを使ってクライアント-サイト間VPNサーバーを作成するには、以下の手順に従ってください:

  1. 適切な変数を設定して API 環境をセットアップします。

  2. API コマンドで使用する追加の変数を格納します。次に例を示します。

    • ResourceGroupId - get resource groups コマンドを使用してリソース・グループ ID を確認してから、変数に設定します。

      export ResourceGroupId=<your_resourcegroup_id>
      
    • SubnetId - get subnet コマンドを使用してサブネット ID を確認してから、変数に設定します。

      export SubnetId=<your_subnet_id>
      
  3. すべての変数が開始されたら、VPN サーバーを作成します。

       curl -X POST "$vpc_api_endpoint/v1/vpn_servers?version=$api_version&generation=2" \
         -H "Authorization: $iam_token" \
         -d '{
            "certificate": {
                "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc"
             },
            "client_ip_pool": "192.168.50.0/22",
            "name": "my-new-vpn-server",
            "subnets": [
                {
                      "id": "0716-046c3fd3-1cc5-40f6-b0ad-bbc305308f6d"
                },
                {
                      "id": "0717-30ff71ff-3e90-42a9-aa93-96a062081f18"
                }
             ],
            "client_authentication": [
                {
                      "method": "certificate",
                      "client_ca": {
                         "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc"
                      }
                },
                {
                      "method": "username",
                      "identity_provider": {
                         "provider_type": "iam"
                      }
                }
             ]
            "resource_group": {
              "id": "'$ResourceGroupId'"
            }
          }'
    

次のステップ

  1. VPN サーバーが正常に作成されたことを確認するには、数分待ってから Client-to-site servers テーブルにアクセスして、VPN サーバーのステータスが Stable で、Health ステータスが Healthy であることを確認してください。
  2. VPN 経路を作成します。
  3. VPN クライアント環境をセットアップして VPN サーバーに接続します