このドキュメントでは、内部プロトコル転送と外部プロトコル転送の両方のプロトコル転送を構成する手順について説明します。プロトコル転送を構成する前に、プロトコル転送の概要をご覧ください。
外部プロトコル転送を設定する
このセクションでは、単一のターゲット インスタンスに TCP トラフィックを転送する転送ルールを使用して、外部プロトコル転送を設定する方法について説明します。IPv4 トラフィックと IPv6 トラフィックについて、それぞれ個別の手順が用意されています。
外部プロトコル転送を設定するには、単一の VM インスタンスを含むターゲット インスタンスを作成します。次に、ターゲット インスタンスにトラフィックを転送する外部リージョン転送ルールを作成します。
わかりやすくするために、この例ではデフォルトのネットワークとサブネットを使用しています。
外部トラフィックがターゲット インスタンスに到達できるようにファイアウォール ルールを作成します。
gcloud compute firewall-rules create
ALLOW_IPV4_FIREWALL_RULE_NAME \ --target-tags=allow-ipv4-ext \ --allow=tcp:80 \ --source-ranges=0.0.0.0/0VM を作成します。この例では、VM に Apache サーバーを設定します。
gcloud compute instances create
VM_INSTANCE_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ipv4-ext \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'前の手順で作成した VM を含むターゲット インスタンスを作成します。転送ルールは既存のターゲット リソースを参照する必要があるため、転送ルールを作成するには、あらかじめターゲット インスタンスを作成しておく必要があります。
gcloud compute target-instances create
TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE 静的外部 IPv4 アドレスを予約します。
gcloud compute addresses create
IPV4_ADDRESS \ --region=REGION TCP トラフィックをターゲット インスタンスに転送する転送ルールを作成します。転送ルールは、ターゲット インスタンスと同じリージョンに作成する必要があります。
gcloud compute forwarding-rules create
IPV4_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL \ --region=REGION \ --ip-protocol=TCP \ --address=IPV4_ADDRESS \ --ports=80 \ --target-instance=TARGET_INSTANCE_NAME \ --target-instance-zone=ZONE 設定をテストします。
転送ルールの IP アドレスを取得します。
gcloud compute forwarding-rules describe
IPV4_FORWARDING_RULE_NAME \ --region=REGION curl を使用してロードバランサへのウェブ リクエストを作成し、IP アドレスに接続します。
IP_ADDRESS
は、前の手順で取得した IP アドレスに置き換えます。$ while true; do curl -m1
IP_ADDRESS ; done出力は次のようになります。レスポンスを生成するバックエンド VM の名前が表示されます。
Page served from:
VM_INSTANCE_NAME .
IPv6 トラフィックを処理するには、ターゲット インスタンス バックエンドにデュアルスタック VM インスタンスがあるデュアルスタック サブネットが必要です。
カスタムモードの VPC ネットワークを作成します。
gcloud compute networks create
VPC_NAME \ --subnet-mode=customVPC ネットワーク内で、デュアルスタック サブネットを作成します。
gcloud compute networks subnets create
SUBNET_NAME \ --network=VPC_NAME \ --range=192.168.11.0/24 \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL \ --region=REGION 範囲
192.168.11.0/24
は IPv4 範囲の例です。新しいサブネットの任意のプライマリ IPv4 範囲を CIDR 表記で入力できます。詳細については、IPv4 サブネットの範囲をご覧ください。外部トラフィックがターゲット インスタンスに到達できるようにファイアウォール ルールを作成します。
gcloud compute firewall-rules create
ALLOW_IPV6_FIREWALL_RULE_NAME \ --network=VPC_NAME \ --target-tags=allow-ipv6-ext \ --allow=tcp:80 \ --source-ranges=::/0デュアルスタック VM を作成します。
gcloud compute instances create
VM_INSTANCE_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV4_IPV6 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ipv6-ext \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'前の手順で作成した VM を含むターゲット インスタンスを作成します。
gcloud compute target-instances create
TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE 静的外部 IPv6 アドレス範囲を予約します。
gcloud compute addresses create
IPV6_ADDRESS \ --region=REGION \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --endpoint-type=NETLBTCP トラフィックをターゲット インスタンスに転送する IPv6 転送ルールを作成します。転送ルールは、ターゲット インスタンスと同じリージョンに作成する必要があります。
gcloud compute forwarding-rules create
IPV6_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL \ --subnet=SUBNET_NAME \ --ip-version=IPV6 \ --region=REGION \ --address=IPV6_ADDRESS \ --network-tier=PREMIUM \ --target-instance=TARGET_INSTANCE_NAME \ --target-instance-zone=ZONE \ --ip-protocol=TCP \ --ports=80設定をテストします。
転送ルールの IP アドレスを取得します。
gcloud compute forwarding-rules describe
IPV6_FORWARDING_RULE_NAME \ --region=REGION curl を使用してロードバランサへのウェブ リクエストを作成し、IP アドレスに接続します。
IPV6_ADDRESS
は、前の手順で取得した IP アドレスに置き換えます。curl -6 'http://[
IPV6_ADDRESS ]:80'出力は次のようになります。レスポンスを生成するバックエンド VM の名前が表示されます。
Page served from:
VM_INSTANCE_NAME .
内部プロトコル転送を設定する
このセクションでは、単一のターゲット インスタンスに TCP トラフィックを転送する転送ルールを使用して、内部プロトコル転送を設定する方法について説明します。 IPv4 トラフィックと IPv6 トラフィックについて、それぞれ個別の手順が用意されています。
この例では、Apache サーバーがインストールされている単一の VM インスタンスを含むターゲット インスタンスを作成します。次に、ターゲット インスタンスにトラフィックを転送する内部リージョン転送ルールを作成します。
わかりやすくするために、この例ではデフォルトのネットワークとサブネットを使用しています。
内部トラフィックがターゲット インスタンスに到達できるようにファイアウォール ルールを作成します。
gcloud compute firewall-rules create
ALLOW_IPV4_FIREWALL_RULE_NAME \ --target-tags=allow-ipv4-int \ --allow=tcp \ --source-ranges=0.0.0.0/0ネットワーク タグ
allow-ssh
を使用して、VM との SSH 接続を許可するファイアウォール ルールを作成します。これは、クライアント VM への SSH 接続を確立するために使用されます。gcloud compute firewall-rules create
ALLOW_SSH_FIREWALL_RULE_NAME \ --target-tags=allow-ssh \ --allow=tcp:22 \ --source-ranges=0.0.0.0/0VM を作成します。
gcloud compute instances create
VM_INSTANCE_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ipv4-int \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'前の手順で作成した VM を含むターゲット インスタンスを作成します。転送ルールは既存のターゲット リソースを参照する必要があるため、転送ルールを作成するには、あらかじめターゲット インスタンスを作成しておく必要があります。
gcloud compute target-instances create
TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --zone=ZONE TCP トラフィックをターゲット インスタンスに転送する転送ルールを作成します。転送ルールは、ターゲット インスタンスと同じリージョンに作成する必要があります。
gcloud compute forwarding-rules create
IPV4_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL \ --network-tier=PREMIUM \ --region=REGION \ --ip-protocol=TCP \ --ports=80 \ --target-instance=TARGET_INSTANCE_NAME \ --target-instance-zone=ZONE テスト クライアント VM を作成します。
gcloud compute instances create
CLIENT_VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-sshこれで、このクライアント VM から転送ルールの IP アドレスにトラフィックを送信することで、プロトコル転送構成をテストできるようになりました。
設定をテストします。
転送ルールの IP アドレスを取得します。
gcloud compute forwarding-rules describe
IPV4_FORWARDING_RULE_NAME \ --region=REGION クライアント VM への SSH 接続を確立します。
gcloud compute ssh
CLIENT_VM_NAME \ --zone=ZONE curl を使用してロードバランサへのリクエストを作成し、IP アドレスに接続します。
$ while true; do curl -m1
IP_ADDRESS ; done出力は次のようになります。レスポンスを生成するバックエンド VM の名前が表示されます。
Page served from:
VM_INSTANCE_NAME .
IPv6 トラフィックを処理するには、ターゲット インスタンス バックエンドにデュアルスタック VM インスタンスがあるデュアルスタック サブネットが必要です。
--enable-ula-internal-ipv6
フラグを使用してカスタムモードの VPC ネットワークを作成し、このネットワークのサブネットに内部 IPv6 範囲を構成します。gcloud compute networks create
VPC_NAME \ --subnet-mode=custom \ --enable-ula-internal-ipv6VPC ネットワーク内で、デュアルスタック サブネットを作成します。
gcloud compute networks subnets create
SUBNET_NAME \ --network=VPC_NAME \ --range=192.168.11.0/24 \ --region=REGION \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=INTERNAL範囲
192.168.11.0/24
は IPv4 範囲の例です。新しいサブネットの任意のプライマリ IPv4 範囲を CIDR 表記で入力できます。詳細については、IPv4 サブネットの範囲をご覧ください。内部トラフィックがターゲット インスタンスに到達できるようにファイアウォール ルールを作成します。
gcloud compute firewall-rules create
ALLOW_IPV6_FIREWALL_RULE_NAME \ --network=VPC_NAME \ --target-tags=allow-ipv6-int \ --allow=tcp \ --source-ranges=::/0ネットワーク タグ
allow-ssh
を使用して VM への SSH 接続を許可するファイアウォール ルールを作成します。gcloud compute firewall-rules create
ALLOW_SSH_FIREWALL_RULE_NAME \ --network=VPC_NAME \ --target-tags=allow-ssh \ --allow=tcp:22 \ --source-ranges=0.0.0.0/0このファイアウォール ルールは、SSH を介して接続し、転送ルールの IP アドレスに HTTP トラフィックを送信するクライアント VM(以降の手順で作成)に適用されます。
デュアルスタック VM を作成します。
gcloud compute instances create
VM_INSTANCE_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV4_IPV6 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ipv6-int \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'前の手順で作成した VM を含むターゲット インスタンスを作成します。
gcloud compute target-instances create
TARGET_INSTANCE_NAME \ --instance=VM_INSTANCE_NAME \ --network=VPC_NAME \ --zone=ZONE TCP トラフィックをターゲット インスタンスに転送する IPv6 転送ルールを作成します。転送ルールは、ターゲット インスタンスと同じリージョンに作成する必要があります。
gcloud compute forwarding-rules create
IPV6_FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL \ --network-tier=PREMIUM \ --network=VPC_NAME \ --subnet=SUBNET_NAME \ --region=REGION \ --ip-protocol=TCP \ --ports=80 \ --target-instance=TARGET_INSTANCE_NAME \ --target-instance-zone=ZONE \ --ip-version=IPV6クライアント VM を作成します。
gcloud compute instances create
CLIENT_VM_NAME \ --subnet=SUBNET_NAME \ --stack-type=IPV4_IPV6 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh設定をテストします。
転送ルールの IP アドレスを取得します。
gcloud compute forwarding-rules describe
IPV6_FORWARDING_RULE_NAME \ --region=REGION クライアント VM への SSH 接続を確立します。
gcloud compute ssh
CLIENT_VM_NAME \ --zone=ZONE curl を使用して、転送ルールの IP アドレスに HTTP リクエストを送信します。
curl -6 'http://[
FORWARDING_RULE_IP_ADDRESS ]:80'出力は次のようになります。レスポンスを生成するバックエンド VM の名前がテキストで表示されます。
Page served from:
VM_INSTANCE_NAME .