arrow_back

高スループット VPN の構築

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

高スループット VPN の構築

Lab 1時間 universal_currency_alt クレジット: 7 show_chart 上級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP062

Google Cloud セルフペース ラボ

概要

このハンズオンラボでは、安全で高スループットの VPN を作成して速度をテストする方法を説明します。

Google Cloud と他のクラウド / オンプレミス システムとの間の安全な通信の確保は、一般的かつ極めて重要なニーズです。幸い Google Cloud では、この目標を達成する安全なインターネット プロトコル セキュリティ(IPsec)方式のバーチャル プライベート ネットワーク(VPN)を簡単に作成できます。必要なスループットが 1 つのトンネルで得られない場合、Google Cloud は、トラフィックを複数のトンネルにスムーズに分散して帯域幅を追加します。

目標

VPN を作成する

  • Google Cloud ネットワークをシミュレートする cloud という名前の Virtual Private Cloud(VPC)と、外部ネットワークをシミュレートする on-prem という名前の VPC(オンプレミス)を作成します。
  • cloud VPC の VPN ゲートウェイ、転送ルール、アドレスを作成します。
  • 新しい VPN 用のトンネルを形成し、それを通過するようにトラフィックをルーティングします。
  • on-prem VPC 用に VPN 作成プロセスを繰り返し、2 つ目の VPN を作成します。

VPN をテストする

  • Compute Engine を使用して、スループット負荷テスト用の仮想マシン(VM)を作成します。
  • iperf を使用して単一の VPN のスループット速度をテストします。

前提条件

タスク 1. cloud VPC の作成

このセクションでは、次の作業を行います。

  • クラウド本番環境ネットワークをシミュレートする VPC を作成します。
  • 一般的なタイプのトラフィックが VPC を通過できるようにします。
  • ホストをデプロイするためのサブネットを作成します。
  1. Cloud Shell を起動したら、次のコマンドを実行することにより、cloud という名前のカスタム VPC を作成して Google Cloud プロジェクトに関連付けます。
gcloud compute networks create cloud --subnet-mode custom

この VPC では、デフォルト以外の IP アドレス指定を使用できますが、デフォルトのファイアウォール ルールは含まれていません。

  1. 負荷テストの際は安全なシェルを使用して VM と通信する必要があるため、次のコマンドを実行して SSHicmp を有効にしておきます。
gcloud compute firewall-rules create cloud-fw --network cloud --allow tcp:22,tcp:5001,udp:5001,icmp
  1. 次のコマンドを実行して、この VPC 内にサブネットを作成し、リージョンと IP 範囲を指定します。
gcloud compute networks subnets create cloud-east --network cloud \ --range 10.0.1.0/24 --region {{{project_0.default_region_2 | REGION2}}}

このソリューションでは、10.0.1.0/24 リージョンを使用します。

タスク 2. on-prem VPC の作成

このセクションでは、on-prem VPC(または、cloud に接続するネットワーク)のシミュレーションを作成します。実際にはすでにリソースは存在しますが、トンネルを作成して構成を検証する目的で、次の手順を実行します。

  1. Cloud Shell で次のコマンドを実行することにより、on-prem という名前の新しいカスタム サブネット VPC を作成してプロジェクトに関連付けます。
gcloud compute networks create on-prem --subnet-mode custom
  1. 負荷テストの際は安全なシェルを使用して VM と通信する必要があるため、次のコマンドを実行して on-prem VPC 内のホスト用に SSHicmp を有効にしておきます。
gcloud compute firewall-rules create on-prem-fw --network on-prem --allow tcp:22,tcp:5001,udp:5001,icmp
  1. 次のコマンドを使用して、リージョンに対応するサブネット接頭辞を指定します。
gcloud compute networks subnets create on-prem-central \ --network on-prem --range 192.168.1.0/24 --region {{{project_0.default_region |REGION}}} 注: この例では、「192.168.1.0/24」を リージョンに割り当てます。 サブネットワークとファイアウォール ルールを備えた 2 つのカスタム VPC を作成します。

タスク 3. VPN ゲートウェイの作成

環境ごとに、安全な外部通信のための VPN ゲートウェイが必要です。次の手順で cloud VPC と on-prem VPC の初期ゲートウェイを作成します。

  1. Cloud Shell で、on-prem VPC と リージョンに on-prem-gw1 という名前の VPN ゲートウェイを作成します。
gcloud compute target-vpn-gateways create on-prem-gw1 --network on-prem --region {{{project_0.default_region |REGION}}}
  1. 次に、cloud VPC と リージョンに cloud-gw1 という名前の VPN ゲートウェイを作成します。
