1. 概要
Cloud NAT は強力なツールです。これを使用すると、Compute Engine と Google Kubernetes Engine(GKE)のワークロードは、外部 IP を使用した外部からのアクセスにさらされることなく、スケーラブルかつ安全にインターネット リソースにアクセスできます。
Cloud NAT はプロキシレス設計を特徴とし、Andromeda SDN レイヤに NAT を直接実装します。そのため、ワークロードのパフォーマンスに影響を及ぼすことなく、さまざまな VM、リージョン、VPC に無理なくスケールできます。
NAT ルールは Cloud NAT の拡張機能です。Cloud NAT の NAT ルール機能を使用すると、Cloud NAT を使用してインターネットに接続する方法を定義するアクセスルールを作成できます。現在、NAT ルールは宛先アドレスに基づく送信元 NAT アドレスの選択をサポートしています。
NAT ルールがない場合、Cloud NAT が有効になっている VM は、同じ NAT IP アドレスセットを使用してすべてのインターネット アドレスに到達します。
NAT のユースケースによっては、特定の宛先に異なる送信元 IP アドレスを使用するように Cloud NAT を構成する必要があります。NAT ルールは、一致条件と対応するアクションを定義します。NAT ルールを指定すると、パケットが各 NAT ルールと照合されます。ルールが一致すると、その一致に対応するアクションが実行されます。
詳細については、NAT ルールに関するドキュメント セクション をご覧ください。
学習内容
- NAT ルールの準備として Cloud NAT ゲートウェイを設定する方法。
- Common Expression Language(CEL)を使用して NAT ルールを設計する方法。
- NAT ルールを作成して NAT ゲートウェイに接続する方法。
- インスタンスから NAT ルールをテストする方法。
- NAT ゲートウェイのルールを更新する方法。
- NAT ルールを削除して、デフォルトの Cloud NAT の動作に戻す方法。
必要なもの
- Google Compute Engine に関する基本的な知識
- ネットワークと TCP/IP に関する基本的な知識
- Unix / Linux コマンドラインに関する基本的な知識
- Google Cloud のネットワーキング ラボなど、GCP のネットワーキングのツアーを完了していると、手順を進める上で役立ちます。
- Cloud NAT の基本を理解している。
2. Google Cloud コンソールと Cloud Shell を使用する
このラボでは、GCP を操作するために、Google Cloud Console と Cloud Shell の両方を使用します。
Google Cloud Console
Cloud コンソールには、https://console.cloud.google.com からアクセスできます。

セルフペース型の環境設定
- Cloud コンソールにログインして、新しいプロジェクトを作成するか、既存のプロジェクトを再利用しますGmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



- プロジェクト名は、このプロジェクトの個人識別子です。命名規則に従っていれば、任意の名前を使用でき、いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成するか、独自の ID を試して使用可能かどうかを確認できます。プロジェクトの作成後、ID は「フリーズ」されます。
- 次に、Google Cloud リソースを使用するために、Cloud Console で課金を有効にする必要があります。
このコードラボを実行しても、費用はほとんどかからないはずです。このチュートリアル以外で請求が発生しないように、リソースのシャットダウン方法を説明する「クリーンアップ」セクションの手順に従うようにしてください。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell の起動
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
GCP Console で右上のツールバーにある Cloud Shell アイコンをクリックします。

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。このラボでの作業はすべて、ブラウザから実行できます。
3. ラボの設定
このラボでは、プロジェクトを使用して、それぞれにサブネットを含む 2 つの VPC を作成します。外部 IP アドレスを予約し、Cloud NAT ゲートウェイ(Cloud Router を使用)、2 つのプロデューサー インスタンス、コンシューマー インスタンスを作成して構成します。デフォルトの Cloud NAT の動作を検証したら、Cloud NAT カスタムルールを作成して、その動作を検証します。
ネットワーキング アーキテクチャの概要:

