オンプレミスからクラウド・リソースにセキュアかつプライベートにアクセスするために VPC/VPN ゲートウェイを使用する

このチュートリアルでは費用が発生します。 コスト見積もりツールを使用して、予測使用量に基づいてコスト見積もりを生成します。

IBM は、IBM Cloud のリソースを使用してオンプレミスのコンピューター・ネットワークをセキュアに拡張するためのさまざまな方法を提供しています。 これにより、クラウド・リソースが必要になったときにそれらをプロビジョニングし、不要になったときにそれらを削除するという弾力性を活用できます。 さらに、オンプレミスの機能を IBM Cloud サービスに簡単かつ安全に接続できます。

このチュートリアルでは、オンプレミス・サーバーとクラウド・リソース ( IBM Cloud® Virtual Private Cloud 仮想サービス・インスタンス (VSI) や IBM Cloud データ・サービスなど) との間の仮想プライベート・ネットワーク (VPN) 接続を示すリソースを自動的に作成します。 クラウド・リソースに対する DNS 解決も構成されます。 一般的なストロンスワン VPN ゲートウェイは、オンプレミスの VPN ゲートウェイを表すために使用されます。

目標

  • オンプレミスのデータセンターから仮想プライベートクラウド(VPC)環境へのアクセス
  • プライベートエンドポイントゲートウェイを使用してクラウドサービスに安全にアクセス
  • オンプレミスの DNS を使用して VPN 経由でクラウド・リソースにアクセスする

以下の図は、このチュートリアルで作成されるリソースを示しています。

" caption-side="bottom"}*の{: caption="図

Terraform 構成により、以下のリソースが作成されます。

  1. インフラストラクチャ(VPC、サブネット、ルール付きセキュリティグループ、Network ACL、VSI)。
  2. Object Storage および Databases for PostgreSQL データ・サービスへのプライベート・エンドポイント・ゲートウェイです。
  3. オンプレミスで strongSwan のオープン・ソースの IPsec ゲートウェイ・ソフトウェアを使用して、クラウド環境との VPN 接続を確立します。
  4. オンプレミス・リソースとクラウド・リソースの間のプライベート接続を可能にするために、VPC/VPN ゲートウェイがプロビジョンされます。
  5. オンプレミス DNS リゾルバーは、VPN を介して 仮想プライベート・エンドポイント・ゲートウェイへのアクセス を含むクラウド・リソースへの TLS アクセスを許可するために、クラウド DNS リゾルバー・ロケーションに接続されます。

開始前に

このチュートリアルでは、以下が必要です。

  • IBM Cloud CLI
    • IBM Cloud Schematics プラグイン (schematics)、
  • jq: JSON ファイルを照会します。
  • git to optionally clone source code repository,
  • Terraform CLI to optionally run Terraform on your desktop instead of the Schematics service.

ご使用のオペレーティング環境でこれらのツールをダウンロードおよびインストールするための手順は、チュートリアルの概説ガイドに記載されています。

このチュートリアルのオンプレミス・データ・センターは、VPC 内の VSI を使用してシミュレートされます。

VPC を接続するための推奨メカニズムは、Transit Gatewayです。 VPC、VSI、および VPN を使用したオンプレミス環境のシミュレーションは、説明のためにのみ使用されます。

さらに、以下を行います。

  • ユーザー許可があるか確認してください。 VPC リソースを作成および管理するための十分な許可がユーザー・アカウントに付与されていることを確認してください。 必要なパーミッションのリストについては、VPCリソースに必要なパーミッションの付与 を参照してください。
  • 仮想サーバーに接続するには、SSH 鍵が必要です。 SSH 鍵がない場合は、鍵を作成するためのステップを参照してください。

Schematics を使用してリソースを作成します。

  1. IBM Cloud にログインします。
  2. ワークスSchematicsの作成 移動し、テンプレートの指定セクションの下で確認する:
    1. リポジトリー URLhttps://github.com/IBM-Cloud/vpc-tutorials/tree/master/vpc-site2site-vpn です。
    2. Terraformのバージョンterraform_v1.2 です
  3. 「ワークスペースの詳細」 の下で、以下のようにします。
    1. ワークスペース名 VPN リスト を指定します。
    2. Resource GroupLocationを選択します。
    3. 「次へ」 をクリックします。
  4. 詳細を確認して、「作成」 をクリックします。
  5. 「変数」 セクションで、オーバーフロー・メニューをクリックし、各行の 「編集」 を選択して、必要な値 (resource_group_namessh_key_name) を指定します。 変数 maintenance の値は true に設定する必要があります。
  6. ページの上部までスクロールして、プランの適用 をクリックします。 ログを確認して、作成したサービスの状況を調べます。

以下をクリックし、接頭部が一致するインスタンスを選択して、作成されたリソースを探索します。 上の図のすべてのリソースを見つけます。

接続を確認する

