Lab: VPC de NCC como radio

Acerca de este codelab
schedule7 minutos
subjectÚltima actualización: 28 de marzo de 2025
account_circleEscrito por Eric Yu, David Tu

En este lab, los usuarios explorarán cómo se puede usar Network Connectivity Center(NCC) para establecer conectividad entre VPC a gran escala a través de la compatibilidad con radios de VPC. 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. La NCC con configuración de radios de VPC reduce la complejidad operativa de administrar la conectividad entre VPC en pares a través del intercambio de tráfico entre VPC, en lugar de usar un modelo de administración de conectividad centralizado.

Recuerda que Network Connectivity Center (NCC) es un modelo de plano de control de concentrador y radio para administrar la conectividad de red en Google Cloud. 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 radios con el concentrador de NCC que implementará un tejido de conectividad de VPC completamente en malla en tres VPC distintas.

Qué aprenderás

  • Conectividad de VPC de malla completa con NCC
  • NAT privada en VPC

Requisitos

  • Conocimientos de la red de VPC de GCP
  • Conocimientos de Cloud Router y enrutamiento de BGP
  • Dos proyectos de GCP separados
  • Este codelab requiere 5 VPC. Una de esas VPC debe residir en un proyecto diferente al del concentrador de NCC.
  • 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
  • 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 [HUB-PROJECT-NAME]
projectname=[HUB-PROJECT-NAME]
echo $projectname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

Funciones de IAM

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

Para demostrar la compatibilidad con radios entre proyectos, en un paso posterior, implementaremos una VPC y reglas de firewall en un proyecto diferente.

dc4ed09dae1a0056.png

Crea las VPC y las subredes

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

gcloud compute networks create vpc1-ncc --subnet-mode custom
gcloud compute networks create vpc2-ncc --subnet-mode custom
gcloud compute networks create vpc3-ncc --subnet-mode custom
gcloud compute networks create vpc4-ncc --subnet-mode custom

gcloud compute networks subnets create vpc1-ncc-subnet1 \
--network vpc1-ncc --range 10.1.1.0/24 --region us-central1

gcloud compute networks subnets create vpc1-ncc-subnet2 \
--network vpc1-ncc --range 10.1.2.0/25 --region us-central1

gcloud compute networks subnets create vpc1-ncc-subnet3 \
--network vpc1-ncc --range 10.1.2.128/25 --region us-central1

gcloud compute networks subnets create vpc2-ncc-subnet1 \
--network vpc2-ncc --range 10.2.2.0/24 --region us-central1

Rangos de subredes admitidos por VPC

NCC admite todos los rangos de subredes IPv4 válidos, excepto las direcciones IP públicas de uso privado. En este paso, crea rangos de IP válidos en VPC4 que se importarán a la tabla de rutas del concentrador.

gcloud compute networks subnets create benchmark-testing-rfc2544 \
--network vpc4-ncc --range 198.18.0.0/15 --region us-east1

gcloud compute networks subnets create class-e-rfc5735 \
--network vpc4-ncc --range 240.0.0.0/4 --region us-east1

gcloud compute networks subnets create ietf-protcol-assignment-rfc6890 \
--network vpc4-ncc --range 192.0.0.0/24 --region us-east1

gcloud compute networks subnets create ipv6-4-relay-rfc7526 \
--network vpc4-ncc --range 192.88.99.0/24 --region us-east1

gcloud compute networks subnets create pupi \
--network vpc4-ncc --range 50.50.50.0/24 --region us-east1

gcloud compute networks subnets create test-net-1-rfc5737 \
--network vpc4-ncc --range 192.0.2.0/24 --region us-east1

gcloud compute networks subnets create test-net-2-rfc5737 \
--network vpc4-ncc --range 198.51.100.0/24 --region us-east1

gcloud compute networks subnets create test-net-3-rfc5737 \
--network vpc4-ncc --range 203.0.113.0/24 --region us-east1

Cómo crear rangos de subredes superpuestos

NCC no importará rangos de IP superpuestos en la tabla de rutas del concentrador. Los usuarios evitarán esta restricción en un paso posterior. Por ahora, crea dos rangos de IP superpuestos para VPC2 y VPC3.

