1. はじめに
オンプレミス ホスト用の限定公開の Google アクセスを使用すると、Cloud VPN トンネルまたは Cloud Interconnect 用の VLAN アタッチメントを経由してトラフィックをルーティングすることにより、オンプレミス システムから Google API とサービスに接続できます。オンプレミス ホスト用のプライベート Google アクセスは、インターネット経由で Google API とサービスに接続するための代替手段として使用できます。
オンプレミス ホスト用の限定公開の Google アクセスでは、Google API へのリクエストを仮想 IP アドレス(VIP)に転送する必要があります。IPv6 の場合は、次の IP アドレスが使用されます。
- private.googleapis.com の場合: 2600:2d00:0002:2000::/64
- restricted.googleapis.com の場合: 2600:2d00:0002:1000::/64
選択した VIP によって、アクセスできるサービスが決まります。この Codelab では、private.googleapis.com を使用します。詳細については、ドメイン オプションをご覧ください。
この Codelab では、IPv6 アドレスを使用するオンプレミス ホストの限定公開の Google アクセスを有効にする方法について説明します。オンプレミス環境を表す on-premises-vpc という VPC ネットワークを設定します。このデプロイでは、on-premises-vpc は存在しません。代わりに、オンプレミス データセンターまたはクラウド プロバイダへのハイブリッド ネットワーキングが使用されます。
作成するアプリの概要
この Codelab では、図 1 に示すように、CNAME *.googleapis.com から private.googleapis.com IPv6 アドレス 2600:2d00:0002:2000::/64 を使用してクラウド ストレージ API へのオンプレミス アクセスを実証するエンドツーエンドの IPv6 ネットワークを構築します。
図 1

学習内容
- デュアルスタック VPC ネットワークを作成する方法
- IPv6 を使用して HA VPN を作成する方法
- 限定公開の Google アクセスにアクセスするために DNS を更新する方法
- プライベート Google アクセス接続を確立して検証する方法
必要なもの
- Google Cloud プロジェクト
2. 始める前に
コードラボをサポートするようにプロジェクトを更新する
この Codelab では、$variables を使用して、Cloud Shell での gcloud 構成の実装を支援します。
Cloud Shell で、次の操作を行います。
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. transit-vpc を作成する

トランジット VPC ネットワークを作成する
Cloud Shell で、次の操作を行います。
gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
4. オンプレミス ネットワークを作成する

この VPC ネットワークはオンプレミス環境を表します。
オンプレミス VPC ネットワークを作成する
Cloud Shell で、次の操作を行います。
gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
サブネットを作成する
Cloud Shell で、次の操作を行います。
gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1
5. transit-vpc と on-premises-vpc の HA VPN を作成する
transit-vpc の HA VPN GW を作成する

各ゲートウェイが作成されると、ゲートウェイ インターフェースごとに 1 つずつ、自動的に 2 つの外部 IPv4 アドレスが割り振られます。これらの IP アドレスをメモして、後の構成手順で使用します。
Cloud Shell 内で、スタックタイプ IPV4_IPV6 を使用して HA VPN GW を作成します。
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
on-premises-vpc 用の HA VPN GW を作成する
Cloud Shell 内で、スタックタイプ IPV4_IPV6 を使用して HA VPN GW を作成します。
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
HA VPN GW の作成を検証する
コンソールを使用して、[ハイブリッド接続] → [VPN] → [CLOUD VPN ゲートウェイ] に移動します。

transit-vpc の Cloud Router を作成する
Cloud Shell 内で、us-central1 にある Cloud Router を作成します。
gcloud compute routers create transit-vpc-cr-us-central1 \
--region=us-central1 \
--network=transit-vpc\
--asn=65001
on-premises-vpc の Cloud Router を作成する
Cloud Shell 内で、us-central1 にある Cloud Router を作成します。
gcloud compute routers create on-premises-vpc-cr-us-central1 \
--region=us-central1 \
--network=on-premises-vpc \
--asn=65002
transit-vpc 用の VPN トンネルを作成する
各 HA VPN ゲートウェイに 2 つの VPN トンネルを作成します。
VPN トンネル 0 を作成する
Cloud Shell 内で、tunnel0 を作成します。
gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 0
VPN トンネル 1 を作成する
Cloud Shell 内で、tunnel1 を作成します。
gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 1
on-premises-vpc 用の VPN トンネルを作成する
各 HA VPN ゲートウェイに 2 つの VPN トンネルを作成します。
VPN トンネル 0 を作成する
Cloud Shell 内で、tunnel0 を作成します。
gcloud compute vpn-tunnels create on-premises-tunnel0 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 0
VPN トンネル 1 を作成する
Cloud Shell 内で、tunnel1 を作成します。
gcloud compute vpn-tunnels create on-premises-tunnel1 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 1
VPN トンネルの作成を検証する
コンソールで、[ハイブリッド接続] → [VPN] → [CLOUD VPN トンネル] に移動します。