gcloud compute target-vpn-gateways create cloud-gw1 --network cloud --region {{{project_0.default_region_2 | REGION2}}}

タスク 4. ローカル ネットワークと Google Cloud ネットワーク間のルートベースの VPN トンネルを作成する

VPC 外部のシステムから通信できるよう、それぞれの VPN ゲートウェイには静的な外部 IP アドレスが必要です。これから、cloud VPC と on-prem VPC で IP アドレスとルートを作成します。

  1. Cloud Shell で、cloud-gw1 VPN ゲートウェイの IP を割り当てます。
gcloud compute addresses create cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}
  1. on-prem-gw1 VPN ゲートウェイの IP を割り当てます。
gcloud compute addresses create on-prem-gw1 --region {{{project_0.default_region |REGION}}}
  1. ここで、後のコマンドで参照しなくてすむようにゲートウェイのアドレスを保存します。

cloud-gw1 ゲートウェイ用:

cloud_gw1_ip=$(gcloud compute addresses describe cloud-gw1 \ --region {{{project_0.default_region_2 | REGION2}}} --format='value(address)')

on-prem-gw1 ゲートウェイ用:

on_prem_gw_ip=$(gcloud compute addresses describe on-prem-gw1 \ --region {{{project_0.default_region |REGION}}} --format='value(address)')
  1. 次に、cloud VPC で IPsec の転送ルールを作成します。両方向で転送ルールを作成する必要があります。

cloud-gw1 からカプセル化セキュリティ ペイロード(ESP)プロトコルを転送します。

gcloud compute forwarding-rules create cloud-1-fr-esp --ip-protocol ESP \ --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}

cloud-gw1 から UDP:500 トラフィックを転送します。

gcloud compute forwarding-rules create cloud-1-fr-udp500 --ip-protocol UDP \ --ports 500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}

cloud-gw1 から UDP:4500 トラフィックを転送します。

gcloud compute forwarding-rules create cloud-fr-1-udp4500 --ip-protocol UDP \ --ports 4500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region {{{project_0.default_region_2 | REGION2}}}
  1. 同じ方法で、on-prem VPC で IPsec トンネルのファイアウォール転送ルールを作成します。このステップにより、IPsec トンネルがファイアウォールの外に出られるようになります。

on-prem-gw1 から ESP プロトコルを転送します。

gcloud compute forwarding-rules create on-prem-fr-esp --ip-protocol ESP \ --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region {{{project_0.default_region |REGION}}}

on-prem-gw1 から IPsec トンネルの確立に使用される UDP:500 トラフィックを転送します。

gcloud compute forwarding-rules create on-prem-fr-udp500 --ip-protocol UDP --ports 500 \ --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region {{{project_0.default_region |REGION}}}

on-prem-gw1 から暗号化されたトラフィックを伝送する UDP:4500 トラフィックを転送します。

gcloud compute forwarding-rules create on-prem-fr-udp4500 --ip-protocol UDP --ports 4500 \ --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region {{{project_0.default_region |REGION}}} 2 つの VPN ゲートウェイと必要な転送ルールを作成します。

通常は、次のステップでトンネルの on-prem-tunnel1cloud-tunnel1 を作成、検証する際に使用するシークレットを生成する必要があります。シークレットを作成して安全に保存する方法の詳細については、Secret Manager のコンセプトの概要ガイドをご覧ください。ここでは、文字列 "sharedsecret" を使用します。

ローカル ネットワーク用のトンネル on-prem-tunnel1 と、クラウドベースのネットワーク用のトンネル cloud-tunnel1 を作成します。それぞれのネットワークに VPN ゲートウェイが必要であり、シークレットが一致する必要があります。次の 2 つのコマンドで、[MY_SECRET](本番環境のシナリオでは生成したシークレットで置き換える)を "sharedsecret" で置き換えてください。

  1. on-prem から cloud への VPN トンネルを作成します。
gcloud compute vpn-tunnels create on-prem-tunnel1 --peer-address $cloud_gw1_ip \ --target-vpn-gateway on-prem-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \ --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region {{{project_0.default_region |REGION}}}
  1. cloud から on-prem への VPN トンネルを作成します。
gcloud compute vpn-tunnels create cloud-tunnel1 --peer-address $on_prem_gw_ip \ --target-vpn-gateway cloud-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \ --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region {{{project_0.default_region_2 | REGION2}}}

これで、ゲートウェイが作成されてトンネルが構築されたため、サブネットから 2 つのトンネルを通過するルートを追加する必要があります。

  1. on-prem VPC から cloud 10.0.1.0/24 範囲へのトラフィックをトンネルにルーティングします。
