Atelier de programmation: Échange de routes dynamiques avec NCC

1. Introduction

Présentation

Dans cet atelier, les utilisateurs découvriront comment Network Connectivity Center (NCC) peut être utilisé pour établir une connectivité sur site à grande échelle grâce à la prise en charge des spokes VPC et de l'échange de routes dynamiques. Lorsque les utilisateurs définissent un VPC en tant que spoke VPC, ils peuvent le connecter à plusieurs réseaux VPC via le hub NCC. Pour établir la connectivité réseau avec le réseau sur site d'un utilisateur, il peut associer une NIC virtuelle d'appareil de routeur, des tunnels HA_VPN ou des rattachements de VLAN Interconnect au même hub NCC que les spokes VPC NCC.

La ressource hub fournit un modèle de gestion de la connectivité centralisée pour interconnecter les spokes.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez créer une topologie logique en étoile avec le hub NCC qui implémentera une connectivité hybride entre le réseau sur site et un VPC de charge de travail.

c06021c6aaa47682.png

Points abordés

  • Distinguer un VPC de charge de travail d'un VPC de routage
  • Intégration de spokes VPC et hybrides dans NCC

Prérequis

  • Connaissances du réseau VPC GCP
  • Connaissances du routage Cloud Router et BGP
  • Projet Google Cloud
  • Vérifiez votre quota:réseaux et demandez des réseaux supplémentaires si nécessaire (capture d'écran ci-dessous) :

6bc606cb34bce7e8.png

Objectifs

  • Configurer l'environnement GCP
  • Configurer Network Connectivity Center avec un VPC en tant que spoke
  • Configurer Network Connectivity Center avec des tunnels HA-VPN en tant que spoke hybride
  • Valider le chemin d'accès aux données
  • Explorer les fonctionnalités de gestion de la maintenance du NCC
  • Nettoyer les ressources utilisées

Avant de commencer

Google Cloud Console et Cloud Shell

Pour interagir avec GCP, nous utiliserons à la fois Google Cloud Console et Cloud Shell tout au long de cet atelier.

Projet NCC Hub Console Google Cloud

La console Cloud est accessible à l'adresse https://console.cloud.google.com.

Configurez les éléments suivants dans Google Cloud pour faciliter la configuration de Network Connectivity Center:

Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

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

gcloud auth list
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname
region="us-central1"
zone="us-central1-a"

Rôles IAM

NCC nécessite des rôles IAM pour accéder à des API spécifiques. Veillez à configurer votre utilisateur avec les rôles IAM NCC requis.

Rôle/Description

Autorisations

networkconnectivity.networkAdmin : permet aux administrateurs réseau de gérer le hub et les spokes.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans un VPC partagé où le projet hôte est propriétaire du hub, mais que d'autres administrateurs d'autres projets peuvent ajouter des spokes pour leurs associations au hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer : permet aux utilisateurs du réseau d'afficher différents attributs du hub et des spokes.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. Configurer l'environnement réseau

Présentation

Dans cette section, nous allons déployer les trois réseaux VPC et les règles de pare-feu dans un seul projet. Le schéma logique illustre l'environnement réseau qui sera configuré à cette étape. Pour cet atelier de programmation, un VPC sera utilisé pour simuler un réseau sur site.

6c8baa1bf0676379.png

Concept clé 1

Le VPC global Google Cloud fournit une connectivité de chemin de données entre plus de 44 régions GCP. Cloud Router, un service régional, annonce de manière dynamique les sous-réseaux et propage les routes apprises dans la région dans laquelle le routeur est configuré ou sur l'ensemble du réseau VPC. Le fait que le routeur cloud propage les routes au niveau régional ou mondial dépend de l'utilisateur qui définit le mode de routage dynamique: régional ou mondial.

Dans cette section, nous allons commencer par configurer chaque VPC avec le mode de routage régional. Pour le reste de cet atelier de programmation:

  • "VPC de routage" identifie un VPC qui n'est PAS configuré en tant que spoke VPC NCC.
  • "VPC de charge de travail" identifie un VPC configuré en tant que spoke NCC.

Créer le VPC de la charge de travail et un sous-réseau

Le réseau VPC contient des sous-réseaux dans lesquels vous allez installer la VM GCE pour la validation du chemin de données.

vpc_spoke_network_name="workload-vpc"
vpc_spoke_subnet_name="workload-subnet"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
vpc_spoke_name="workload-vpc-spoke"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom 

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"

Créer le VPC de routage et un sous-réseau

NCC est compatible avec toutes les plages de sous-réseau IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé.

routing_vpc_network_name="routing-vpc"
routing_vpc_subnet_name="routing-vpc-subnet"
routing_vpc_subnet_range="10.0.2.0/24"

gcloud compute networks create "${routing_vpc_network_name}" \
--subnet-mode=custom

gcloud compute networks subnets create "${routing_vpc_subnet_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--range="${routing_vpc_subnet_range}"

Créer le VPC sur site et un sous-réseau

NCC est compatible avec toutes les plages de sous-réseau IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé.

on_prem_network_name="on-prem-net-vpc"
on_prem_subnet_name="on-prem-subnet"
on_prem_subnet_range="10.0.3.0/24"

gcloud compute networks create "${on_prem_network_name}" \
--subnet-mode=custom

gcloud compute networks subnets create "${on_prem_subnet_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--range="${on_prem_subnet_range}"

Configurer des règles de pare-feu VPC de charge de travail

workload_vpc_firewall_name="workload-protocol-fw-vpc"
workload_port_firewall_name="workload-port-firewall-vpc"

gcloud compute firewall-rules create "${workload_vpc_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${workload_port_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

Configurer le routage VPC et les règles de pare-feu VPC

routing_vpc_fw_name="routing-vpc-protocol-fw"
routing_vpc_port_fw_name="routing-vpc--port-fw"

gcloud compute firewall-rules create "${routing_vpc_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${routing_vpc_port_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

Configurer un VPC sur site et des règles de pare-feu VPC

prem_protocol_fw_name="onprem-vpc-protocol-firewall"
prem_port_firewall_name="onprem-vpc-port-firewall-prem"

gcloud compute firewall-rules create "${prem_protocol_fw_name}" \
--network=${on_prem_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${prem_port_firewall_name}" \
--network=${on_prem_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

Configurer une VM GCE dans chaque VPC

Vous aurez besoin d'un accès Internet temporaire pour installer des packages sur "vm1-vpc1-ncc".

Créez trois machines virtuelles, chacune étant attribuée à l'un des VPC précédemment créés.

gcloud compute instances create vm1-vpc-workload \
--zone us-central1-a \
--subnet="${vpc_spoke_subnet_name}" \
--metadata=startup-script='#!/bin/bash
  apt-get update
  apt-get install apache2 -y
  apt-get install tcpdump -y
  service apache2 restart
  echo "
<h3>Web Server: www-vm1</h3>" | tee /var/www/html/index.html'


gcloud compute instances create vm2-vpc-routing \
--zone us-central1-a \
--subnet="${routing_vpc_subnet_name}" \
--no-address 

gcloud compute instances create vm3-onprem \
--zone us-central1-a \
--subnet="${on_prem_subnet_name}" \
--no-address 

3. Configurer la connectivité hybride

Dans cette section, nous allons configurer un tunnel VPN haute disponibilité pour connecter les réseaux VPC sur site et de routage.

ad64a1dee6dc74c9.png

Configurer un routeur cloud avec BGP dans le VPC de routage

routing_vpc_router_name="routing-vpc-cr"
routing_vpc_router_asn=64525

gcloud compute routers create "${routing_vpc_router_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--asn="${routing_vpc_router_asn}"

Configurer un routeur cloud avec BGP dans le VPC sur site

on_prem_router_name="on-prem-router"
on_prem_router_asn=64526

gcloud compute routers create "${on_prem_router_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--asn="${on_prem_router_asn}"

Configurer une passerelle VPN dans le VPC de routage

routing_vpn_gateway_name="routing-vpc-vpn-gateway"

gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"

Configurer une passerelle VPN dans le VPC sur site

on_prem_gateway_name="on-prem-vpn-gateway"

gcloud compute vpn-gateways create "${on_prem_gateway_name}" \
--region="${region}" \
--network="${on_prem_network_name}"

Configurer un tunnel VPN dans le VPC de routage et le VPC sur site

secret_key=$(openssl rand -base64 24)
routing_vpc_tunnel_name="routing-vpc-tunnel"
on_prem_tunnel_name="on-prem-tunnel"

gcloud compute vpn-tunnels create "${routing_vpc_tunnel_name}" \
--vpn-gateway="${routing_vpn_gateway_name}" \
--peer-gcp-gateway="${on_prem_gateway_name}" \
--router="${routing_vpc_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"

gcloud compute vpn-tunnels create "${on_prem_tunnel_name}" \
--vpn-gateway="${on_prem_gateway_name}" \
--peer-gcp-gateway="${routing_vpn_gateway_name}" \
--router="${on_prem_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"

Créer des sessions BGP pour établir un pair BGP entre le VPC de routage et les routeurs cloud sur site

interface_hub_name="if-hub-to-prem"
hub_router_ip="169.254.1.1"

gcloud compute routers add-interface "${routing_vpc_router_name}" \
--interface-name="${interface_hub_name}" \
--ip-address="${hub_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${routing_vpc_tunnel_name}" \
--region="${region}"

bgp_hub_name="bgp-hub-to-prem"
prem_router_ip="169.254.1.2"
gcloud compute routers add-bgp-peer "${routing_vpc_router_name}" \
--peer-name="${bgp_hub_name}" \
--peer-ip-address="${prem_router_ip}" \
--interface="${interface_hub_name}" \
--peer-asn="${on_prem_router_asn}" \
--region="${region}"

interface_prem_name="if-prem-to-hub"
gcloud compute routers add-interface "${on_prem_router_name}" \
--interface-name="${interface_prem_name}" \
--ip-address="${prem_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${on_prem_tunnel_name}" \
--region="${region}"

bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers add-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--peer-ip-address="${hub_router_ip}" \
--interface="${interface_prem_name}" \
--peer-asn="${routing_vpc_router_asn}" \
--region="${region}"

Par défaut, les sous-réseaux du hub NCC ne sont pas annoncés sur les spokes hybrides. À l'étape suivante, configurez le routeur cloud pour qu'il annonce les routes de sous-réseau NCC au réseau sur site.

gcloud compute routers update "${routing_vpc_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--set-advertisement-ranges="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"

Mettez à jour la configuration de l'appairage BGP du routeur cloud sur site pour annoncer des préfixes avec une valeur MED de "111". Dans une section ultérieure, nous observerons le comportement du NCC avec les valeurs BGP Med.

on_prem_router_name="on-prem-router"
bgp_prem_name="bgp-prem-to-hub"

gcloud compute routers update-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--advertised-route-priority="111" \
--region="${region}"

Vérifier l'état du tunnel VPC de routage

gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'

Vérifier l'état du routeur cloud VPC de routage

Utilisez la commande gcloud pour lister les routes BGP apprises du routeur cloud VPC de routage.

gcloud compute routers get-status routing-vpc-cr \
--region=us-central1

4. Hub Network Connectivity Center

Présentation

Dans cette section, nous allons configurer un hub NCC à l'aide de commandes gcloud. Le hub NCC servira de plan de contrôle chargé de créer la configuration de routage entre chaque spoke VPC.

715e7803d5c09569.png

Activer les services d'API

Activez l'API Network Connectivity si elle n'est pas encore activée:

gcloud services enable networkconnectivity.googleapis.com

Créer un hub NCC

Créer un hub NCC à l'aide de la commande gCloud

hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"

Exemple de résultat :

Create request issued for: [mesh-hub]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719930559145-61c448a0426e4-2d18c8dd-7107edbe] to complete...done.               
Created hub [mesh-hub].

Décrivez le hub NCC nouvellement créé. Notez le nom et le chemin d'accès associé.

gcloud network-connectivity hubs describe mesh-hub
createTime: '2024-07-02T14:29:19.260054897Z'
exportPsc: false
name: projects/ncc/locations/global/hubs/mesh-hub
policyMode: PRESET
presetTopology: MESH
routeTables:
- projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uniqueId: 08f9ae88-f76f-432b-92b2-357a85fc83aa
updateTime: '2024-07-02T14:29:32.583206925Z'

NCC Hub a introduit une table de routage qui définit le plan de contrôle pour créer une connectivité de données. Trouver le nom de la table de routage du hub NCC

 gcloud network-connectivity hubs route-tables list --hub=mesh-hub
NAME     HUB       DESCRIPTION
default  mesh-hub

Recherchez l'URI de la table de routage par défaut du NCC.

gcloud network-connectivity hubs route-tables describe default --hub=mesh-hub
createTime: '2024-07-02T14:29:22.340190411Z'
name: projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uid: fa2af78b-d416-41aa-b442-b8ebdf84f799

Lister le contenu de la table de routage par défaut du hub NCC Remarque* : La table de routage du hub NCC est vide jusqu'à ce que des spokes hybrides NCC ou des spokes VPC soient définis.

gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub --route_table=default

La table de routage du hub NCC doit être vide.

5. NCC avec spokes hybrides et VPC

Présentation

Dans cette section, vous allez configurer deux spokes NCC à l'aide de commandes gCloud. L'un des spokes sera un spoke VPC et l'autre un spoke hybride (VPN).

647c835a25a9ceb4.png

Configurer un ou plusieurs VPC de charge de travail en tant que spoke NCC

Configurez le VPC de la charge de travail en tant que spoke NCC et attribuez-le au hub NCC créé précédemment. Les appels d'API NCC Spoke nécessitent de spécifier un emplacement. L'indicateur "–global" permet à l'utilisateur d'éviter de spécifier un chemin d'URI complet lors de la configuration d'un nouveau rayon NCC.

vpc_spoke_name="workload-vpc-spoke"
vpc_spoke_network_name="workload-vpc"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
Create request issued for: [workload-vpc-spoke]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719931097138-61c44aa15463f-90de22c7-40c10e6b] to complete...done.               
Created spoke [workload-vpc-spoke].
createTime: '2024-07-02T14:38:17.315200822Z'
group: projects/ncc/locations/global/hubs/mesh-hub/groups/default
hub: projects/ncc/locations/global/hubs/mesh-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/ncc/global/networks/workload-vpc
name: projects/ncc/locations/global/spokes/workload-vpc-spoke
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 33e50612-9b62-4ec7-be6c-962077fd47dc
updateTime: '2024-07-02T14:38:44.196850231Z'