gcloud compute networks subnets create overlapping-vpc2 \
--network vpc3-ncc --range 10.3.3.0/24 --region us-central1

gcloud compute networks subnets create overlapping-vpc3 \
--network vpc2-ncc --range 10.3.3.0/24 --region us-central1

Cómo configurar reglas de firewall de VPC

Configura reglas de firewall en cada VPC para permitir lo siguiente:

  • SSH
  • IAP interno
  • Rango 10.0.0.0/8
gcloud compute firewall-rules create ncc1-vpc-internal \
--network vpc1-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc2-vpc-internal \
--network vpc2-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc3-vpc-internal \
--network vpc3-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc4-vpc-internal \
--network vpc4-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc1-vpc-iap \
--network vpc1-ncc \
--allow all \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc2-vpc-iap \
--network vpc2-ncc \
--allow=tcp:22 \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc3-vpc-iap \
--network vpc3-ncc \
--allow=tcp:22  \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc4-vpc-iap \
--network vpc4-ncc \
--allow=tcp:22  \
--source-ranges 35.235.240.0/20

Configura una VM de GCE en cada VPC

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

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

gcloud compute instances create vm1-vpc1-ncc \
--subnet vpc1-ncc-subnet1 \
--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-vpc2-ncc \
--zone us-central1-a \
--subnet vpc2-ncc-subnet1 \
--no-address 

gcloud compute instances create pnat-vm-vpc2 \
--zone us-central1-a \
--subnet overlapping-vpc3 \
--no-address 


gcloud compute instances create vm1-vpc4-ncc \
--zone us-east1-b \
--subnet class-e-rfc5735 \
--no-address

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

860347511de47cea.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

gcloud network-connectivity hubs create ncc-hub

Ejemplo de resultado:

Create request issued for: [ncc-hub]
Waiting for operation [projects/user-3p-dev/locations/global/operations/operation-1668793629598-5edc24b7ee3ce-dd4c765b-5ca79556] to complete...done.     
Created hub [ncc-hub]

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

gcloud network-connectivity hubs describe ncc-hub
gcloud network-connectivity hubs describe ncc-hub
createTime: '2023-11-02T02:28:34.890423230Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub
routeTables:
- projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uniqueId: de749c4c-0ef8-4888-8622-1ea2d67450f8
updateTime: '2023-11-02T02:28:48.613853463Z'

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=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:

Busca el URI de la tabla de rutas predeterminada del NCC.

gcloud network-connectivity hubs route-tables describe default --hub=ncc-hub
createTime: '2023-02-24T17:32:58.786269098Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uid: eb1fdc35-2209-46f3-a8d6-ad7245bfae0b
updateTime: '2023-02-24T17:33:01.852456186Z'

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 activen los radios.

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

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

4. NCC con radios de VPC

Descripción general

En esta sección, configurarás tres VPC como un punto de enlace de NCC con los comandos de gCloud.

b367b1659d2df694.png

Configura las VPC como radios de NCC

Configura las siguientes VPC como nodos de NCC en este orden:

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Configura VPC4 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" simplifica la sintaxis de gcloud, ya que permite que el usuario evite especificar una ruta de URI completa cuando configura un nuevo punto de enlace de NCC.

gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global

Configura VPC1 como un radio de NCC.

Los administradores pueden excluir las rutas de subred para que no se exporten desde un radio de VPC a la tabla de rutas del concentrador de NCC. En esta parte del codelab, crea una regla de exclusión de exportación basada en un prefijo de resumen para evitar que la subred de VPC1 se exporte a la tabla de rutas del concentrador de NCC.

Usa este comando de gcloud para enumerar todas las subredes que pertenecen a VPC1.

gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc

Anota el par de subredes /25 que se crearon anteriormente en la sección de configuración.

NAME              REGION       NETWORK   RANGE          STACK_TYPE  
vpc1-ncc-subnet1  us-central1  vpc1-ncc  10.1.1.0/24    IPV4_ONLY
vpc1-ncc-subnet2  us-central1  vpc1-ncc  10.1.2.0/25    IPV4_ONLY
vpc1-ncc-subnet3  us-central1  vpc1-ncc  10.1.2.128/25  IPV4_ONLY

