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
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"
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
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.
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.
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.
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.
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 :
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.
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.
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 :
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.
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.
Et ensuite ?
Découvrez quelques-uns des ateliers de programmation...