Schematicsワークスペース出力には、VPN接続を検証するために使用できる変数が含まれています。

  1. ワークスペースのリストを取得し、ID 列をメモし、シェル変数を設定します。

    ibmcloud schematics workspace list
    
  2. WORKSPACE_ID 変数を設定します。

    WORKSPACE_ID=YOUR_WORKSPACE_ID
    
  3. クラウド・リソースの環境変数を取得します。

    ibmcloud schematics output --id $WORKSPACE_ID --output json | jq -r '.[0].output_values[].environment_variables.value'
    
  4. 出力は以下のようになります。 環境に設定するには、以下の結果をシェルにコピー・アンド・ペーストします。

    IP_FIP_ONPREM=169.48.x.x
    IP_PRIVATE_ONPREM=10.0.0.4
    IP_PRIVATE_CLOUD=10.1.1.4
    IP_FIP_BASTION=52.118.x.x
    IP_PRIVATE_BASTION=10.1.0.4
    IP_DNS_SERVER_0=10.1.0.5
    IP_DNS_SERVER_1=10.1.1.6
    IP_ENDPOINT_GATEWAY_POSTGRESQL=10.1.1.9
    IP_ENDPOINT_GATEWAY_COS=10.1.1.5
    HOSTNAME_POSTGRESQL=a43ddb63-dcb1-430a-a2e4-5d87a0dd12a6.6131b73286f34215871dfad7254b4f7d.private.databases.appdomain.cloud
    HOSTNAME_COS=s3.direct.us-south.cloud-object-storage.appdomain.cloud
    PORT_POSTGRESQL=32525
    
  5. VPN を介してジャンプするなど、さまざまなパスをたどる各インスタンスに SSH で接続できるようになりました。 この図は、各ステップで使用される通信パスを示しています。

    SSHキーがSSHのデフォルトでない場合は、オプション -I PATH_TO_PRIVATE_KEY_FILE を設定するか、SSHリファレンス・マニュアルを参照してください。

「接続の検証」
「接続の検証」

  1. オンプレミス VSI へのアクセスをテストします。
    ssh root@$IP_FIP_ONPREM
    
  2. クラウド要塞へのアクセスをテストします。
    ssh root@$IP_FIP_BASTION
    
  3. 要塞を介したクラウド VSI へのアクセスをテストします。
    ssh -J root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD
    
  4. オンプレミス、VPN トンネル、要塞を経由したクラウド VSI へのアクセスをテストします。
    ssh -J root@$IP_FIP_ONPREM,root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD
    
  5. 要塞経由、クラウド VSI 経由、VPN トンネル経由でオンプレミス VSI へのアクセスをテストします。
    ssh -J root@$IP_FIP_BASTION,root@$IP_PRIVATE_CLOUD root@$IP_PRIVATE_ONPREM
    

DNS 解決の検証

オンプレミスのDNS解決は、IBM Cloud VPCを使用するように構成されています。DNSリゾルバの場所。 これにより、クラウド・サービスに名前でアクセスし、プライベート・エンドポイント・ゲートウェイの IP アドレスに解決することができます。

仮想エンドポイント・ゲートウェイを介して Postgresql およびオブジェクト・ストレージに対する DNS 解決をテストします。 検証される 2 つのパスを以下の図に示します。

「DNS 解決の検証」
「DNS 解決の検証」

  1. オンプレミス VSI にアクセスします。

    ssh root@$IP_FIP_ONPREM
    
  2. 前にキャプチャーした 3 つの変数 ( HOSTNAME_POSTGRESQLHOSTNAME_COSPORT_POSTGRESQL) をコピーして貼り付けます。

  3. dig コマンドを実行して、仮想エンドポイント・ゲートウェイを介したデータベース・インスタンスへの解決を確認します。

    dig $HOSTNAME_POSTGRESQL
    
  4. telnet コマンドを発行して、データベースへの接続を検証します。 「接続済み」と表示されます。

    telnet $HOSTNAME_POSTGRESQL $PORT_POSTGRESQL
    
  5. データベースに接続したら、 Ctrl+C を発行して切断します。

  6. dig コマンドを実行して、仮想エンドポイント・ゲートウェイを介したクラウド・オブジェクト・ストレージ・インスタンスへの解決を確認します。

    dig $HOSTNAME_COS
    
  7. telnet コマンドを発行して、クラウド・オブジェクト・ストレージ・インスタンスへの接続を検証します。 「接続済み」と表示されます。

    telnet $HOSTNAME_COS 443
    
  8. クラウド・オブジェクト・ストレージ・インスタンスに接続したら、 Ctrl+C を発行して切断します。

問題がある場合は、github リポジトリーの トラブルシューティング セクションを参照してください。

オプションで、チュートリアルを展開します。

このチュートリアルに、追加や拡張が必要ですか。 以下にいくつかのアイデアを示します。

  • GitHub リポジトリー には、データベースとクラウド・オブジェクト・ストレージを使用するデプロイ可能なアプリケーションがあります。 デプロイ方法については、README に記載されています。
  • アプリケーション用にアプリケーション DNS ゾーンの追加をデプロイした場合。
  • 複数の Virtual Servers for VPC でアプリケーションを実行し、 ロード・バランサー を追加して、インバウンド・マイクロサービス・トラフィックを分散させます。

リソースを削除する

  1. Schematics のワークスペースにナビゲートし、ワークスペースをクリックします。
  2. アクション ...> リソースの破棄 をクリックします。
  3. 「アクション ...」>「ワークスペースの削除」 をクリックします。