Accéder aux API Google à partir d'hôtes sur site à l'aide d'adresses IPv6

1. Introduction

L'accès privé à Google pour les hôtes sur site permet aux systèmes sur site de se connecter aux API et services Google en acheminant le trafic via un tunnel Cloud VPN ou un rattachement de VLAN pour Cloud Interconnect. L'Accès privé à Google pour les hôtes sur site est une alternative à la connexion aux API et services Google via Internet.

L'accès privé à Google pour les hôtes sur site nécessite que les requêtes adressées aux API Google soient dirigées vers des adresses IP virtuelles (VIP). Pour IPv6, les adresses IP suivantes sont utilisées:

  • Pour private.googleapis.com : 2600:2d00:0002:2000::/64
  • Pour restricted.googleapis.com : 2600:2d00:0002:1000::/64

L'adresse IP virtuelle que vous choisissez détermine les services auxquels vous pouvez accéder. Dans cet atelier de programmation, nous utiliserons private.googleapis.com. Pour en savoir plus, consultez la section Options de domaine.

Cet atelier de programmation explique comment activer l'accès privé à Google pour les hôtes sur site qui utilisent des adresses IPv6. Vous allez configurer un réseau VPC appelé on-premises-vpc pour représenter un environnement sur site. Pour votre déploiement, le VPC sur site n'existerait pas. À la place, une mise en réseau hybride vers votre centre de données sur site ou votre fournisseur de services cloud serait utilisée.

Ce que vous allez faire

Dans cet atelier de programmation, vous allez créer un réseau IPv6 de bout en bout qui illustre l'accès sur site à l'API Cloud Storage en utilisant CNAME *.googleapis.com vers l'adresse IPv6 private.googleapis.com 2600:2d00:0002:2000::/64, comme illustré dans la figure 1.

Figure 1

a0fc56abf24f3535.png

Points abordés

  • Créer un réseau VPC double pile
  • Créer un VPN haute disponibilité avec IPv6
  • Mettre à jour le DNS pour accéder à l'accès privé à Google
  • Établir et valider la connectivité de l'accès privé à Google

Prérequis

  • Projet Google Cloud

2. Avant de commencer

Mettre à jour le projet pour qu'il soit compatible avec l'atelier de programmation

Cet atelier de programmation utilise $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

3. Créer le VPC "transit-vpc"

f6932f551b5acac0.png

Créer le réseau VPC de transit

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

4. Créer le réseau sur site

58d75cbc9cb20a51.png

Ce réseau VPC représente un environnement sur site.

Créer le réseau VPC sur site

Dans Cloud Shell, procédez comme suit :

gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

Créer le sous-réseau

Dans Cloud Shell, procédez comme suit :

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. Créer un VPN haute disponibilité pour le VPC transit-vpc et le VPC sur site

Créez la passerelle VPN haute disponibilité pour le transit-vpc.

a0fc56abf24f3535.png

Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP, car vous en aurez besoin plus tard dans les étapes de configuration.

Dans Cloud Shell, créez le GW du VPN haute disponibilité avec le type de pile IPV4_IPV6.

gcloud compute vpn-gateways create transit-vpc-vpngw \
   --network=transit-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

Créer le GW du VPN haute disponibilité pour le VPC sur site

Dans Cloud Shell, créez la passerelle VPN haute disponibilité avec le type de pile IPV4_IPV6.

gcloud compute vpn-gateways create on-premises-vpc-vpngw \
   --network=on-premises-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

Valider la création de la passerelle VPN haute disponibilité

Depuis la console, accédez à Connectivité hybride → VPN → Passerelles CLOUD VPN.

c8eed6ca929935bc.png

Créer le routeur Cloud pour le transit-vpc

Dans Cloud Shell, créez le routeur Cloud situé dans la région us-central1.

gcloud compute routers create transit-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=transit-vpc\
   --asn=65001

Créer le routeur cloud pour le VPC sur site

Dans Cloud Shell, créez le routeur Cloud situé dans us-central1.

gcloud compute routers create on-premises-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=on-premises-vpc \
   --asn=65002

Créer les tunnels VPN pour transit-vpc

Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.

Créer un tunnel VPN 0

Dans Cloud Shell, créez 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

Créer un tunnel VPN1

Dans Cloud Shell, créez 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

Créer les tunnels VPN pour le VPC sur site

Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.

Créer un tunnel VPN 0

Dans Cloud Shell, créez 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

