CodeLab: Intercambio de rutas dinámico con NCC

1. Introducción

Descripción general

En este lab, los usuarios explorarán cómo se puede usar Network Connectivity Center (NCC) para establecer conectividad en las instalaciones a gran escala a través de la compatibilidad con radios de VPC y el intercambio de rutas dinámicas. Cuando los usuarios definen una VPC como un radio de VPC, esto les permite conectarla a varias redes de VPC a la vez a través del concentrador de NCC. Para establecer la conectividad de red con la red local de un usuario, puede conectar la NIC virtual del dispositivo de router, los túneles de HA_VPN o los adjuntos de VLAN de interconexión al mismo concentrador de NCC que los radios de VPC de NCC.

El recurso de concentrador proporciona un modelo de administración de conectividad centralizado para interconectar radios.

Qué compilarás

En este codelab, compilarás una topología lógica de concentrador y radio con el concentrador de NCC que implementará la conectividad híbrida entre la red local y una VPC de carga de trabajo.

c06021c6aaa47682.png

Qué aprenderás

  • Diferencias entre una VPC de carga de trabajo y una VPC de enrutamiento
  • Integración de NCC de radios de VPC y radios híbridos

Requisitos

  • Conocimientos sobre la red de VPC de GCP
  • Conocimientos de Cloud Router y enrutamiento de BGP
  • Proyecto de Google Cloud
  • Revisa la sección Cuota:Redes y solicita redes adicionales si es necesario. Consulta la siguiente captura de pantalla:

6bc606cb34bce7e8.png

Objetivos

  • Configura el entorno de GCP
  • Configura Network Connectivity Center con una VPC como radio
  • Configura Network Connectivity Center con túneles de VPN con alta disponibilidad como un radio híbrido
  • Valida la ruta de acceso a los datos
  • Explora las funciones de servicio del NCC
  • Limpia los recursos utilizados

Antes de comenzar

Consola de Google Cloud y Cloud Shell

Para interactuar con GCP, usaremos la consola de Google Cloud y Cloud Shell a lo largo de este lab.

Proyecto de NCC Hub Consola de Google Cloud

Puedes acceder a la consola de Cloud en https://console.cloud.google.com.

Configura los siguientes elementos en Google Cloud para facilitar la configuración de Network Connectivity Center:

En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

Inicia Cloud Shell. En este codelab, se usan $variables para ayudar a implementar la configuración de gcloud en 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"

Funciones de IAM

NCC requiere roles de IAM para acceder a APIs específicas. Asegúrate de configurar a tu usuario con los roles de IAM de NCC según sea necesario.

Rol/descripción

Permisos

networkconnectivity.networkAdmin: Permite que los administradores de red administren concentradores y radios.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: Permite agregar y administrar radios en un concentrador. Se usa en la VPC compartida, en la que el proyecto host es propietario del concentrador, pero otros administradores de otros proyectos pueden agregar radios para sus archivos adjuntos al concentrador.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Permite que los usuarios de la red vean diferentes atributos del concentrador y los radios.

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

2. Configura el entorno de red

Descripción general

En esta sección, implementaremos las tres redes de VPC y las reglas de firewall en un solo proyecto. En el diagrama lógico, se ilustra el entorno de red que se configurará en este paso. A los fines de este codelab, se usará una VPC para simular una red local.

6c8baa1bf0676379.png

Concepto clave 1

La VPC global de Google Cloud proporciona conectividad de ruta de datos entre más de 44 regiones de GCP. Cloud Router, un servicio regional, anuncia subredes de manera dinámica y propaga rutas aprendidas en la región donde se configura el router o en toda la red de VPC. Lo que determina que el router en la nube propague rutas a nivel regional o global depende de si el usuario define el modo de enrutamiento dinámico como regional o global.

En esta sección, comenzaremos por configurar cada VPC con el modo de enrutamiento regional. En el resto de este codelab, haz lo siguiente:

  • "VPC de enrutamiento" identifica una VPC que NO está configurada como un radio de VPC de NCC.
  • "VPC de carga de trabajo" identifica un VPC configurado como radio de NCC.

Crea la VPC de la carga de trabajo y una subred

La red de VPC contiene subredes en las que instalarás la VM de GCE para la validación de la ruta de datos.

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}"

Crea la VPC de enrutamiento y una subred

NCC admite todos los rangos de subredes IPv4 válidos, excepto las direcciones IP públicas de uso privado.

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}"

Crea la VPC local y una subred

NCC admite todos los rangos de subredes IPv4 válidos, excepto las direcciones IP públicas de uso privado.

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}"

Configura reglas de firewall de VPC de carga de trabajo

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"

Configura el enrutamiento de VPC y las reglas de firewall de 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"

Configura reglas de firewall de VPC y VPC on-premise

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"

Configura una VM de GCE en cada VPC

Necesitarás acceso temporal a Internet para instalar paquetes en "vm1-vpc1-ncc".

Crea tres máquinas virtuales. Cada VM se asignará a una de las VPC creadas anteriormente.

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. Configura la conectividad híbrida

En esta sección, configuraremos un túnel VPN con alta disponibilidad para conectar las redes de VPC en las instalaciones y de enrutamiento.