Configurer un tunnel VPN dans le routage VPC en tant que spok hybride

Utilisez cette commande gcloud pour configurer le tunnel VPN en tant que spoke hybride afin de rejoindre le hub de réseau maillé.

vpn_spoke_name="hybrid-spoke"
routing_vpc_tunnel_name="routing-vpc-tunnel"
region="us-central1"
hub_name="mesh-hub"

gcloud network-connectivity spokes linked-vpn-tunnels create "${vpn_spoke_name}" \
--region="${region}" \
--hub="${hub_name}" \
--vpn-tunnels="${routing_vpc_tunnel_name}"

Exemple de résultat

Create request issued for: [hybrid-spoke]
Waiting for operation [projects/ncc/locations/us-central1/operations/operation-1719932916561-61c45168774be-0a06ae03-88192175] to complete...done.          
Created spoke [hybrid-spoke].

Vérifier la configuration des branches du hub de réseau maillé

Utilisez la commande gcloud pour lister le contenu de la table de routage par défaut du hub NCC.

gcloud network-connectivity hubs list-spokes mesh-hub 

Analyser la table de routage par défaut du hub de réseau maillé

Utilisez la commande gcloud pour lister le contenu de la table de routage par défaut du hub NCC.

gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub \
--route_table=default

Les préfixes appris par le routeur cloud avec des valeurs MED BGP sont propagés sur les spokes du NCC lorsque vous utilisez l'échange de routes dynamique avec des spokes hybrides du NCC.