Configura VPC1 como un radio de NCC y excluye el par de subredes /25 para que no se importen en la tabla de enrutamiento del concentrador. Para ello, usa la palabra clave "export-exclude-ranges" para filtrar la ruta de resumen /24 de ese rango específico.

gcloud network-connectivity spokes linked-vpc-network create vpc1-spoke1 \
--hub=ncc-hub \
--vpc-network=vpc1-ncc \
--exclude-export-ranges=10.1.2.0/24 \
--global 

Nota*: Los usuarios pueden filtrar hasta 16 rangos de IP únicos por radio de NCC.

Enumera el contenido de la tabla de enrutamiento predeterminada del concentrador de NCC. ¿Qué sucedió con el par de subredes /25 en la tabla de enrutamiento del concentrador de NCC?

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route-table=default --filter="NEXT_HOP:vpc1-ncc"
IP_CIDR_RANGE  STATE   TYPE                  NEXT_HOP  HUB      ROUTE_TABLE
10.1.1.0/24    ACTIVE  VPC_PRIMARY_SUBNET    vpc1-ncc  ncc-hub  default

Configura VPC2 como un radio de NCC

gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global

Configura VPC3 como un radio de NCC y asígnale el concentrador de NCC que se creó anteriormente.

gcloud  network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global

¿Qué pasó?

ERROR: (gcloud.network-connectivity.spokes.linked-vpc-network.create) Invalid resource state for "https://www.googleapis.com/compute/v1/projects/xxxxxxxx/global/networks/vpc3-ncc": 10.3.3.0/24 (SUBNETWORK) overlaps with 10.3.3.0/24 (SUBNETWORK) from "projects/user-3p-dev/global/networks/vpc2-ncc" (peer)

El concentrador de NCC detectó un rango de IP superpuesto con VPC2. Recuerda que VPC2 y VPC3 se configuraron con la misma subred de IP 10.3.3.0/24.

Cómo filtrar rangos de IP superpuestos con la opción Excluir exportación

En el momento de escribir este codelab, se trata de un problema conocido en el que los usuarios deben borrar y volver a crear radios de NCC para realizar cambios de configuración en el filtro de exportación.

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

Nota: Si borras un radio de VPC asociado con una VPC específica, se requiere que venza un período de inactividad de 10 minutos para volver a crear un radio nuevo que haga referencia a esa misma VPC.

gcloud  network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

Configura VPC3 como un radio de NCC y asígnale el concentrador de NCC que se creó anteriormente. Este intento de agregar VPC3 como un radio a NCC debería tener éxito.

gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

Enumera el contenido de la tabla de enrutamiento predeterminada del concentrador de NCC y examina el resultado.

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

Se excluyen los rangos de IP superpuestos de VPC2 y VPC3. La tabla de enrutamiento de NCC Hub admite todos los tipos de rangos de IPv4 válidos, excepto las direcciones IP públicas de uso privado (PUPI).

5. NCC con radios de proyecto cruzado

Descripción general

Hasta ahora, configuraste radios de NCC que pertenecen al mismo proyecto que el concentrador. En esta sección, configurarás la VPC como un punto de enlace de NCC desde un proyecto independiente del centro de NCC con los comandos de gCloud.

Esto permite que los propietarios de proyectos que administran sus propias VPC participen en la conectividad de red con NCC Hub.

a90b3185e30832e8.png

Proyectos cruzados: 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.

Consola de Google Cloud de la unidad central de proyectos cruzados

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-CROSSPROJECT-NAME]
xprojname=[YOUR-CROSSPROJECT-NAME]
echo $xprojname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

Funciones de IAM

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

Como mínimo, se debe otorgar al administrador de la unidad central de proyectos múltiples el rol de IAM: "networkconnectivity.networkSpokeManager. "

En la siguiente tabla, se indica el rol de IAM necesario para el administrador del centro y los extremos de NCC como referencia.

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

Crea las VPC y las subredes en el proyecto cruzado

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