ad64a1dee6dc74c9.png

Configura un Cloud Router con BGP en la VPC de enrutamiento

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}"

Configura un Cloud Router con BGP en la VPC local

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}"

Configura una puerta de enlace de VPN en el VPC de enrutamiento

routing_vpn_gateway_name="routing-vpc-vpn-gateway"

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

Configura una puerta de enlace de VPN en la VPC local

on_prem_gateway_name="on-prem-vpn-gateway"

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

Configura un túnel VPN en la VPC de enrutamiento y la VPC local

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}"

Crea sesiones de BGP para establecer un intercambio de tráfico de BGP entre la VPC de enrutamiento y los routers de nube locales

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}"

De forma predeterminada, las subredes del concentrador de NCC no se anuncian a los radios híbridos. En el siguiente paso, configura el router en la nube para que anuncie las rutas de subred de NCC a la red local.

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}"

Actualiza la configuración de intercambio de tráfico BGP del router en las instalaciones para anunciar prefijos con un valor de MED de "111". En una sección posterior, observaremos el comportamiento del NCC con los valores de 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}"

Verifica el estado del túnel de VPC de enrutamiento

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

Verifica el estado del router de Cloud Router de la VPC de enrutamiento

Usa el comando gcloud para enumerar las rutas aprendidas de BGP del router de nube de VPC de enrutamiento.

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

4. Concentrador de Network Connectivity Center

Descripción general

En esta sección, configuraremos un NCC Hub con los comandos de gcloud. El concentrador de NCC funcionará como el plano de control responsable de crear la configuración de enrutamiento entre cada radio de VPC.

715e7803d5c09569.png

Habilita los servicios de API

Habilita la API de Network Connectivity en caso de que aún no esté habilitada:

gcloud services enable networkconnectivity.googleapis.com

Crea un concentrador de NCC

Crea un concentrador de NCC con el comando gCloud

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

Ejemplo de resultado:

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].

Describe el concentrador de NCC recién creado. Anota el nombre y la ruta de acceso asociada.

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 introdujo una tabla de enrutamiento que define el plano de control para crear conectividad de datos. Busca el nombre de la tabla de enrutamiento del concentrador de NCC

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

Busca el URI de la tabla de rutas predeterminada de 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

Enumera el contenido de la tabla de enrutamiento predeterminada del concentrador de NCC. Nota*: La tabla de enrutamiento del concentrador de NCC estará vacía hasta que se definan los radios híbridos de NCC o los radios de VPC.

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

La tabla de rutas del concentrador de NCC debe estar vacía.

5. NCC con radios híbridos y de VPC

Descripción general

En esta sección, configurarás dos extremos de NCC con los comandos de gCloud. Un radio será un radio de VPC y el segundo será un radio híbrido (VPN).

647c835a25a9ceb4.png

Configura las VPC de carga de trabajo como un radio de NCC

Configura la VPC de la carga de trabajo como un radio de NCC y asígnale el concentrador de NCC que se creó anteriormente. Las llamadas a la API de NCC por voz requieren que se especifique una ubicación. La marca "–global" permite al usuario evitar especificar una ruta de URI completa cuando configura un nuevo punto de enlace de 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'

Cómo configurar un túnel VPN en la VPC de enrutamiento como un spok híbrido

Usa este comando gcloud para configurar el túnel de VPN como un radio híbrido para unirte a mesh-hub.

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}"

Resultado de muestra

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].

Verifica la configuración del nodo de malla

Usa el comando gcloud para mostrar el contenido de la tabla de enrutamiento predeterminada del NCC Hub.

gcloud network-connectivity hubs list-spokes mesh-hub 

Cómo analizar la tabla de enrutamiento predeterminada del concentrador de malla

Usa el comando gcloud para mostrar el contenido de la tabla de enrutamiento predeterminada del NCC Hub.

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

Los prefijos aprendidos por Cloud Router con valores de MED de BGP se propagan a través de los radios de NCC cuando se usa el intercambio de rutas dinámico con radios híbridos de NCC.

Usa el comando gcloud para ver el valor de prioridad 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. Verifica la ruta de acceso a los datos

En este paso, validaremos la ruta de datos entre el radio híbrido de NCC y el de VPC. f266a4a762333161.png

Usa el resultado de estos comandos de gcloud para acceder a la VM local.

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

Accede a la instancia de VM que reside en la red local.

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

En la terminal de vm3-onprem, usa el comando curl para establecer una sesión web en la VM alojada en 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. Realiza una limpieza

Accede a Cloud Shell y borra los recursos de GCP.

Cómo borrar radios de NCC

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

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

Cómo borrar el concentrador de NCC

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

Borra reglas de firewall

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

Borra el túnel de VPN con alta disponibilidad

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

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

Borra 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

Cómo borrar Cloud Router

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

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

Borra instancias de 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

Cómo borrar subredes de 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

Cómo borrar VPC

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

8. ¡Felicitaciones!

Completaste el lab de Network Connectivity Center sobre el intercambio de rutas dinámicas.

Temas que se abordaron

  • Intercambio de rutas dinámico con Network Connectivity Center

Próximos pasos

©Google, LLC o sus afiliados. Todos los derechos reservados. Do not distribute.