Lab: VPC de NCC como radio

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

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:

6d1b99c6da87fd84.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.

245f1002db33ca98.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 subred 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

El NCC no importará rangos de IP superpuestos en la tabla de enrutamiento 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.

8acc7651f52e251e.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 de 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.

a70bc80037927bb0.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 al usuario evitar 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 radio de NCC desde un proyecto independiente del concentrador 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.

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

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

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 no autorizados de NCC 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 spokes accept xproj-spoke --global

Opcional: Cómo rechazar un nodo

gcloud network-connectivity spokes reject xproj-spoke \
--global \
--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.0.0/16  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

7. NAT privada entre VPC

Descripción general

En esta sección, configurarás la NAT privada para que se superpongan los 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 un radio de NCC para excluir la subred superpuesta de la inserción 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 para obtener el tráfico de NAT de la subred superpuesta de VPC2. Configura un rango de subred que no se superponga con la marca “–purpose=PRIVATE_NAT”.

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

Crea un Cloud Router 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 origine NAT 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 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 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

Verifica la NAT privada

gcloud 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/projects/yueri-3p-dev/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/yueri-3p-dev/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/projects/yueri-3p-dev/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.

114050bb65e0c4e2.png

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

5035b181aeaa30a8.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. Crea una 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. Verifica la conectividad de la ruta de acceso a los datos

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

424df0ebe4510ebb.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

9. Realiza una 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 compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud 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

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

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

Cómo borrar VPC

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

10. ¡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.