Créer un tunnel VPN1

Dans Cloud Shell, créez 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

Valider la création du tunnel VPN

À l'aide de la console, accédez à Connectivité hybride → VPN → TUNNELS CLOUD VPN.

85fd5aef4b2c4010.png

Créer des sessions BGP

Dans cette section, vous allez configurer les interfaces Cloud Router et les pairs BGP.

Lorsque vous créez des tunnels VPN autorisant le trafic IPv6, spécifiez --enable-ipv6 lorsque vous exécutez la commande add-bgp-peer.

Créer une interface BGP et un appairage pour transit-vpc

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Créer une interface BGP et un appairage pour on-premises-vpc

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Accédez à Connectivité hybride → VPN pour afficher les détails du tunnel VPN.

e100e31ea22c8124.png

Vérifiez que transit-vpc apprend les routes IPv4 et IPv6 via un VPN haute disponibilité

Comme les tunnels VPN haute disponibilité et les sessions BGP sont établis, les routes provenant du VPC sur site sont apprises à partir du VPC "transit-vpc". Depuis la console, accédez à Réseau VPC → Réseaux VPC → transit-vpc → ROUTES.

Observez les routes dynamiques IPv4 et IPv6 apprises illustrées ci-dessous :

216bde7d08d75ec4.png

Vérifier que on-premises-vpc n'apprend pas de routes via un VPN haute disponibilité

Transit-vpc ne possède pas de sous-réseau. Par conséquent, le routeur Cloud Router n'annonce aucun sous-réseau vers le VPC sur site. Depuis la console, accédez à Réseau VPC → Réseaux VPC → sur site-vpc → ROUTES.

6. Diffuser l'adresse IP virtuelle private.googleapis.com IPv6

Pour accéder à l'accès privé à Google sur site, vous devez créer une annonce de routage personnalisée à partir du transit-vpc. L'adresse IPv6 2600:2d00:0002:2000:: sera annoncée dans l'environnement sur site et utilisée par les charges de travail pour accéder aux API Google telles que Cloud Storage, Cloud BigQuery et Cloud Bigtable après la mise à jour du DNS local.

Dans cet atelier de programmation, vous allez activer l'accès API à la plupart des API et services Google, qu'ils soient ou non compatibles avec VPC Service Controls.

Dans la console, accédez à Connectivité hybride → Routeurs cloud → transit-vpc-cr-us-central1, puis sélectionnez MODIFIER.

3e36e3b5ea741ec5.png

Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en vous basant sur l'exemple ci-dessous, sélectionnez OK, puis cliquez sur ENREGISTRER.

9283aba7b214f70d.png

Vérifier que le VPC sur site apprend les routes IPv6

Maintenant que l'adresse VIP IPv6 private.googleapis.com est annoncée à partir de transit-vpc, l'instance on-premises-vpc aura appris les routes dynamiques IPv6 pour l'adresse VIP. Dans la console, accédez à "Réseau VPC" → "Réseaux VPC" → "vpc sur site" → "ROUTES".

Observez les routes IPv6 annoncées depuis le transit-vpc :

caf3b79b035b2a20.png

7. Établir une communication avec les API Google à l'aide de l'accès privé à Google

Dans la section suivante, nous allons accéder à Cloud Storage et valider la connectivité à l'aide de l'adresse IP virtuelle IPv6 private.googleapis.com. Pour ce faire, nous devons effectuer les actions suivantes dans le vpc sur site.

  • Créez une règle de pare-feu d'entrée pour autoriser l'accès à Identity-Aware Proxy (IAP) pour l'accès SSH.
  • Créez un routeur Cloud Router et Cloud NAT pour télécharger tcpdump et dnsutils.
  • Créez une zone Cloud DNS privée pour googleapis.com.
  • Créer un bucket Cloud Storage

Créer la règle de pare-feu IAP

Pour autoriser IAP à se connecter à vos instances de VM, créez une règle de pare-feu qui :

  • S'applique à toutes les instances de VM que vous souhaitez rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP pour le transfert TCP.

Dans Cloud Shell, créez la règle de pare-feu 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

Configuration de Cloud Router et du NAT

Cloud NAT est utilisé dans l'atelier de programmation pour l'installation du paquet logiciel, car l'instance de VM ne dispose pas d'adresse IP externe.

Dans Cloud Shell, créez le routeur Cloud.

gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1

Dans Cloud Shell, créez la passerelle 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