gcloud compute networks create xproject-vpc \
--subnet-mode custom

gcloud compute networks subnets create xprj-net-1 \
--network xproject-vpc \
--range 10.100.1.0/24 \
--region us-central1

gcloud compute networks subnets create xprj-net-2 \
--network xproject-vpc \
--range 10.100.2.0/24 \
--region us-central1

URI del proyecto del concentrador de NCC

Usa este comando de gcloud para encontrar el URI de NCC Hub. Necesitarás la ruta de acceso del URI para configurar el NCC entre proyectos que se mencionó en el paso anterior.

gcloud network-connectivity hubs describe ncc-hub

VPC de arista entre proyectos

Accede al otro proyecto en el que la VPC NO forma parte del proyecto de NCC Hub. En Cloud Shell, usa este comando para configurar una VPC como un radio de NCC.

  • HUB_URI debe ser el URI de un concentrador en un proyecto diferente.
  • VPC_URI debe estar en el mismo proyecto que el radio.
  • VPC-network especifica que la VPC de este proyecto cruzado se unirá al concentrador de NCC en otro proyecto.
gcloud network-connectivity spokes linked-vpc-network create xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--vpc-network=xproject-vpc

.

Create request issued for: [xproj-spoke]
Waiting for operation [projects/xproject/locations/global/operations/operation-1689790411247-600dafd351158-2b862329-19b747f1] to complete...done.                           
Created spoke [xproj-spoke].
createTime: '2023-07-19T18:13:31.388500663Z'
hub: projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/xproject-vpc
name: projects/xproject/locations/global/spokes/xproj-spoke
reasons:
- code: PENDING_REVIEW
  message: Spoke is Pending Review
spokeType: VPC_NETWORK
state: INACTIVE
uniqueId: 46b4d091-89e2-4760-a15d-c244dcb7ad69
updateTime: '2023-07-19T18:13:38.652800902Z'

¿Cuál es el estado del radio de NCC entre proyectos? ¿Por qué?

6. Acepta o rechaza un vínculo entre proyectos

Descripción general

Los administradores del concentrador de NCC deben aceptar explícitamente un radio entre proyectos para unirse al concentrador. Esto evita que los propietarios de proyectos conecten radios de NCC no autorizados a la tabla de enrutamiento global de NCC. Una vez que se acepta o rechaza un radio, se puede rechazar o aceptar tantas veces como se desee ejecutando los comandos anteriores.

Accede a Cloud Shell para volver al proyecto en el que se encuentra el concentrador de NCC.

Identifica los voceros de proyectos cruzados que debes revisar

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="reason:PENDING_REVIEW"

Aceptación de un radio

gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke

Opcional: Cómo rechazar un nodo

gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke 
--details="some reason to reject"

Cómo mostrar una lista de los radios activos en el concentrador

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="state:ACTIVE"
NAME            PROJECT          LOCATION  TYPE         STATE   STATE REASON
Xproj-spoke     xproj            global    VPC_NETWORK  ACTIVE
vpc4-spoke4     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc1-spoke1     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc2-spoke2     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc3-spoke3     user-3p-dev      global    VPC_NETWORK  ACTIVE

Cómo enumerar las rutas de subred en el concentrador

En el resultado, ¿puedes ver las rutas de subred del radio de VPC cruzado?

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:xprj-vpc"
IP_CIDR_RANGE  STATE   TYPE                NEXT_HOP  HUB      ROUTE_TABLE
10.100.1.0/24  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

Actualiza la VPC de radio de proyecto cruzado con el filtro de inclusión-exportación

Accede al proyecto en el que la VPC NO forma parte del proyecto de NCC Hub. En Cloud Shell, usa este comando para configurar una VPC como un radio de NCC.

  • HUB_URI debe ser el URI de un concentrador en un proyecto diferente.
  • VPC_URI debe estar en el mismo proyecto que el radio.
  • VPC-network especifica que la VPC de este proyecto cruzado se unirá al concentrador de NCC en otro proyecto.
  • Importa solo el rango de subred 10.100.2.0/24 en la tabla de rutas del concentrador de NCC.
  • Ten en cuenta el valor de "ETAG" del resultado. El NCC genera este valor y deberás proporcionarlo al administrador del concentrador de NCC. El administrador del concentrador de NCC deberá hacer referencia a este valor cuando acepte la solicitud del radio de proyecto cruzado para unirse al concentrador.
