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 を使用して、オンプレミスから Cloud Storage API にアクセスするエンドツーエンドの IPv6 ネットワークを構築します。
図 1

学習内容
- デュアルスタック VPC ネットワークを作成する方法
- IPv6 で HA VPN を作成する方法
- プライベート Google アクセスにアクセスするように DNS を更新する方法
- プライベート Google アクセスの接続を確立して検証する方法
必要なもの
- Google Cloud プロジェクト
2. 始める前に
Codelab をサポートするようにプロジェクトを更新する
この 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 とオンプレミス 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
オンプレミス-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
オンプレミス-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
オンプレミス-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
オンプレミス 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 セッションが確立されているため、オンプレミス-vpc からのルートは transit-vpc から学習されます。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [transit-vpc] → [ルート] に移動します。
学習した IPv4 動的ルートと IPv6 動的ルートを以下に示します。

オンプレミス VPC が HA VPN 経由でルートを学習していないことを確認する
transit-vpc にはサブネットがないため、Cloud Router はサブネットをオンプレミス VPC にアドバタイズしません。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [オンプレミス 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] に移動し、[編集] を選択します。

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

オンプレミス VPC が IPv6 ルートを学習していることを確認する
IPv6 private.googleapis.com VIP が transit-vpc からアドバタイズされるようになったため、オンプレミス VPC は VIP の IPv6 動的ルートを学習します。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [オンプレミス 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 Storage バケットへのアクセスに使用します。
Cloud Shell で、オンプレミス テスト インスタンス on-premises-testbox に ssh を実行します。
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 で、テスト インスタンス オンプレミス-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)
オンプレミス-testbox インスタンスのオペレーティング システムを終了して、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 が大好きです。

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