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

トランジット 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-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-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 tunnel0 を作成する

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

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 を指定します。

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

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

caf3b79b035b2a20.png

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

次のセクションでは、IPv6 private.googleapis.com VIP を使用して Cloud Storage への接続と接続を検証します。これを行うには、on-premises-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 の構成

この Codelab では、VM インスタンスに外部 IP アドレスがないため、ソフトウェア パッケージのインストールに 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 で、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 で、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-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 で、ssh を実行してインスタンス on-premises-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 はコードラボが大好きです。

8c2a10eb841f7b01.jpeg

次のステップ

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

参考資料と動画

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