Créer une instance de test, on-premises-testbox

Créez une instance de test qui servira à tester et valider la connectivité à l'adresse VIP IPv6 private.googleapis.com.

Dans Cloud Shell, créez l'instance.

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"

Créer la zone privée Cloud DNS

Nous utiliserons Cloud DNS pour créer une zone privée et des enregistrements pour *.googleapis.com. Vous trouverez ci-dessous la procédure à suivre.

Dans Cloud Shell, créez une zone DNS privée v6-googleapis.com.

gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"

Dans Cloud Shell, créez l'enregistrement AAAA pour private.googleapis.com. pointant vers l'adresse 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::"

Dans Cloud Shell, créez un enregistrement CNAME pour *.googleapis.com afin qu'il pointe vers private.googleapis.com.

gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."

Valider la zone privée Cloud DNS

Accédez à Services réseau → Cloud DNS → v6-googleapis.

455e355195a2a48f.png

Créer le bucket Cloud Storage

Dans Cloud Shell, créez un bucket Cloud Storage et remplacez bucket_name par un nom unique que vous préférez. Essayez un autre nom si le nom que vous avez choisi est déjà utilisé.

gsutil mb  -l us-central1 -b on gs://bucket_name

8. Accéder aux API Google et les valider à l'aide d'adresses IPv6

Dans la section suivante, vous allez vous connecter en SSH à deux terminaux Cloud Shell. Le premier terminal permet de valider la recherche IPv6 à l'aide de tcpdump, tandis que le second permet d'accéder au bucket Cloud Storage.

Dans Cloud Shell, exécutez une connexion SSH pour tester l'instance on-premises-testbox.

 gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

Dans le terminal 1 de Cloud Shell, démarrez tcpdump et surveillez le trafic DNS sur le port 53.

sudo tcpdump -nn -i ens4 port 53

Vous trouverez un exemple ci-dessous.

user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53

Ouvrez un nouveau terminal Cloud Shell en sélectionnant le signe "+". Une fois le nouvel onglet ouvert, mettez à jour la variable du nom du projet.

Dans Cloud Shell, mettez à jour la variable du nom du projet.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

Dans Cloud Shell 2, effectuez une connexion SSH à l'instance de test on-premises-testbox.

gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

Effectuer une recherche DNS avec dig

Dans le deuxième terminal Cloud Shell, effectuez une recherche dig sur storage.googleapis.com.

dig AAAA storage.googleapis.com

Inspectez ANSWER SECTION, private DNS zone storage.googleapis.com CNAME to private.googleapis.com AAAA 2600:2d00:2:2000::, comme dans l'exemple ci-dessous:

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

Dans le terminal 1 de Cloud Shell, inspectez le tcpdump qui confirme la résolution DNS vers 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)

Les données dig et tcpdump nous permettent de conclure que la résolution DNS vers storage.googleapis.com est effectuée via 2600:2d00:2:2000::, l'adresse IPv6 de private.googleapis.com.

Effectuer la commande "gsutil list" pour valider l'accès à Cloud Storage

Dans le deuxième terminal Cloud Shell, effectuez une liste du bucket de stockage créé précédemment à l'aide de gsutil. Remplacez "bucket_name" par le bucket que vous avez créé précédemment.

gsutil -d ls gs://bucket_name

Exemple utilisant le bucket Cloud Storage codelab-ipv6, inspectez la sortie de débogage indiquant storage.googleapis.com et 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:~$ 

Dans le terminal 1 de Cloud Shell, inspectez le tcpdump qui confirme la résolution DNS vers 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)

Quittez le système d'exploitation de l'instance de test sur site, puis revenez à l'invite Cloud Shell.

9. Nettoyage

Dans Cloud Shell, effectuez les opérations suivantes:

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. Félicitations

Félicitations ! Vous venez de configurer et de valider un accès privé à Google avec IPv6.

Vous avez créé l'infrastructure de transit et l'infrastructure sur site, ainsi qu'une zone DNS privée permettant la résolution pour les domaines d'API Google utilisant IPv6. Vous avez appris à tester et à valider l'accès IPv6 à l'aide de Dig et de Cloud Storage.

Cosmopup pense que les ateliers de programmation sont géniaux.

8c2a10eb841f7b01.jpeg

Et ensuite ?

Découvrez quelques-uns des ateliers de programmation...

Complément d'informations et vidéos

Documents de référence