gcloud network-connectivity spokes linked-vpc-network update xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--include-export-ranges=10.100.2.0/24
Update request issued for: [xprj-vpc]
Waiting for operation [projects]/xproject/locations/global/operations/operation-1742936388803-6313100521cae-020ac5d2-58
52fbba] to complete...done.                                                                                                 
Updated spoke [xprj-vpc].
createTime: '2025-02-14T14:25:41.996129250Z'
etag: '4'
fieldPathsPendingUpdate:
- linked_vpc_network.include_export_ranges
group: projects/xxxxxxxx/locations/global/hubs/ncc-hub/groups/default
hub: projects/xxxxxxxx/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  includeExportRanges:
  - 10.100.2.0/24
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/vpc1-spoke
name: projects/xproject/locations/global/spokes/xprj-vpc
reasons:
- code: UPDATE_PENDING_REVIEW
  message: Spoke update is Pending Review
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 182e0f8f-91cf-481c-a081-ea6f7e40fb0a
updateTime: '2025-03-25T20:59:51.995734879Z'

Identifica los voceros actualizados de proyectos cruzados para revisar

Accede al proyecto que aloja el concentrador de NCC. En cloudshell, usa este comando para verificar el estado de la actualización del vínculo de VPC entre proyectos.

  • ¿Cuál es el valor de ETAG? Este valor debe coincidir con el resultado de la actualización de la unidad central de VPC.
gcloud network-connectivity hubs list-spokes ncc-hub \ 
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml

Acepta los cambios actualizados del vínculo entre proyectos

Usa el comando para aceptar la solicitud del radio de proyecto cruzado para unirse al concentrador de NCC

gcloud network-connectivity hubs accept-spoke-update ncc-hub \
 --spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
 --spoke-etag={etag value}

Opcionalmente, rechaza los cambios actualizados del eje de proyectos cruzados

Usa el comando para rechazar la solicitud del radio de proyecto cruzado para unirse al concentrador de NCC

gcloud network-connectivity hubs reject-spoke-update ncc-hub  \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke  \
--details="not today" \
--spoke-etag={etag value} 

Verifica que el radio de proyecto cruzado se haya unido al concentrador de NCC

gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"

7. NAT privada entre VPC

Descripción general

En esta sección, configurarás la NAT privada para superponer rangos de subredes entre dos VPC. Ten en cuenta que la NAT privada entre VPC requiere NCC.

En la sección anterior, VPC2 y VPC3 se configuraron con un rango de subred superpuesto de "10.3.3.0/24". Ambas VPC se configuran como radios de NCC para evitar que la subred superpuesta se inserte en la tabla de enrutamiento del concentrador de NCC, lo que significa que no hay una ruta de datos de capa 3 para llegar a los hosts que residen en esa subred.

Usa estos comandos en el proyecto del concentrador de NCC para encontrar los rangos de subredes superpuestos.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

En vpc2-ncc, ¿cuál es el nombre de la subred que contiene el rango de IP superpuesto?

*Anota y guarda el nombre de la subred en algún lugar. Configurarás la NAT de origen para este rango.

Configura NAT privada

Dedica un rango de subred enrutable al tráfico de NAT de origen de la subred superpuesta de VPC2. Configura un rango de subred que no se superponga con la marca “–purpose=PRIVATE_NAT”.

gcloud beta compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT

Crea un router en la nube dedicado para realizar NAT privada

gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1

Configura el router en la nube para que use NAT de origen en el rango superpuesto de 10.3.3.0/24 de vpc2-ncc. En la siguiente configuración de ejemplo, "overlapping-vpc3" es el nombre de la subred superpuesta. La palabra clave “TODOS” especifica que todos los rangos de IP de la subred tendrán NAT de origen.

gcloud beta compute routers nats create ncc2-nat \
--router=private-nat-cr \
--type=PRIVATE \
--nat-custom-subnet-ip-ranges=overlapping-vpc3:ALL \
--router-region=us-central1