4. 外部 IP アドレスを予約する
このラボで使用するすべての外部 IP アドレスを予約しましょう。これにより、コンシューマー VPC とプロデューサー VPC の両方に関連する NAT ルールとファイアウォール ルールをすべて記述できます。
Cloud Shell から:
gcloud compute addresses create nat-address-1 nat-address-2 nat-address-3 producer-address-1 producer-address-2 --region us-east4
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Created [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
予約した IP アドレスを環境変数として入力します。
export natip1=`gcloud compute addresses list --filter name:nat-address-1 --format="get(address)"` export natip2=`gcloud compute addresses list --filter name:nat-address-2 --format="get(address)"` export natip3=`gcloud compute addresses list --filter name:nat-address-3 --format="get(address)"` export producerip1=`gcloud compute addresses list --filter name:producer-address-1 --format="get(address)"` export producerip2=`gcloud compute addresses list --filter name:producer-address-2 --format="get(address)"`
出力は想定されていませんが、アドレスが正しく入力されたことを確認します。すべての環境変数の値を出力してみましょう。
$ env | egrep '^(nat|producer)ip[1-3]'
出力:
producerip1=<Actual Producer IP 1> producerip2=<Actual Producer IP 2> natip1=<NAT IP 1> natip2=<NAT IP 2> natip3=<NAT IP 3>
5. プロデューサー VPC とインスタンスの設定。
次に、プロデューサー リソースのリソースを作成します。プロデューサー VPC で実行されているインスタンスは、2 つのパブリック IP(producer-address-1 と producer-address-2)を使用してインターネットに接続するサービスを提供します。
まず、VPC を作成します。Cloud Shell から:
gcloud compute networks create producer-vpc --subnet-mode custom
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/producer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 producer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
次に、us-east4 にサブネットを作成します。Cloud Shell から:
gcloud compute networks subnets create producer-e4 \ --network producer-vpc --range 10.0.0.0/24 --region us-east4
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/producer-e4]. NAME REGION NETWORK RANGE producer-e4 us-east4 producer-vpc 10.0.0.0/24
次に、NAT IP アドレスがポート 8080 のプロデューサー インスタンスに到達できるようにする VPC ファイアウォール ルールを作成します。
最初のルールの場合、Cloud Shell から次の操作を行います。
gcloud compute firewall-rules create producer-allow-8080 \ --network producer-vpc --allow tcp:8080 \ --source-ranges $natip1,$natip2,$natip3
出力:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/producer-allow-8080]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED producer-allow-8080 producer-vpc INGRESS 1000 tcp:8080 False
次のステップでは、2 つのプロデューサー インスタンスを作成します。
プロデューサー インスタンスは、Docker Hub で利用可能な Docker コンテナで IP エコー サービスを実行します(ソースコードはサービス作成者の GitHub リポジトリで入手できます)。
必要なソフトウェアをすべて備えたインスタンスをすばやくプロビジョニングするには、Compute Engine でのコンテナのデプロイ機能を使用します。
NAT ルールを作成できるように、各インスタンスに異なる予約済み IP アドレスをプロビジョニングします。
最初のインスタンスを作成します。Cloud Shell から:
gcloud compute instances create-with-container producer-instance-1 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-1,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-1 us-east4-a e2-medium 10.0.0.2 <producer IP 1> RUNNING
次に、2 つ目のインスタンスを作成します。Cloud Shell から:
gcloud compute instances create-with-container producer-instance-2 \ --zone=us-east4-a --machine-type=e2-medium \ --network-interface=address=producer-address-2,network-tier=PREMIUM,subnet=producer-e4 \ --container-image=mpolden/echoip --container-restart-policy=always
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/producer-instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS producer-instance-2 us-east4-a e2-medium 10.0.0.3 <producer IP 2> RUNNING
6. コンシューマー VPC、Cloud NAT、インスタンスを設定する
プロデューサー サービスを作成したので、次はコンシューマー VPC とその Cloud NAT ゲートウェイを作成します。
VPC とサブネットを作成したら、TCP 送信元 IP 範囲の IAP を許可する簡単な上り(内向き)ファイアウォール ルールを追加します。これにより、gcloud を使用してコンシューマー インスタンスに直接 SSH 接続できるようになります。
次に、手動割り振りモードで単純な Cloud NAT ゲートウェイを作成し、それに関連付けられた予約済みアドレス「nat-address-1」を作成します。Codelab の以降の部分では、ゲートウェイの構成を更新してカスタムルールを追加します。.
まず、VPC を作成します。Cloud Shell から:
gcloud compute networks create consumer-vpc --subnet-mode custom
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/networks/consumer-vpc]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 consumer-vpc CUSTOM REGIONAL Instances on this network will not be reachable until firewall rules are created. As an example, you can allow all internal traffic between instances as well as SSH, RDP, and ICMP by running: $ gcloud compute firewall-rules create <FIREWALL_NAME> --network consumer-vpc --allow tcp,udp,icmp --source-ranges <IP_RANGE> $ gcloud compute firewall-rules create <FIREWALL_NAME> --network producer-vpc --allow tcp:22,tcp:3389,icmp
次に、us-east4 にサブネットを作成します。Cloud Shell から:
gcloud compute networks subnets create consumer-e4 \ --network consumer-vpc --range 10.0.0.0/24 --region us-east4
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/regions/us-east4/subnetworks/consumer-e4]. NAME REGION NETWORK RANGE consumer-e4 us-east4 consumer-vpc 10.0.0.0/24
次に、IAP 範囲のアドレスがポート 22 のコンシューマー インスタンスに到達できるようにする VPC ファイアウォール ルールを作成します。
最初のファイアウォール ルールについては、Cloud Shell から次のコマンドを実行します。
gcloud compute firewall-rules create consumer-allow-iap \ --network consumer-vpc --allow tcp:22 \ --source-ranges 35.235.240.0/20
出力:
Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/global/firewalls/consumer-allow-iap]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED consumer-allow-iap consumer-vpc INGRESS 1000 tcp:22 False
NAT ゲートウェイを作成する前に、まず Cloud Router インスタンスを作成する必要があります(プライベート ASN 番号を使用しますが、このラボのアクティビティには関係ありません)。Cloud Shell から:
gcloud compute routers create consumer-cr \ --region=us-east4 --network=consumer-vpc \ --asn=65501
出力:
Creating router [consumer-cr]...done. NAME REGION NETWORK consumer-cr us-east4 consumer-vpc
次に、NAT ゲートウェイ インスタンスを作成します。Cloud Shell から:
gcloud compute routers nats create consumer-nat-gw \
--router=consumer-cr \
--router-region=us-east4 \
--nat-all-subnet-ip-ranges \
--nat-external-ip-pool=nat-address-1
出力:
Creating NAT [consumer-nat-gw] in router [consumer-cr]...done.
コンシューマー テスト インスタンスを作成します。ここで予約済みのプロデューサー IP を入力して、後でインスタンス内で参照できるようにします。Cloud Shell から:
gcloud compute instances create consumer-instance --zone=us-east4-a \ --machine-type=e2-medium --network-interface=subnet=consumer-e4,no-address \ --metadata=producer-service-ip1=$producerip1,producer-service-ip2=$producerip2
出力:
Created [https://www.googleapis.com/compute/v1/projects/<Project-ID>/zones/us-east4-a/instances/consumer-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS consumer-instance us-east4-a e2-medium 10.0.0.2 RUNNING
7. デフォルトの Cloud NAT の動作を確認する
この時点で、コンシューマー インスタンスはデフォルトの Cloud NAT の動作を使用します。この動作では、すべての外部アドレスとの通信に同じ予約済み IP「nat-address-1」が使用されます。
Cloud NAT の新しい NAT ルール機能を使用する前に、この動作を検証しましょう。
コンシューマー インスタンスに SSH で接続します。Cloud Shell から:
gcloud compute ssh consumer-instance --zone=us-east4-a
これでインスタンス シェルが表示されます。
出力例(簡潔にするため、完全な出力は切り捨てられています)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
コンシューマー インスタンス内で、まず両方のプロデューサー IP を取得し、環境変数として設定します。
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
次に、両方のプロデューサー インスタンスに curl を実行し、返された送信元 IP アドレスを確認します。
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.136.8.83
両方のエンドポイントで同じ IP アドレスが返されます。これは、外部予約済み IP「nat-address-1」の値と同じです。
同様に、外部 IP リフレクタ サービスへの curl は、同じ IP を示す必要があります。次に例を示します。
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
インスタンスの SSH セッションを終了します。NAT ルールを構成したら、SSH で戻ります。
8. Cloud NAT ルールを作成する
NAT ルールは Common Expression Language 構文を使用して記述されます。ルール式言語の詳細については、ルール式言語をご覧ください。
gcloud コマンドを使用して、既存の NAT ゲートウェイに NAT ルールを追加することもできます。ここでは、Cloud NAT ルールを作成する 2 つの方法について説明します。
まず、NAT ルールの YAML ファイルを作成します。
Cloud Shell から:
export projectid=`gcloud config get-value project`
cat <<EOF >natrulesfile.txt
rules:
- ruleNumber: 100
match: destination.ip == '$producerip2'
action:
sourceNatActiveIps:
- /projects/$projectid/regions/us-east4/addresses/nat-address-2
EOF
次に、このルールファイルを使用して既存の NAT ゲートウェイを更新します。Cloud Shell から:
gcloud alpha compute routers nats update consumer-nat-gw \
--router=consumer-cr \
--rules=natrulesfile.txt \
--router-region=us-east4
次の出力が表示されます。
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
ルールが正常に構成されたことを確認します。Cloud Shell から:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4
次の出力が表示されます。
RULE_NUMBER MATCH 100 destination.ip == '35.192.142.134'
gcloud コマンドのみを使用して同じルールを再作成してみましょう。まず、既存のルールを削除します。Cloud Shell から:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
次の出力が表示されます。
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
次に、この gcloud コマンドを使用してルールを再作成します。Cloud Shell から:
gcloud alpha compute routers nats rules create 100 \ --match='destination.ip == "'$producerip2'"' \ --source-nat-active-ips=nat-address-2 --nat=consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
次の出力が表示されます。
Creating Rule [100] in NAT [consumer-nat-gw]...done.
ルールが正常に作成されたことを確認するには、前のコマンドを繰り返します。今回は、YAML 形式のスイッチを追加して、ルールの詳細を表示します。
Cloud Shell から:
gcloud alpha compute routers nats rules list\ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
次の出力が表示されます。
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/<Project-ID>/regions/us-east4/addresses/nat-address-2 match: destination.ip == <actual IP for producer-IP 2> ruleNumber: 100
最後に、「nat-address1」と「nat-address-2」の両方の外部アドレスが「IN_USE」と表示されていることに注目してください。これを確認するには、Cloud Shell から次のコマンドを実行します。
$ gcloud compute addresses list
次の出力が表示されます(実際の IP アドレスは、予約したアドレスと一致する必要があります)。
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS nat-address-1 34.136.8.83 EXTERNAL us-east4 IN_USE nat-address-2 34.70.137.35 EXTERNAL us-east4 IN_USE nat-address-3 34.135.103.88 EXTERNAL us-east4 RESERVED producer-address-1 34.66.0.105 EXTERNAL us-east4 IN_USE producer-address-2 35.192.142.134 EXTERNAL us-east4 IN_USE
9. Cloud NAT ルールの動作を確認する
この時点で、コンシューマー インスタンスは、作成された Cloud NAT ルールを使用して nat-address-2 を使用し、producer-address-2 と通信します。
この動作を検証してみましょう。コンシューマー インスタンスに SSH で接続します。Cloud Shell から:
gcloud compute ssh consumer-instance --zone=us-east4-a
これでインスタンス シェルが表示されます。
出力例(簡潔にするため、完全な出力は切り捨てられています)
No zone specified. Using zone [us-east4-a] for instance: [consumer-instance]. External IP address was not found; defaulting to using IAP tunneling. ... ... <username>@consumer-instance:~$
コンシューマー インスタンス内で、まず両方のプロデューサー IP を取得し、環境変数として設定します。
export producerip1=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip1" -H "Metadata-Flavor: Google"` export producerip2=`curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/producer-service-ip2" -H "Metadata-Flavor: Google"`
次に、両方のプロデューサー インスタンスに curl を実行し、返された送信元 IP アドレスを確認します。
<username>@consumer-instance:~$ curl http://$producerip1:8080 34.136.8.83 <username>@consumer-instance:~$ curl http://$producerip2:8080 34.70.137.35
両方のエンドポイントで異なる IP アドレスが返されるようになります。最初の IP アドレスはデフォルトの動作と同じです。新しい NAT ルールを追加すると、2 番目の IP アドレスは「nat-address-2」になります。
外部 IP リフレクタ サービスへの curl は、デフォルトの動作と同じ IP を表示します。次に例を示します。
<username>@consumer-instance:~$ curl http://ifconfig.co 34.136.8.83 <username>@consumer-instance:~$ curl http://ifconfig.me 34.136.8.83 <username>@consumer-instance:~$ curl http://ip.fyr.io 34.136.8.83
インスタンスの SSH セッションを終了します。後で SSH で戻ってアドレスのドレインをテストします。
10. Cloud NAT ルールの更新と削除
既存の Cloud NAT ルールを更新できます。たとえば、新しい IP アドレスを関連付けたり、既存のルールに関連付けられた既存の IP アドレスをドレインしたりできます。
NAT ルールファイルを次のように更新します。
Cloud Shell から:
export projectid=`gcloud config get-value project`
cat <<EOF >natrulesfile.txt
rules:
- ruleNumber: 100
match: destination.ip == '$producerip2'
action:
sourceNatDrainIps:
- /projects/$projectid/regions/us-east4/addresses/nat-address-2
sourceNatActiveIps:
- /projects/$projectid/regions/us-east4/addresses/nat-address-3
EOF
この新しいファイルは、「nat-address-2」をドレイン状態にします。また、アクティブ状態の「nat-address-3」を追加します。これにより、nat-address-2 を使用する既存の接続は正常に終了し、nat-address-3 のみを使用して新しい接続が作成されます。
次に、このルールファイルを使用して既存の NAT ゲートウェイを更新します。Cloud Shell から:
gcloud alpha compute routers nats update consumer-nat-gw \
--router=consumer-cr \
--rules=natrulesfile.txt \
--router-region=us-east4
次の出力が表示されます。
Updating nat [consumer-nat-gw] in router [consumer-cr]...done.
ルールが正常に構成されたことを確認します。Cloud Shell から:
gcloud alpha compute routers nats rules list \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --format=yaml
次の出力が表示されます。
--- action: sourceNatActiveIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-3 sourceNatDrainIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-2 match: destination.ip == '35.192.142.134' ruleNumber: 100
「nat-address-2」がドレイン状態になっていることに注目してください。コンシューマー VPC からの新しい接続で正しい NAT IP が使用されることを検証する演習は、ユーザーに任されています。
最後に、Cloud NAT ゲートウェイから NAT ルールを削除して、デフォルトの動作に戻します。次の gcloud コマンドを使用できます。Cloud Shell から:
gcloud alpha compute routers nats rules delete 100 \ --nat=consumer-nat-gw --router=consumer-cr \ --router-region=us-east4 --quiet
次の出力が表示されます。
Updated [https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/routers/consumer-cr]
NAT ルールがこれ以上存在しないことを確認するには、NAT ゲートウェイの describe コマンドを使用します。
gcloud alpha compute routers nats describe consumer-nat-gw \ --router=consumer-cr --router-region=us-east4
次の出力が表示されます。
enableEndpointIndependentMapping: false name: consumer-nat-gw natIpAllocateOption: MANUAL_ONLY natIps: - https://www.googleapis.com/compute/alpha/projects/ghaleb-s2/regions/us-east4/addresses/nat-address-1 sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES
出力 YAML に「rules:」セクションがないことに注意してください。NAT ルールが構成されていないことを示します。
11. クリーンアップの手順
繰り返し費用が発生しないようにするには、この Codelab に関連するすべてのリソースを削除します。
まず、すべてのインスタンスを削除します。
Cloud Shell から:
gcloud compute instances delete consumer-instance \ producer-instance-1 producer-instance-2 \ --zone us-east4-a --quiet
予想される出力 :
Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/consumer-instance]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project Id>/zones/us-east4-a/instances/producer-instance-2].
次に、Cloud Router を削除します。Cloud Shell から:
gcloud compute routers delete consumer-cr \ --region us-east4 --quiet
次の出力が表示されます。
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/routers/consumer-cr].
すべての外部 IP アドレスを解放します。Cloud Shell から:
gcloud compute addresses delete nat-address-1 \ nat-address-2 nat-address-3 producer-address-1 \ producer-address-2 --region us-east4 --quiet
次の出力が表示されます。
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-2]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/nat-address-3]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-1]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/addresses/producer-address-2].
VPC ファイアウォール ルールを削除します。Cloud Shell から:
gcloud compute firewall-rules delete consumer-allow-iap \ producer-allow-8080 --quiet
次の出力が表示されます。
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/consumer-allow-iap]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/firewalls/producer-allow-8080].
サブネットを削除します。Cloud Shell から:
gcloud compute networks subnets delete consumer-e4 \ producer-e4 --region=us-east4 --quiet
次の出力が表示されます。
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/consumer-e4]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/regions/us-east4/subnetworks/producer-e4].
最後に、VPC を削除します。Cloud Shell から:
gcloud compute networks delete consumer-vpc \ producer-vpc --quiet
次の出力が表示されます。
Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/consumer-vpc]. Deleted [https://www.googleapis.com/compute/v1/projects/<Project ID>/global/networks/producer-vpc].
12. 完了
Cloud NAT ルールラボが完了しました。
学習した内容
- NAT ルールの準備として Cloud NAT ゲートウェイを設定する方法。
- Common Expression Language(CEL)を使用して NAT ルールを設計する方法。
- NAT ルールを作成して NAT ゲートウェイに接続する方法。
- インスタンスから NAT ルールをテストする方法。
- NAT ゲートウェイのルールを更新する方法。
- NAT ルールを削除して、デフォルトの Cloud NAT の動作に戻す方法。
次のステップ
- この例のように、より複雑な NAT ルールを作成してみる
- NAT IP アドレスのドレインを試し、接続への影響を確認します。
- Google Cloud Platform のネットワーキングについて学習する
©Google, Inc. or its affiliates. All rights reserved. Do not distribute.