BGP セッションを作成する
このセクションでは、Cloud Router のインターフェースと BGP ピアを構成します。
IPv6 トラフィックを許可する VPN トンネルを作成する場合は、add-bgp-peer コマンドの実行時に --enable-ipv6 を指定します。
transit-vpc の BGP インターフェースとピアリングを作成する
Cloud Shell 内で、BGP インターフェースを作成します。
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel1-to-onpremise \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel0 \
--region us-central1
Cloud Shell 内で、BGP ピアを作成します。
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onpremise \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2
Cloud Shell 内で、BGP インターフェースを作成します。
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel2-to-onpremise \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel1 \
--region us-central1
Cloud Shell 内で、BGP ピアを作成します。
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel2 \
--interface if-tunnel2-to-onpremise \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12
on-premises-vpc の BGP インターフェースとピアリングを作成する
Cloud Shell 内で、BGP インターフェースを作成します。
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel1-to-hub-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel0 \
--region us-central1
Cloud Shell 内で、BGP ピアを作成します。
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1 \
--peer-name bgp-transit-vpc-tunnel0 \
--interface if-tunnel1-to-hub-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1
Cloud Shell 内で、BGP インターフェースを作成します。
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel2-to-hub-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel1 \
--region us-central1
Cloud Shell 内で、BGP ピアを作成します。
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1\
--peer-name bgp-transit-vpc-tunnel1\
--interface if-tunnel2-to-hub-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11
[ハイブリッド接続] → [VPN] に移動して、VPN トンネルの詳細を表示します。

transit-vpc が HA VPN 経由で IPv4 ルートと IPv6 ルートを学習していることを確認する
HA VPN トンネルと BGP セッションが確立されているため、on-premises-vpc からのルートは transit-vpc から学習されます。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [transit-vpc] → [ルート] に移動します。
学習した IPv4 と IPv6 の動的ルートを以下に示します。

on-premises-vpc が HA VPN 経由でルートを学習していないことを確認する
transit-vpc にはサブネットがないため、Cloud Router はサブネットを on-premises-vpc にアドバタイズしません。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [on-premises-vpc] → [ルート] に移動します。
6. IPv6 private.googleapis.com VIP をアドバタイズする
オンプレミスから限定公開の Google アクセスにアクセスするには、transit-vpc からカスタムルート アドバタイズを作成する必要があります。IPv6 アドレス 2600:2d00:0002:2000:: はオンプレミス環境にアドバタイズされ、ローカル DNS の更新後にワークロードが Cloud Storage、Cloud BigQuery、Cloud Bigtable などの Google API にアクセスするために使用されます。
この Codelab では、VPC Service Controls でサポートされているかどうかにかかわらず、ほとんどの Google API とサービスへの API アクセスを有効にします。
コンソールで、[ハイブリッド接続] → [Cloud Router] → [transit-vpc-cr-us-central1] に移動し、[編集] を選択します。

[アドバタイズされたルート] セクションで、[カスタムルートの作成] オプションを選択し、次の例に基づいてフィールドを更新して、[完了] を選択し、[保存] をクリックします。

on-premises-vpc が IPv6 ルートを学習していることを確認する
IPv6 private.googleapis.com VIP が transit-vpc からアドバタイズされるようになったため、on-premises-vpc は VIP の IPv6 動的ルートを学習します。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [on-premises-vpc] → [ルート] に移動します。
transit-vpc からアドバタイズされた IPv6 ルートを確認します。

7. 限定公開の Google アクセスを使用して Google API への通信を確立する
次のセクションでは、IPv6 private.googleapis.com VIP を使用して Cloud Storage への接続にアクセスし、検証します。これを行うには、オンプレミス VPC で次の操作を行う必要があります。
- SSH アクセス用の Identity-Aware Proxy(IAP)アクセスを許可する上り(内向き)ファイアウォール ルールを作成します。
- Cloud Router と Cloud NAT を作成して、tcpdump と dnsutils をダウンロードします。
- googleapis.com のプライベート Cloud DNS ゾーンを作成する。
- Cloud Storage バケットを作成する。
IAP ファイアウォール ルールを作成する
IAP に VM インスタンスへの接続を許可するには、次のファイアウォール ルールを作成します。
- IAP を使用してアクセス可能にするすべての VM インスタンスに適用されます。
- IP 範囲 35.235.240.0/20 からの上り(内向き)トラフィックを許可します。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。
Cloud Shell 内で、IAP ファイアウォール ルールを作成します。
gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
--network on-premises-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
Cloud Router と NAT の構成
この VM インスタンスには外部 IP アドレスがないため、この Codelab ではソフトウェア パッケージのインストールに Cloud NAT を使用します。
Cloud Shell 内で、Cloud Router を作成します。
gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1
Cloud Shell 内で、NAT ゲートウェイを作成します。
gcloud compute routers nats create on-premises-nat-us-central1 --router=on-premises-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
テスト インスタンス(on-premises-testbox)を作成する
IPv6 private.googleapis.com VIP への接続をテストして検証するために使用するテスト インスタンスを作成します。
Cloud Shell 内でインスタンスを作成します。
gcloud compute instances create on-premises-testbox \
--project=$projectname \
--machine-type=e2-micro \
--stack-type=IPV4_IPV6 \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=on-premises-subnet1-us-central1 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
Cloud DNS プライベート ゾーンを作成する
Cloud DNS を使用して *.googleapis.com の限定公開ゾーンとレコードを作成します。必要な手順は次のとおりです。
Cloud Shell で、プライベート DNS ゾーン v6-googleapis.com を作成します。
gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"
Cloud Shell 内で、IPv6 アドレス 2600:2d00:0002:2000:: を指す private.googleapis.com の AAAA レコードを作成します。
gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"
Cloud Shell 内で、*.googleapis.com の CNAME を作成して private.googleapis.com を参照するようにします。
gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."
Cloud DNS 限定公開ゾーンを検証する
[ネットワーク サービス] → [Cloud DNS] → [v6-googleapis] に移動します。