En los pasos anteriores, se creó un grupo de rangos de IP de NAT y la subred específica que se traducirá. En este paso, crea la regla de NAT "1" que traduce los paquetes de red que coinciden con el tráfico proveniente del rango de subred superpuesto si la red de destino toma una ruta de la tabla de enrutamiento del concentrador de NCC.

gcloud beta compute routers nats rules create 1 \
--router=private-nat-cr \
--region=us-central1 \
--match='nexthop.hub == "//networkconnectivity.googleapis.com/projects/$projectname/locations/global/hubs/ncc-hub"' \
--source-nat-active-ranges=ncc2-spoke-nat \
--nat=ncc2-nat

Cómo verificar la ruta de datos de la NAT privada

gcloud beta compute routers nats describe ncc2-nat --router=private-nat-cr

Ejemplo de resultado:

enableDynamicPortAllocation: true
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
name: ncc2-nat
rules:
- action:
    sourceNatActiveRanges:
    - https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/xxxxxxxx/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

De manera opcional,

  • Cómo cambiar a la consola web
  • Navega a "Servicios de red > Cloud NAT > ncc2-nat".

Verifica que la asignación de puertos dinámica esté habilitada de forma predeterminada.

7317d3cfb7e9468b.png

A continuación, verificarás la ruta de datos que usa la ruta de NAT privada configurada para VPC2.

444d45616f1d0cae.png

Abre una sesión de SSH a "vm1-vpc1-ncc" y usa el siguiente comando tcpdump para capturar paquetes provenientes del rango del grupo de NAT "10.10.10.0/29".

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

Al momento de escribir este codelab, la NAT privada no admite paquetes ICMP. Sesión de SSH a "pNat-vm-vpc2" y usa el comando curl como se muestra a continuación para conectarte a "vm1-vpc1-ncc" en el puerto TCP 80.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Examina el resultado de tcpdump en "vm1-vpc1-ncc". ¿Cuál es la dirección IP de origen que originó la sesión TCP a nuestro servidor web en "vm1-vpc1-ncc"?

tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
19:05:27.504761 ens4  In  IP 10.10.10.2.1024 > 10.1.1.2:80: Flags [S], seq 2386228656, win 65320, options [mss 1420,sackOK,TS val 3955849029 ecr 0,nop,wscale 7], length 0
19:05:27.504805 ens4  Out IP 10.1.1.2:80 > 10.10.10.2.1024: Flags [S.], seq 48316785, ack 2386228657, win 64768, options [mss 1420,sackOK,TS val 1815983704 ecr 3955849029,nop,wscale 7], length 0
<output snipped>

8. Compatibilidad de NCC con subredes IPv6

Network Connectivity Center admite el intercambio de subredes IPv6 y el intercambio de rutas dinámicas entre radios de VPC de NCC y radios híbridos. En esta sección, configura el NCC para que admita el modo de intercambio de rutas de subred IPv4 e IPv6 de pila doble y solo IPv6.

57282c3276d50671.png

Crea una VPC nueva para IPv6 que se unirá a NCC-Hub como un radio de VPC

gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6 

gcloud compute networks subnets create vpc4-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1

Usa este comando para configurar VPC5 como un radio de NCC y excluir la ruta de subred IPv4 para que no se exporte a la tabla de rutas del concentrador. Exporta la red ULA IPv6 a la tabla de rutas del concentrador de NCC.

gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--include-export-ranges=ALL_IPV6_RANGES
--exclude-export-ranges=10.5.5.0/24
--global

Habilita VPC1 y VPC4 para las direcciones locales únicas (ULA) IPv6 privadas. GCP asignará automáticamente todas las direcciones ULA del rango fd20::/20.

gcloud compute networks update vpc-ncc4 \
    --enable-ula-internal-ipv6

gcloud compute networks update vpc-ncc1 \
    --enable-ula-internal-ipv6

Crea una subred IPv6 nativa y una subred IPv4_v6 de pila doble en la VPC1

