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 vous dirigiez les requêtes pour les API Google vers des adresses IP virtuelles. 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 allons utiliser private.googleapis.com. Pour en savoir plus, consultez 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 réseau 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 à l'aide du CNAME *.googleapis.com vers l'adresse IPv6 private.googleapis.com 2600:2d00:0002:2000::/64, comme illustré sur 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 prendre en charge l'atelier de programmation

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

Dans Cloud Shell, procédez comme suit :

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

3. Créer le transit-vpc

f6932f551b5acac0.png

Créer le réseau VPC de transit

Dans Cloud Shell, procédez comme suit :

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 les réseaux transit-vpc et on-premises-vpc

Créer la passerelle VPN haute disponibilité pour le VPC de transit

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 que vous utiliserez ultérieurement dans les étapes de configuration.

Dans Cloud Shell, créez la passerelle 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 la passerelle VPN haute disponibilité pour le réseau 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é

Dans la console, accédez à Connectivité hybride → VPN → PASSERELLES CLOUD VPN.

c8eed6ca929935bc.png

Créez le routeur Cloud pour le VPC de transit.

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

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

Créer le routeur Cloud Router pour le réseau VPC sur site

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

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 on-premises-vpc

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

Créer un tunnel VPN0

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

Dans 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 et un appairage BGP 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érifier que transit-vpc apprend les routes IPv4 et IPv6 via le VPN haute disponibilité

Étant donné que les tunnels VPN haute disponibilité et les sessions BGP sont établis, les routes de on-premises-vpc sont apprises à partir de transit-vpc. Dans la console, accédez à Réseau VPC → Réseaux VPC → transit-vpc → ROUTES.

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

216bde7d08d75ec4.png

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

Le VPC de transit ne comporte pas de sous-réseau. Par conséquent, le routeur cloud n'annoncera aucun sous-réseau au VPC sur site. Dans la console, accédez à Réseau VPC → Réseaux VPC → on-premises-vpc → ROUTES.

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

Pour accéder à l'accès privé à Google depuis un emplacement sur site, vous devez créer une annonce de routage personnalisée à partir du VPC de transit. L'adresse IPv6 2600:2d00:0002:2000:: sera annoncée à 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 une fois le DNS local mis à jour.

Dans cet atelier de programmation, vous allez activer l'accès aux 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 fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.

9283aba7b214f70d.png

Vérifier que on-premises-vpc apprend les routes IPv6

Maintenant que l'adresse IP virtuelle privée IPv6 private.googleapis.com est annoncée depuis le transit-vpc, le on-premises-vpc aura appris les routes dynamiques IPv6 pour l'adresse IP virtuelle. Dans la console, accédez à Réseau VPC → Réseaux VPC → on-premises-vpc → ROUTES.

Observez les routes IPv6 annoncées depuis le VPC de transit :

caf3b79b035b2a20.png

7. Établissez 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é à ce service à 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éez un bucket Cloud Storage.

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

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

  • S'applique à toutes les instances de VM auxquelles vous souhaitez être accessible à l'aide d'IAP.
  • Autorise le trafic entrant à partir de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP qu'IAP utilise 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 de NAT

Cloud NAT est utilisé dans l'atelier de programmation pour l'installation de packages logiciels, car l'instance de VM ne possède pas d'adresse IP externe.

Dans Cloud Shell, créez le routeur Cloud Router.

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 IP virtuelle 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 allons utiliser Cloud DNS pour créer une zone et des enregistrements privés pour *.googleapis.com. Vous trouverez ci-dessous les étapes à 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, qui pointe 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 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 de votre choix. Si le nom est déjà utilisé, essayez-en un autre.

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, effectuez un SSH vers l'instance de test on-premises-testbox.

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

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

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 "+". 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 un SSH vers l'instance de test on-premises-testbox.

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

Effectuer un dig pour valider la résolution DNS

Dans le terminal Cloud Shell 2, exécutez une requête dig sur storage.googleapis.com.

dig AAAA storage.googleapis.com

Inspectez la SECTION RÉPONSE, la zone DNS privée storage.googleapis.com CNAME vers 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 Cloud Shell 1, inspectez le tcpdump qui confirme la résolution DNS en 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)

D'après les commandes dig et tcpdump, nous pouvons conclure que la résolution DNS vers storage.googleapis.com est obtenue via 2600:2d00:2:2000::, l'adresse IPv6 pour private.googleapis.com.

Exécuter la commande gsutil list pour valider l'accès à Cloud Storage

Dans le terminal 2 de Cloud Shell, listez le bucket de stockage créé précédemment à l'aide de gsutil. Remplacez bucket_name par le nom du bucket que vous avez créé précédemment.

gsutil -d ls gs://bucket_name

Exemple d'utilisation du bucket Cloud Storage codelab-ipv6 : examinez le résultat du 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 Cloud Shell 1, inspectez le tcpdump qui confirme la résolution DNS en 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 on-premises-testbox pour revenir à l'invite Cloud Shell.

9. Nettoyage

Dans Cloud Shell, procédez comme suit :

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 avez configuré et validé un accès privé à Google avec IPv6.

Vous avez créé l'infrastructure de transit et sur site, ainsi qu'une zone DNS privée permettant la résolution des domaines de l'API Google à l'aide d'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...

Lectures et vidéos complémentaires

Documents de référence