1. Introducción
Descripción general
En este lab, los usuarios explorarán cómo se puede usar Network Connectivity Center (NCC) para establecer conectividad en las instalaciones a gran escala a través de la compatibilidad con radios de VPC y el intercambio de rutas dinámicas. Cuando los usuarios definen una VPC como un radio de VPC, esto les permite conectarla a varias redes de VPC a la vez a través del concentrador de NCC. Para establecer la conectividad de red con la red local de un usuario, puede conectar la NIC virtual del dispositivo de router, los túneles de HA_VPN o los adjuntos de VLAN de interconexión al mismo concentrador de NCC que los radios de VPC de NCC.
El recurso de concentrador proporciona un modelo de administración de conectividad centralizado para interconectar radios.
Qué compilarás
En este codelab, compilarás una topología lógica de concentrador y radio con el concentrador de NCC que implementará la conectividad híbrida entre la red local y una VPC de carga de trabajo.
Qué aprenderás
- Diferencias entre una VPC de carga de trabajo y una VPC de enrutamiento
- Integración de NCC de radios de VPC y radios híbridos
Requisitos
- Conocimientos sobre la red de VPC de GCP
- Conocimientos de Cloud Router y enrutamiento de BGP
- Proyecto de Google Cloud
- Revisa la sección Cuota:Redes y solicita redes adicionales si es necesario. Consulta la siguiente captura de pantalla:
Objetivos
- Configura el entorno de GCP
- Configura Network Connectivity Center con una VPC como radio
- Configura Network Connectivity Center con túneles de VPN con alta disponibilidad como un radio híbrido
- Valida la ruta de acceso a los datos
- Explora las funciones de servicio del NCC
- Limpia los recursos utilizados
Antes de comenzar
Consola de Google Cloud y Cloud Shell
Para interactuar con GCP, usaremos la consola de Google Cloud y Cloud Shell a lo largo de este lab.
Proyecto de NCC Hub Consola de Google Cloud
Puedes acceder a la consola de Cloud en https://console.cloud.google.com.
Configura los siguientes elementos en Google Cloud para facilitar la configuración de Network Connectivity Center:
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
Inicia Cloud Shell. En este codelab, se usan $variables para ayudar a implementar la configuración de gcloud en Cloud Shell.
gcloud auth list
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname
region="us-central1"
zone="us-central1-a"
Funciones de IAM
NCC requiere roles de IAM para acceder a APIs específicas. Asegúrate de configurar a tu usuario con los roles de IAM de NCC según sea necesario.
Rol/descripción | Permisos |
networkconnectivity.networkAdmin: Permite que los administradores de red administren concentradores y radios. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: Permite agregar y administrar radios en un concentrador. Se usa en la VPC compartida, en la que el proyecto host es propietario del concentrador, pero otros administradores de otros proyectos pueden agregar radios para sus archivos adjuntos al concentrador. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: Permite que los usuarios de la red vean diferentes atributos del concentrador y los radios. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configura el entorno de red
Descripción general
En esta sección, implementaremos las tres redes de VPC y las reglas de firewall en un solo proyecto. En el diagrama lógico, se ilustra el entorno de red que se configurará en este paso. A los fines de este codelab, se usará una VPC para simular una red local.
Concepto clave 1
La VPC global de Google Cloud proporciona conectividad de ruta de datos entre más de 44 regiones de GCP. Cloud Router, un servicio regional, anuncia subredes de manera dinámica y propaga rutas aprendidas en la región donde se configura el router o en toda la red de VPC. Lo que determina que el router en la nube propague rutas a nivel regional o global depende de si el usuario define el modo de enrutamiento dinámico como regional o global.
En esta sección, comenzaremos por configurar cada VPC con el modo de enrutamiento regional. En el resto de este codelab, haz lo siguiente:
- "VPC de enrutamiento" identifica una VPC que NO está configurada como un radio de VPC de NCC.
- "VPC de carga de trabajo" identifica un VPC configurado como radio de NCC.
Crea la VPC de la carga de trabajo y una subred
La red de VPC contiene subredes en las que instalarás la VM de GCE para la validación de la ruta de datos.
vpc_spoke_network_name="workload-vpc"
vpc_spoke_subnet_name="workload-subnet"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
vpc_spoke_name="workload-vpc-spoke"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
Crea la VPC de enrutamiento y una subred
NCC admite todos los rangos de subredes IPv4 válidos, excepto las direcciones IP públicas de uso privado.
routing_vpc_network_name="routing-vpc"
routing_vpc_subnet_name="routing-vpc-subnet"
routing_vpc_subnet_range="10.0.2.0/24"
gcloud compute networks create "${routing_vpc_network_name}" \
--subnet-mode=custom
gcloud compute networks subnets create "${routing_vpc_subnet_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--range="${routing_vpc_subnet_range}"
Crea la VPC local y una subred
NCC admite todos los rangos de subredes IPv4 válidos, excepto las direcciones IP públicas de uso privado.
on_prem_network_name="on-prem-net-vpc"
on_prem_subnet_name="on-prem-subnet"
on_prem_subnet_range="10.0.3.0/24"
gcloud compute networks create "${on_prem_network_name}" \
--subnet-mode=custom
gcloud compute networks subnets create "${on_prem_subnet_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--range="${on_prem_subnet_range}"
Configura reglas de firewall de VPC de carga de trabajo
workload_vpc_firewall_name="workload-protocol-fw-vpc"
workload_port_firewall_name="workload-port-firewall-vpc"
gcloud compute firewall-rules create "${workload_vpc_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${workload_port_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configura el enrutamiento de VPC y las reglas de firewall de VPC
routing_vpc_fw_name="routing-vpc-protocol-fw"
routing_vpc_port_fw_name="routing-vpc--port-fw"
gcloud compute firewall-rules create "${routing_vpc_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${routing_vpc_port_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configura reglas de firewall de VPC y VPC on-premise
prem_protocol_fw_name="onprem-vpc-protocol-firewall"
prem_port_firewall_name="onprem-vpc-port-firewall-prem"
gcloud compute firewall-rules create "${prem_protocol_fw_name}" \
--network=${on_prem_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${prem_port_firewall_name}" \
--network=${on_prem_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configura una VM de GCE en cada VPC
Necesitarás acceso temporal a Internet para instalar paquetes en "vm1-vpc1-ncc".
Crea tres máquinas virtuales. Cada VM se asignará a una de las VPC creadas anteriormente.
gcloud compute instances create vm1-vpc-workload \
--zone us-central1-a \
--subnet="${vpc_spoke_subnet_name}" \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
apt-get install tcpdump -y
service apache2 restart
echo "
<h3>Web Server: www-vm1</h3>" | tee /var/www/html/index.html'
gcloud compute instances create vm2-vpc-routing \
--zone us-central1-a \
--subnet="${routing_vpc_subnet_name}" \
--no-address
gcloud compute instances create vm3-onprem \
--zone us-central1-a \
--subnet="${on_prem_subnet_name}" \
--no-address
3. Configura la conectividad híbrida
En esta sección, configuraremos un túnel VPN con alta disponibilidad para conectar las redes de VPC en las instalaciones y de enrutamiento.
Configura un Cloud Router con BGP en la VPC de enrutamiento
routing_vpc_router_name="routing-vpc-cr"
routing_vpc_router_asn=64525
gcloud compute routers create "${routing_vpc_router_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--asn="${routing_vpc_router_asn}"
Configura un Cloud Router con BGP en la VPC local
on_prem_router_name="on-prem-router"
on_prem_router_asn=64526
gcloud compute routers create "${on_prem_router_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--asn="${on_prem_router_asn}"
Configura una puerta de enlace de VPN en el VPC de enrutamiento
routing_vpn_gateway_name="routing-vpc-vpn-gateway"
gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"
Configura una puerta de enlace de VPN en la VPC local
on_prem_gateway_name="on-prem-vpn-gateway"
gcloud compute vpn-gateways create "${on_prem_gateway_name}" \
--region="${region}" \
--network="${on_prem_network_name}"
Configura un túnel VPN en la VPC de enrutamiento y la VPC local
secret_key=$(openssl rand -base64 24)
routing_vpc_tunnel_name="routing-vpc-tunnel"
on_prem_tunnel_name="on-prem-tunnel"
gcloud compute vpn-tunnels create "${routing_vpc_tunnel_name}" \
--vpn-gateway="${routing_vpn_gateway_name}" \
--peer-gcp-gateway="${on_prem_gateway_name}" \
--router="${routing_vpc_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"
gcloud compute vpn-tunnels create "${on_prem_tunnel_name}" \
--vpn-gateway="${on_prem_gateway_name}" \
--peer-gcp-gateway="${routing_vpn_gateway_name}" \
--router="${on_prem_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"
Crea sesiones de BGP para establecer un intercambio de tráfico de BGP entre la VPC de enrutamiento y los routers de nube locales
interface_hub_name="if-hub-to-prem"
hub_router_ip="169.254.1.1"
gcloud compute routers add-interface "${routing_vpc_router_name}" \
--interface-name="${interface_hub_name}" \
--ip-address="${hub_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${routing_vpc_tunnel_name}" \
--region="${region}"
bgp_hub_name="bgp-hub-to-prem"
prem_router_ip="169.254.1.2"
gcloud compute routers add-bgp-peer "${routing_vpc_router_name}" \
--peer-name="${bgp_hub_name}" \
--peer-ip-address="${prem_router_ip}" \
--interface="${interface_hub_name}" \
--peer-asn="${on_prem_router_asn}" \
--region="${region}"
interface_prem_name="if-prem-to-hub"
gcloud compute routers add-interface "${on_prem_router_name}" \
--interface-name="${interface_prem_name}" \
--ip-address="${prem_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${on_prem_tunnel_name}" \
--region="${region}"
bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers add-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--peer-ip-address="${hub_router_ip}" \
--interface="${interface_prem_name}" \
--peer-asn="${routing_vpc_router_asn}" \
--region="${region}"
De forma predeterminada, las subredes del concentrador de NCC no se anuncian a los radios híbridos. En el siguiente paso, configura el router en la nube para que anuncie las rutas de subred de NCC a la red local.
Anuncia subredes de radios de VPC al router de nube 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}"
Anuncia subredes locales al router en la nube de Cloud Router
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"
Actualiza la configuración de intercambio de tráfico BGP del router en las instalaciones para anunciar prefijos con un valor de MED de "111". En una sección posterior, observaremos el comportamiento del NCC con los valores de BGP Med.
on_prem_router_name="on-prem-router"
bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers update-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--advertised-route-priority="111" \
--region="${region}"
Verifica el estado del túnel de VPC de enrutamiento
gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'
Verifica el estado del router de Cloud Router de la VPC de enrutamiento
Usa el comando gcloud para enumerar las rutas aprendidas de BGP del router de nube de VPC de enrutamiento.
gcloud compute routers get-status routing-vpc-cr \
--region=us-central1
4. Concentrador de Network Connectivity Center
Descripción general
En esta sección, configuraremos un NCC Hub con los comandos de gcloud. El concentrador de NCC funcionará como el plano de control responsable de crear la configuración de enrutamiento entre cada radio de VPC.
Habilita los servicios de API
Habilita la API de Network Connectivity en caso de que aún no esté habilitada:
gcloud services enable networkconnectivity.googleapis.com
Crea un concentrador de NCC
Crea un concentrador de NCC con el comando gCloud
hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"
Ejemplo de resultado:
Create request issued for: [mesh-hub]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719930559145-61c448a0426e4-2d18c8dd-7107edbe] to complete...done.
Created hub [mesh-hub].
Describe el concentrador de NCC recién creado. Anota el nombre y la ruta de acceso asociada.
gcloud network-connectivity hubs describe mesh-hub
createTime: '2024-07-02T14:29:19.260054897Z'
exportPsc: false
name: projects/ncc/locations/global/hubs/mesh-hub
policyMode: PRESET
presetTopology: MESH
routeTables:
- projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uniqueId: 08f9ae88-f76f-432b-92b2-357a85fc83aa
updateTime: '2024-07-02T14:29:32.583206925Z'
NCC Hub introdujo una tabla de enrutamiento que define el plano de control para crear conectividad de datos. Busca el nombre de la tabla de enrutamiento del concentrador de NCC
gcloud network-connectivity hubs route-tables list --hub=mesh-hub
NAME HUB DESCRIPTION
default mesh-hub
Busca el URI de la tabla de rutas predeterminada de NCC.
gcloud network-connectivity hubs route-tables describe default --hub=mesh-hub
createTime: '2024-07-02T14:29:22.340190411Z'
name: projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uid: fa2af78b-d416-41aa-b442-b8ebdf84f799
Enumera el contenido de la tabla de enrutamiento predeterminada del concentrador de NCC. Nota*: La tabla de enrutamiento del concentrador de NCC estará vacía hasta que se definan los radios híbridos de NCC o los radios de VPC.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub --route_table=default
La tabla de rutas del concentrador de NCC debe estar vacía.
5. NCC con radios híbridos y de VPC
Descripción general
En esta sección, configurarás dos extremos de NCC con los comandos de gCloud. Un radio será un radio de VPC y el segundo será un radio híbrido (VPN).
Configura las VPC de carga de trabajo como un radio de NCC
Configura la VPC de la carga de trabajo como un radio de NCC y asígnale el concentrador de NCC que se creó anteriormente. Las llamadas a la API de NCC por voz requieren que se especifique una ubicación. La marca "–global" permite al usuario evitar especificar una ruta de URI completa cuando configura un nuevo punto de enlace de NCC.
vpc_spoke_name="workload-vpc-spoke"
vpc_spoke_network_name="workload-vpc"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
Create request issued for: [workload-vpc-spoke]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719931097138-61c44aa15463f-90de22c7-40c10e6b] to complete...done.
Created spoke [workload-vpc-spoke].
createTime: '2024-07-02T14:38:17.315200822Z'
group: projects/ncc/locations/global/hubs/mesh-hub/groups/default
hub: projects/ncc/locations/global/hubs/mesh-hub
linkedVpcNetwork:
uri: https://www.googleapis.com/compute/v1/projects/ncc/global/networks/workload-vpc
name: projects/ncc/locations/global/spokes/workload-vpc-spoke
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 33e50612-9b62-4ec7-be6c-962077fd47dc
updateTime: '2024-07-02T14:38:44.196850231Z'
Cómo configurar un túnel VPN en la VPC de enrutamiento como un spok híbrido
Usa este comando gcloud para configurar el túnel de VPN como un radio híbrido para unirte a mesh-hub.
vpn_spoke_name="hybrid-spoke"
routing_vpc_tunnel_name="routing-vpc-tunnel"
region="us-central1"
hub_name="mesh-hub"
gcloud network-connectivity spokes linked-vpn-tunnels create "${vpn_spoke_name}" \
--region="${region}" \
--hub="${hub_name}" \
--vpn-tunnels="${routing_vpc_tunnel_name}"
Resultado de muestra
Create request issued for: [hybrid-spoke]
Waiting for operation [projects/ncc/locations/us-central1/operations/operation-1719932916561-61c45168774be-0a06ae03-88192175] to complete...done.
Created spoke [hybrid-spoke].
Verifica la configuración del nodo de malla
Usa el comando gcloud para mostrar el contenido de la tabla de enrutamiento predeterminada del NCC Hub.
gcloud network-connectivity hubs list-spokes mesh-hub
Cómo analizar la tabla de enrutamiento predeterminada del concentrador de malla
Usa el comando gcloud para mostrar el contenido de la tabla de enrutamiento predeterminada del NCC Hub.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub \
--route_table=default
Los prefijos aprendidos por Cloud Router con valores de MED de BGP se propagan a través de los radios de NCC cuando se usa el intercambio de rutas dinámico con radios híbridos de NCC.
Usa el comando gcloud para ver el valor de prioridad de “111”.
gcloud network-connectivity hubs route-tables routes list \
--hub=mesh-hub \
--route_table=default \
--effective-location=us-central1 \
--filter=10.0.3.0/24
6. Verifica la ruta de acceso a los datos
En este paso, validaremos la ruta de datos entre el radio híbrido de NCC y el de VPC.
Usa el resultado de estos comandos de gcloud para acceder a la VM local.
gcloud compute instances list --filter="name=vm3-onprem"
Accede a la instancia de VM que reside en la red local.
gcloud compute ssh vm3-onprem --zone=us-central1-a
En la terminal de vm3-onprem, usa el comando curl para establecer una sesión web en la VM alojada en workload-vpc.
curl 10.0.1.2 -v
* Trying 10.0.1.2:80...
* Connected to 10.0.1.2 (10.0.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.1.2
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 03 Jul 2024 15:41:34 GMT
< Server: Apache/2.4.59 (Debian)
< Last-Modified: Mon, 01 Jul 2024 20:36:16 GMT
< ETag: "1e-61c358c8272ba"
< Accept-Ranges: bytes
< Content-Length: 30
< Content-Type: text/html
<
<h3>Web Server: www-vm1</h3>
* Connection #0 to host 10.0.1.2 left intact
7. Realiza una limpieza
Accede a Cloud Shell y borra los recursos de GCP.
Cómo borrar radios de NCC
gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet
gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1
Cómo borrar el concentrador de NCC
gcloud network-connectivity hubs delete mesh-hub --quiet
Borra reglas de firewall
gcloud compute firewall-rules delete onprem-vpc-port-firewall-prem onprem-vpc-protocol-firewall routing-vpc--port-fw routing-vpc-protocol-fw workload-port-firewall-vpc workload-protocol-fw-vpc --quiet
Borra el túnel de VPN con alta disponibilidad
gcloud compute vpn-tunnels delete on-prem-tunnel \
--region=us-central1 \
--quiet
gcloud compute vpn-tunnels delete routing-vpc-tunnel \
--region=us-central1 \
--quiet
Borra VPN-Gateway
gcloud compute vpn-gateways delete on-prem-vpn-gateway \
--region=us-central1 --quiet
gcloud compute vpn-gateways delete routing-vpc-vpn-gateway \
--region us-central1 --quiet
Cómo borrar Cloud Router
gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet
gcloud compute routers delete on-prem-router --region us-central1 --quiet
Borra instancias de GCE
gcloud compute instances delete vm1-vpc-workload \
--zone=us-central1-a \
--quiet
gcloud compute instances delete vm2-vpc-routing \
--zone=us-central1-a \
--quiet
gcloud compute instances delete vm3-onprem \
--zone=us-central1-a \
--quiet
Cómo borrar subredes de VPC
gcloud compute networks subnets delete workload-subnet --region us-central1 --quiet
gcloud compute networks subnets delete on-prem-subnet --region us-central1 --quiet
gcloud compute networks subnets delete routing-vpc-subnet --region us-central1 --quiet
Cómo borrar VPC
gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc
--quiet
8. ¡Felicitaciones!
Completaste el lab de Network Connectivity Center sobre el intercambio de rutas dinámicas.
Temas que se abordaron
- Intercambio de rutas dinámico con Network Connectivity Center
Próximos pasos
©Google, LLC o sus afiliados. Todos los derechos reservados. Do not distribute.