gcloud compute networks subnets create vpc1-ipv6-sn1 \
    --network=vpc-ncc1 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc1-ipv64-sn2 \
    --network=vpc-ncc1 \
    --range=10.10.10.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

Crea una subred ipv6 nativa y una subred ipv4_v6 de pila doble en VPC4

gcloud compute networks subnets create vpc4-ipv6-sn1 \
    --network=vpc-ncc4 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc4-ipv64-sn2 \
    --network=vpc-ncc4 \
    --range=10.40.40.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

En VPC1, crea una regla de firewall de VPC IPv6 para permitir el tráfico proveniente del rango de ULA IPv6.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
    --network=vpc-ncc1 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

En VPC4, crea una regla de firewall de VPC IPv6 para permitir el tráfico proveniente del rango de ULA IPv6.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
    --network=vpc-ncc4 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

Crea tres instancias de GCE IPv6 para verificar la conectividad de la ruta de datos en la siguiente sección.

gcloud compute instances create vpc4-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc4-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc1-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-dual-stack-vm \
    --zone us-east1-b \
    --network=vpc-ncc1 \
    --subnet=vpc2-ipv64-sn2 \
    --stack-type=IPV4_IPV6

Cómo verificar subredes IPv6 en NCC Hub

Verifica la tabla de ruta del concentrador de NCC en busca de subredes ULA IPv6.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

Ten en cuenta que el resultado del comando anterior no enumeró las subredes IPv6. De forma predeterminada, NO se incluyen las subredes IPv6 de los radios de VPC para exportarlas a la tabla de rutas del concentrador de NCC.

Listed 0 items.

Usa los siguientes comandos de gcloud para actualizar los radios VPC1 y VPC4 para exportar subredes IPv6 a la tabla de rutas del concentrador de NCC.

gcloud network-connectivity spokes linked-vpc-network update vpc1-spoke1 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

Una vez más, verifica la tabla de ruta del concentrador de NCC en busca de subredes ULA IPv6.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

Ejemplo de resultado:

IP_CIDR_RANGE                  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
fd20:c95:95d2:1:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub        default
fd20:90:6768:1000:0:0:0:0/64             us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc1  ncc-hub        default
fd20:c95:95d2:1000:0:0:0:0/64            us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub        default
fd20:90:6768:0:0:0:0:0/64                us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc1  ncc-hub        default

9. Verifica la conectividad de la ruta de acceso a los datos

Conectividad de ruta de acceso de datos IPv4

Consulta el diagrama y verifica la ruta de datos IPv4 entre cada máquina virtual.

27c61b09f2bf2d02.png

Establece una conexión SSH a "vm1-vpc1-ncc" y comienza el volcado de TCP para rastrear los paquetes ICMP de "vm2-vpc2-ncc". Recuerda que esta VM reside en VPC2.

vm1-vpc1-ncc

sudo tcpdump -i any icmp -v -e -n

Establece una sesión SSH a "vm1-vpc2-ncc" y realiza un “ping” a la dirección IP de "vm1-vpc1-ncc".

vm1-vpc2-ncc

ping 10.1.1.2

Establece una conexión SSH a "vm1-vpc2-ncc" y realiza un “ping” a la dirección IP de "vm1-vpc4-ncc".

vm1-vpc2-ncc

ping 240.0.0.2

Conectividad de la ruta de datos de IPv6

Consulta el diagrama y verifica la ruta de datos IP64 entre cada máquina virtual.

3afe67968317a16d.png

Usa el comando gcloud para enumerar la dirección IP de cada instancia habilitada para IPv6.

 gcloud compute instances list --filter="INTERNAL_IP:fd20"

Resultado de muestra

NAME                ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP                   EXTERNAL_IP      STATUS
vpc1-ipv6-vm        us-central1-a  n1-standard-1               fd20:90:6768:0:0:1:0:0/96                      RUNNING
vpc4-ipv6-vm        us-central1-a  n1-standard-1               fd20:c95:95d2:1:0:1:0:0/96                     RUNNING
vpc1-dual-stack-vm  us-east1-b     n1-standard-1               10.10.10.3                    XXX.196.137.107  RUNNING
                                                               fd20:90:6768:1000:0:1:0:0/96