Cloud Storage バケットを作成する
Cloud Shell 内で Cloud Storage バケットを作成し、bucket_name をグローバルに一意な名前に置き換えます。すでに使用されている場合は、別の名前を試してください。
gsutil mb -l us-central1 -b on gs://bucket_name
8. IPv6 アドレスを使用して Google API にアクセスして検証する
次のセクションでは、2 つの Cloud Shell ターミナルに SSH で接続します。最初のターミナルは tcpdump を使用して IPv6 ルックアップを検証するために使用され、2 番目のターミナルはクラウド ストレージ バケットへのアクセスに使用されます。
Cloud Shell 内で、ssh を実行してテスト インスタンス on-premises-testbox に接続します。
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
Cloud Shell ターミナル 1 で tcpdump を起動し、ポート 53 で DNS トラフィックをモニタリングします。
sudo tcpdump -nn -i ens4 port 53
以下の例をご覧ください。
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
[+] を選択して新しい Cloud Shell ターミナルを開きます。新しいタブが開いたら、プロジェクト名変数を更新します。
Cloud Shell で、プロジェクト名変数を更新します。
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell 2 内で、テスト インスタンス on-premises-testbox に SSH を実行します。
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
dig を実行して DNS ルックアップを検証する
Cloud Shell ターミナル 2 で、storage.googleapis.com に対して dig を実行します。
dig AAAA storage.googleapis.com
ANSWER SECTION、限定公開 DNS ゾーン storage.googleapis.com CNAME から private.googleapis.com AAAA 2600:2d00:2:2000:: を調べます。以下に例を示します。
user@on-premises-testbox:~$ dig AAAA storage.googleapis.com
; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com. IN AAAA
;; ANSWER SECTION:
storage.googleapis.com. 300 IN CNAME private.googleapis.com.
private.googleapis.com. 300 IN AAAA 2600:2d00:2:2000::
;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE rcvd: 101
Cloud Shell ターミナル 1 で、tcpdump を調べて、AAAA 2600:2d00:2:2000:: への DNS 解決をさらに確認します。
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)
dig と tcpdump に基づいて、storage.googleapis.com への DNS 解決は private.googleapis.com の IPv6 アドレスである 2600:2d00:2:2000:: を介して行われていると結論付けることができます。
gsutil list を実行して、Cloud Storage へのアクセスを検証する
Cloud Shell ターミナル 2 で、gsutil を使用して、先ほど作成したストレージ バケットに対してリストを実行します。bucket_name を、以前に作成したバケットに変更します。
gsutil -d ls gs://bucket_name
Cloud Storage バケット codelab-ipv6 を使用する例。storage.googleapis.com と HTTP/1.1 200 OK を示すデバッグ出力を確認します。
user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
bucket: 'codelab-ipv6'
delimiter: '/'
maxResults: 1000
projection: ProjectionValueValuesEnum(noAcl, 1)
versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
items: []
prefixes: []>
user@on-premises-testbox:~$
Cloud Shell ターミナル 1 で、tcpdump を調べて、AAAA 2600:2d00:2:2000:: への DNS 解決をさらに確認します。
eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)
オンプレミス テストボックス インスタンスのオペレーティング システムを終了し、Cloud Shell プロンプトに戻ります。
9. クリーンアップ
Cloud Shell で次の操作を行います。
gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet
gcloud compute routers delete transit-vpc-cr-us-central1 on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet
gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet
gcloud compute networks delete on-premises-vpc --quiet
gcloud compute networks delete transit-vpc --quiet
gsutil rb gs://bucket_name
gcloud dns record-sets delete *.googleapis.com. \
--type=CNAME \
--zone=v6-googleapis
gcloud dns record-sets delete private.googleapis.com. \
--type=AAAA \
--zone=v6-googleapis
gcloud dns managed-zones delete v6-googleapis
10. 完了
これで、IPv6 を使用した限定公開の Google アクセスの構成と検証が完了しました。
転送インフラストラクチャとオンプレミス インフラストラクチャを作成し、IPv6 を使用して Google API ドメインの解決を可能にする限定公開 DNS ゾーンを作成しました。dig と Cloud Storage を使用して IPv6 アクセスをテストして検証する方法を学習しました。
Cosmopup はコードラボが大好きです。

次のステップ
以下の Codelab をご覧ください。