gcloud compute routes create on-prem-route1 --destination-range 10.0.1.0/24 \ --network on-prem --next-hop-vpn-tunnel on-prem-tunnel1 \ --next-hop-vpn-tunnel-region {{{project_0.default_region |REGION}}}
  1. cloud VPC から on-prem 192.168.1.0/24 範囲へのトラフィックをトンネルにルーティングします。
gcloud compute routes create cloud-route1 --destination-range 192.168.1.0/24 \ --network cloud --next-hop-vpn-tunnel cloud-tunnel1 --next-hop-vpn-tunnel-region {{{project_0.default_region_2 | REGION2}}} 2 つの VPN トンネルを作成します。

タスク 5. VPN 上のスループットのテスト

この時点で、on-prem VPC と cloud VPC との間に安全なパスが確立されました。スループットをテストするには、iperf を使用します。これは、ネットワーク負荷テスト用のオープンソース ツールです。テストを行うには、トラフィックの送信環境と受信環境のそれぞれに VM が必要です。次に VM を作成します。

単一の VPN の負荷テスト

ここでは、cloud VPC 用に cloud-loadtest という名前の仮想マシンを作成します。OS には Debian Linux イメージを使用します。

注: 既存のプロジェクトがある場合は、このステップを省略して既存のリソースを使用できます。VM の帯域幅は vCPU 数 x 2 Gbps なので、少なくとも 4 個の vCPU が必要です。
  1. 以下のコマンドを実行します。
gcloud compute instances create "cloud-loadtest" --zone {{{project_0.default_zone_2 |ZONE2}}} \ --machine-type "e2-standard-4" --subnet "cloud-east" \ --image-family "debian-11" --image-project "debian-cloud" --boot-disk-size "10" \ --boot-disk-type "pd-standard" --boot-disk-device-name "cloud-loadtest"
  1. on-prem VPC 用に on-prem-loadtest という名前の仮想マシンを作成します。この例では cloud VPC の OS と同じ Debian イメージを使用しています。既存のリソースがある場合はこのステップを省略します。

以下のコマンドを実行します。

gcloud compute instances create "on-prem-loadtest" --zone {{{project_0.default_zone |ZONE}}} \ --machine-type "e2-standard-4" --subnet "on-prem-central" \ --image-family "debian-11" --image-project "debian-cloud" --boot-disk-size "10" \ --boot-disk-type "pd-standard" --boot-disk-device-name "on-prem-loadtest"
  1. コンソールかコマンドラインを使用して各 VM への SSH を開始し、次のコマンドラインを使用して iperf のコピーをインストールします。
sudo apt-get install iperf
  1. on-prem-loadtest VM で、次のコマンドを実行します。
iperf -s -i 5

5 秒ごとにステータスを報告する iperf サーバーが VM 上に作成されます。

  1. cloud-loadtest VM で、次のコマンドを実行します。
iperf -c 192.168.1.2 -P 20 -x C

20 のストリームがある iperf クライアントが 1 つ作成されます。テストの 10 秒後に値が報告されます。

2 つの VM を作成し、SSH 経由で iperf をインストールします。

問題が発生した場合のトラブルシューティング

注: これはラボの手順の一部ではありません。
  1. ローカル ネットワーク用のトンネルを作成する際に [MY_SECRET] を "sharedsecret" に置き換えるのを忘れた場合。

作成した VPN トンネルを次のコマンドで削除できます。

gcloud compute vpn-tunnels delete [tunnel-name] --region [region]
  • [tunnel-name] は、トンネルの名前に置き換えます。
  • [region] は、トンネルの作成時に指定したリージョンに置き換えます。
  1. 「単一の VPN の負荷テスト」の手順で問題が発生する場合は次のようにします。
  • 両方の VM に iperf がインストールされていることを確認します。

  • 接続拒否エラーが発生する場合は次のことを確認します。

    • 作成したネットワーク用のファイアウォール ルール(tcp:5001)
    • サーバーが on-prem-loadtest で正常に実行されている
    • cloud-loadtest 経由でサーバーに接続しようとしている
  1. コンソールで作成した転送ルールを確認する場合:
  • [ナビゲーション メニュー] で [ネットワーキング] セクションに移動します。
  • [ネットワーク接続] > [VPN] の順にクリックします。
  • [Cloud VPN ゲートウェイ] をクリックして [Cloud VPN ゲートウェイの詳細] ページを表示します。

お疲れさまでした

クエストを完了する

これらのセルフペース ラボは、「ネットワークのパフォーマンスと最適化」と「セキュリティとアイデンティティの基礎」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

Cloud CDN」に進んでクエストを続けるか、以下のおすすめのラボをご確認ください。

次のステップ

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 1 月 10 日

ラボの最終テスト日: 2024 年 1 月 10 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。