Establece una sesión SSH en "vpc1-dualstack-vm" y realiza un "ping" a la dirección IPv6 de "vpc1-ipv6-vm" para validar la conectividad IPv6 dentro de una VPC global.

ping fd20:90:6768:1000:0:1::

Establece una sesión de SSH en "vpc1-dualstack-vm" y realiza un ping a la dirección IPv6 de "vpc4-ipv6-vm" para validar la conectividad IPv6 a través de una conexión de NCC.

ping fd20:c95:95d2:1:0:1::

10. Limpieza

Accede a Cloud Shell y borra las instancias de VM en las redes del sitio principal y de la sucursal.

Cómo borrar las configuraciones de NAT de VPC privadas

gcloud beta compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud beta compute routers nats delete ncc2-nat \
--router=private-nat-cr \
--router-region=us-central1 \
--quiet

gcloud compute routers delete private-nat-cr \
--region=us-central1 \
--quiet

Cómo borrar radios de NCC

gcloud network-connectivity spokes delete vpc1-spoke1 --global --quiet

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

gcloud network-connectivity spokes delete vpc3-spoke3 --global --quiet

gcloud network-connectivity spokes delete vpc4-spoke4 --global --quiet

Cómo rechazar un vínculo entre proyectos

Rechaza el radio de VPC de proyecto cruzado desde el concentrador de NCC.

gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global

Cómo borrar el concentrador de NCC

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

Cómo borrar reglas de firewall

gcloud compute firewall-rules delete ncc1-vpc-internal --quiet
gcloud compute firewall-rules delete ncc2-vpc-internal --quiet
gcloud compute firewall-rules delete ncc3-vpc-internal --quiet
gcloud compute firewall-rules delete ncc4-vpc-internal --quiet
gcloud compute firewall-rules delete ncc1-vpc-iap --quiet
gcloud compute firewall-rules delete ncc2-vpc-iap --quiet
gcloud compute firewall-rules delete ncc3-vpc-iap --quiet
gcloud compute firewall-rules delete ncc4-vpc-iap --quiet
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc1 
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc4 

Borra instancias de GCE

gcloud compute instances delete vm1-vpc1-ncc --zone=us-central1-a --quiet
gcloud compute instances delete vm2-vpc2-ncc --zone=us-central1-a --quiet
gcloud compute instances delete pnat-vm-vpc2 --zone=us-central1-a --quiet
gcloud compute instances delete vm1-vpc4-ncc --zone=us-east1-b --quiet
gcloud compute instances delete vpc4-ipv6-vm  --zone us-central1-a --quiet
gcloud compute instances delete vpc2-dual-stack-vm --zone us-east1-b --quiet
gcloud compute instances delete vpc2-ipv6-vm --zone us-central1-a --quiet

Cómo borrar subredes de VPC

gcloud compute networks subnets delete ncc2-spoke-nat --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet2 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet3 --region us-central1 --quiet
gcloud compute networks subnets delete vpc2-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc2 --region us-central1 --quiet 
gcloud compute networks subnets delete overlapping-vpc3 --region us-central1 --quiet

gcloud compute networks subnets delete benchmark-testing-rfc2544 --region us-east1 --quiet
gcloud compute networks subnets delete class-e-rfc5735 --region us-east1 --quiet
gcloud compute networks subnets delete ietf-protcol-assignment-rfc6890 --region us-east1 --quiet
gcloud compute networks subnets delete ipv6-4-relay-rfc7526 --region us-east1 --quiet
gcloud compute networks subnets delete pupi --region us-east1 --quiet
gcloud compute networks subnets delete test-net-1-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-2-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-3-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc4-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc4-ipv6-sn1 --region=us-central1 --quiet

Cómo borrar VPC

gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc 
--quiet 

11. ¡Felicitaciones!

Completaste el lab de Network Connectivity Center.

Temas que se abordaron

  • Red de intercambio de tráfico entre VPC de malla completa configurada con el concentrador de NCC
  • Filtro de exclusión de radio de NCC
  • Asistencia de radios entre proyectos
  • NAT privada entre VPC

Próximos pasos

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