IPv6 アドレスを使用してオンプレミス ホストから Google API にアクセスする

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

a0fc56abf24f3535.png

学習内容

  • デュアルスタック 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 を作成する

f6932f551b5acac0.png

トランジット 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. オンプレミス ネットワークを作成する

58d75cbc9cb20a51.png

この 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 を作成する

a0fc56abf24f3535.png

各ゲートウェイが作成されると、ゲートウェイ インターフェースごとに 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 ゲートウェイ] に移動します。

c8eed6ca929935bc.png

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 トンネル] に移動します。

85fd5aef4b2c4010.png

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 トンネルの詳細を表示します。

e100e31ea22c8124.png

transit-vpc が HA VPN 経由で IPv4 ルートと IPv6 ルートを学習していることを確認する

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

学習した IPv4 と IPv6 の動的ルートを以下に示します。

216bde7d08d75ec4.png

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] に移動し、[編集] を選択します。

3e36e3b5ea741ec5.png

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

9283aba7b214f70d.png

on-premises-vpc が IPv6 ルートを学習していることを確認する

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

transit-vpc からアドバタイズされた IPv6 ルートを確認します。

caf3b79b035b2a20.png

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] に移動します。

455e355195a2a48f.png

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.comHTTP/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 はコードラボが大好きです。

8c2a10eb841f7b01.jpeg

次のステップ

以下の Codelab をご覧ください。

参考資料と動画

リファレンス ドキュメント