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

図 1

a0fc56abf24f3535.png

学習内容

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

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 とオンプレミス 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

オンプレミス-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

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

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

オンプレミス 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 セッションが確立されているため、オンプレミス-vpc からのルートは transit-vpc から学習されます。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [transit-vpc] → [ルート] に移動します。

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

216bde7d08d75ec4.png

オンプレミス 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] に移動し、[編集] を選択します。

3e36e3b5ea741ec5.png

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

9283aba7b214f70d.png

オンプレミス VPC が IPv6 ルートを学習していることを確認する

IPv6 private.googleapis.com VIP が transit-vpc からアドバタイズされるようになったため、オンプレミス VPC は VIP の IPv6 動的ルートを学習します。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [オンプレミス 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 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.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)

オンプレミス-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 が大好きです。

8c2a10eb841f7b01.jpeg

次のステップ

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

参考資料と動画

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