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 ネットワークを設定します。このデプロイでは、オンプレミスの 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 を作成する方法
  • DNS を更新して限定公開の Google アクセスにアクセスする方法
  • 限定公開の Google アクセスの接続を確立して検証する方法

必要なもの

  • Google Cloud プロジェクト

2. 始める前に

Codelab をサポートするようにプロジェクトを更新する

この Codelab では、Cloud Shell での gcloud 構成の実装に役立つ $variables を使用します。

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-prem-vpc の HA VPN を作成する

transit-vpc 用の HA VPN GW を作成する

a0fc56abf24f3535.png

各ゲートウェイが作成されると、2 つの外部 IPv4 アドレスが自動的に割り振られます(各ゲートウェイ インターフェースに 1 つ)。構成手順の後半で使用するため、これらの 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-prem-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-prem-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-prem-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-prem-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-prem-vpc からのルートは transit-vpc から学習されます。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [transit-vpc] → [ルート] に移動します。

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

216bde7d08d75ec4.png

on-prem-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 からアドバタイズされたので、on-prem-vpc は VIP の IPv6 動的ルートを学習したことになります。コンソールを使用して、[VPC ネットワーク] → [VPC ネットワーク] → [オンプレミス VPC] → [ルート] に移動します。

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

caf3b79b035b2a20.png

7. 限定公開の Google アクセスを使用して Google API への通信を確立する

次のセクションでは、IPv6 private.googleapis.com VIP を使用して Cloud Storage への接続と接続を検証します。これを行うには、on-prem-vpc で次の操作を行う必要があります。

  • SSH アクセスの Identity-Aware Proxy(IAP)アクセスを許可する上り(内向き)ファイアウォール ルールを作成する。
  • tcpdump と dnsutils をダウンロードする Cloud Router と Cloud NAT を作成します。
  • 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-prem-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 内で、private.googleapis.com の AAAA レコードを作成します。IPv6 アドレス 2600:2d00:0002:2000:: を指します。

gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"

Cloud Shell で、private.googleapis.com を指す *.googleapis.com の CNAME を作成します。

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 で SSH を実行してインスタンス on-prem-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 番目で、SSH を実行してインスタンス on-prem-testbox をテストします。

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」の「private DNS zone storage.googleapis.com CNAME to 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 を調べます。これにより、DNS が AAAA 2600:2d00:2:2000:: に解決されていることを確認できます。

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 を調べます。これにより、DNS が AAAA 2600:2d00:2:2000:: に解決されていることを確認できます。

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)

on-prem-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 アクセスの構成と検証が完了しました。

また、トランジット インフラストラクチャとオンプレミス インフラストラクチャを作成し、限定公開 DNS ゾーンを作成して、IPv6 を使用した Google API ドメインの解決を可能にしました。dig と Cloud Storage を使用して IPv6 アクセスをテストして検証する方法を学習しました。

Cosmopup は Codelab を素晴らしいと思っています!

8c2a10eb841f7b01.jpeg

次のステップ

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

参考資料と動画

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