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 la conectividad local a gran escala a través de la compatibilidad con radios de VPC y el intercambio dinámico de rutas. Cuando los usuarios definen una VPC como un radio de VPC, esto les permite conectarla a varias redes de VPC a través del Concentrador de NCC. Para establecer la conectividad de red con la red local de un usuario, este puede adjuntar NIC virtuales de dispositivos de router, túneles de HA_VPN o 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, creará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

  • Distingue entre una VPC de carga de trabajo y una VPC de enrutamiento
  • Integración de NCC de radio de VPC y radio híbrido

Requisitos

  • Conocimiento de la red de VPC de GCP
  • Conocimiento de Cloud Router y del enrutamiento de BGP
  • Proyecto de Google Cloud
  • Verifica tu cuota:redes y solicita redes adicionales si es necesario, como se muestra en la siguiente captura de pantalla:

6bc606cb34bce7e8.png

Objetivos

  • Configura el entorno de GCP
  • Configurar Network Connectivity Center con VPC como radio
  • Configurar Network Connectivity Center con túneles VPN con alta disponibilidad como radio híbrido
  • Validar la ruta de datos
  • Explora las funciones de capacidad de servicio de NCC
  • Limpia los recursos usados

Antes de comenzar

Consola de Google Cloud y Cloud Shell

Para interactuar con GCP, usaremos Google Cloud Console 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 facilitar la implementación de 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

El NCC requiere roles de IAM para acceder a APIs específicas. Asegúrate de configurar 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 el concentrador y los 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 adjuntos al concentrador.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Permite a los usuarios de la red ver 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 forma dinámica y propaga rutas aprendidas en la región en la que se configura el router o en toda la red de VPC. Lo que determina si el Cloud Router propaga rutas de forma regional o global depende del modo de enrutamiento dinámico que defina el usuario: regional o global.

En esta sección, comenzaremos por configurar cada VPC con el modo de enrutamiento regional. Para 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 una VPC configurada 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 subred 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 subred 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 la VPC local y las reglas de firewall de la 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"

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 una 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 la red de VPC local y la 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 la 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 intercambiar tráfico de BGP con la VPC de enrutamiento y los Cloud Routers 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 Cloud Router para anunciar 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 de BGP del Cloud Router local para anunciar prefijos con un valor MED de “111”. En una sección posterior, observaremos el comportamiento de NCC con los valores Med de BGP.

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 la VPC de enrutamiento

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

Verifica el estado del Cloud Router de la VPC de enrutamiento

Usa el comando de gcloud para enumerar las rutas aprendidas por BGP del Cloud Router de la 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 concentrador de NCC con comandos de gcloud. El Concentrador de NCC actuará 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 de 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 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'

El Concentrador de NCC introdujo una tabla de enrutamiento que define el plano de control para crear la 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

Encuentra 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 rutas del Concentrador de NCC estará vacía hasta que se definan radios híbridos de NCC o 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 debería estar vacía.

5. NCC con radios híbridos y de VPC

Descripción general

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

647c835a25a9ceb4.png

Configura las VPC de carga de trabajo como radios de NCC

Configura la VPC de 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 Speech requieren que se especifique una ubicación. La marca "–global" permite que el usuario evite especificar una ruta de URI completa cuando configura un nuevo radio 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'

Configura el túnel VPN en la VPC de enrutamiento como un radio híbrido

Usa este comando de gcloud para configurar el túnel VPN como un radio híbrido para unirse 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 de radio de mesh-hub

Usa el comando de gcloud para enumerar el contenido de la tabla de enrutamiento predeterminada del concentrador de NCC.

gcloud network-connectivity hubs list-spokes mesh-hub 

Analiza la tabla de enrutamiento predeterminada de mesh-hub

Usa el comando de gcloud para enumerar el contenido de la tabla de enrutamiento predeterminada del concentrador de NCC.

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

Los prefijos obtenidos por Cloud Router con valores MED de BGP se propagan en los radios de NCC cuando se usa el intercambio dinámico de rutas con radios híbridos de NCC.

Usa el comando de 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 datos

En este paso, validaremos la ruta de datos entre el radio híbrido y el de VPC de NCC. 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. Limpieza

Accede a Cloud Shell y borra los recursos de GCP.

Borra los radios de NCC

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

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

Borrar el concentrador de NCC

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

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

Borrar puerta de enlace de VPN

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

Borra un 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

Borra 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

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.