Utilisez la commande gcloud pour afficher la valeur de priorité de "111".

gcloud network-connectivity hubs route-tables routes list \
--hub=mesh-hub \
--route_table=default \
--effective-location=us-central1 \
--filter=10.0.3.0/24

6. Vérifier le chemin d'accès aux données

À cette étape, nous allons valider le chemin de données entre le NCC hybride et le rayon du VPC. f266a4a762333161.png

Utilisez la sortie de ces commandes gcloud pour vous connecter à la VM sur site.

gcloud compute instances list --filter="name=vm3-onprem"

Connectez-vous à l'instance de VM située sur le réseau sur site.

gcloud compute ssh vm3-onprem --zone=us-central1-a

Dans le terminal de vm3-onprem, utilisez la commande curl pour établir une session Web avec la VM hébergée dans workload-vpc.

curl 10.0.1.2 -v
*   Trying 10.0.1.2:80...
* Connected to 10.0.1.2 (10.0.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.1.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 03 Jul 2024 15:41:34 GMT
< Server: Apache/2.4.59 (Debian)
< Last-Modified: Mon, 01 Jul 2024 20:36:16 GMT
< ETag: "1e-61c358c8272ba"
< Accept-Ranges: bytes
< Content-Length: 30
< Content-Type: text/html
< 

<h3>Web Server: www-vm1</h3>
* Connection #0 to host 10.0.1.2 left intact

7. Effectuer un nettoyage

Se connecter à Cloud Shell et supprimer des ressources GCP

Supprimer des spokes NCC

gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet

gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1

Supprimer le hub NCC

gcloud network-connectivity hubs delete mesh-hub --quiet

Supprimer des règles de pare-feu

gcloud compute firewall-rules delete onprem-vpc-port-firewall-prem onprem-vpc-protocol-firewall routing-vpc--port-fw routing-vpc-protocol-fw workload-port-firewall-vpc workload-protocol-fw-vpc --quiet

Supprimer un tunnel VPN haute disponibilité

gcloud compute vpn-tunnels delete on-prem-tunnel \
--region=us-central1 \
--quiet 

gcloud compute vpn-tunnels delete routing-vpc-tunnel \
--region=us-central1 \
--quiet 

Supprimer VPN-Gateway

gcloud compute vpn-gateways delete on-prem-vpn-gateway \
--region=us-central1 --quiet

gcloud compute vpn-gateways delete routing-vpc-vpn-gateway \
--region us-central1 --quiet

Supprimer un routeur cloud

gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet

gcloud compute routers delete on-prem-router --region us-central1 --quiet

Supprimer des instances GCE

gcloud compute instances delete vm1-vpc-workload \
--zone=us-central1-a \
--quiet


gcloud compute instances delete vm2-vpc-routing \
--zone=us-central1-a \
--quiet

gcloud compute instances delete vm3-onprem \
--zone=us-central1-a \
--quiet

Supprimer des sous-réseaux VPC

gcloud compute networks subnets delete workload-subnet --region us-central1 --quiet

gcloud compute networks subnets delete on-prem-subnet --region us-central1 --quiet

gcloud compute networks subnets delete routing-vpc-subnet --region us-central1 --quiet

Supprimer un ou plusieurs VPC

gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc 
--quiet 

8. Félicitations !

Vous avez terminé l'atelier sur l'échange de routes dynamiques dans Network Connectivity Center.

Sujets abordés

  • Échange de routes dynamiques avec Network Connectivity Center

Étapes suivantes

© Google, LLC ou ses sociétés affiliées. Tous droits réservés. Ne pas diffuser.