1. Introdução
Visão geral
Neste laboratório, os usuários vão aprender a usar o Network Connectivity Center (NCC) para estabelecer conectividade local em larga escala com o suporte a spokes de VPC e troca de rotas dinâmicas. Quando os usuários definem uma VPC como um spoke de VPC, isso permite conectá-la a várias redes VPC juntas pelo hub do NCC. Para estabelecer conectividade de rede com a rede no local de um usuário, é possível anexar NICs virtuais de dispositivos roteadores, túneis de VPN de alta disponibilidade ou anexos de VLAN de interconexão ao mesmo hub do NCC que os spokes de VPC do NCC.
O recurso de hub fornece um modelo de gerenciamento de conectividade centralizado para interconectar spokes.
O que você vai criar
Neste codelab, você vai criar uma topologia lógica de hub e spoke com o hub do NCC que vai implementar a conectividade híbrida entre a rede local e uma VPC de carga de trabalho.

O que você vai aprender
- Distinguir entre uma VPC de carga de trabalho e uma VPC de roteamento
- Integração do NCC de spoke de VPC e spoke híbrido
O que é necessário
- Conhecimento da rede VPC do GCP
- Conhecimento do Cloud Router e do roteamento BGP
- Projeto do Google Cloud
- Verifique sua cota:redes e solicite mais redes, se necessário. Veja a captura de tela abaixo:

Objetivos
- Configurar o ambiente do GCP
- Configurar o Network Connectivity Center com a VPC como spoke
- Configurar o Network Connectivity Center com túneis de VPN de alta disponibilidade como um spoke híbrido
- Validar o caminho dos dados
- Conhecer os recursos de capacidade de serviço do NCC
- Liberar memória dos recursos usados
Antes de começar
Console do Google Cloud e Cloud Shell
Para interagir com o GCP, vamos usar o console do Google Cloud e o Cloud Shell ao longo deste laboratório.
Projeto do hub do NCC Console do Google Cloud
O console do Cloud pode ser acessado em https://console.cloud.google.com.
Configure os seguintes itens no Google Cloud para facilitar a configuração do Network Connectivity Center:
No Console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
Inicie o Cloud Shell. Este codelab usa $variáveis para ajudar na implementação da configuração da gcloud no 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"
Papéis do IAM
O NCC exige papéis do IAM para acessar APIs específicas. Configure seu usuário com os papéis do IAM do NCC conforme necessário.
Função/descrição | Permissões |
networkconnectivity.networkAdmin: permite que administradores de rede gerenciem hubs e spokes. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: permite adicionar e gerenciar spokes em um hub. Para ser usado na VPC compartilhada em que o projeto host é proprietário do hub, mas outros administradores em outros projetos podem adicionar spokes para os anexos deles ao hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: permite que os usuários da rede vejam diferentes atributos de hubs e spokes. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configurar o ambiente de rede
Visão geral
Nesta seção, vamos implantar as três redes VPC e as regras de firewall em um único projeto. O diagrama lógico ilustra o ambiente de rede que será configurado nesta etapa. Para este codelab, uma VPC será usada para simular uma rede local.

Conceito principal 1
A VPC global do Google Cloud oferece conectividade de caminho de dados entre mais de 44 regiões do GCP. O Cloud Router, um serviço regional, anuncia sub-redes e propaga rotas aprendidas dinamicamente na região onde o roteador está configurado ou em toda a rede VPC. O que determina se o Cloud Router vai propagar rotas regionalmente ou globalmente depende do modo de roteamento dinâmico definido pelo usuário: regional ou global.
Nesta seção, vamos começar configurando cada VPC com o modo de roteamento regional. Para o restante deste codelab:
- "VPC de roteamento" identifica uma VPC que NÃO está configurada como um spoke de VPC do NCC.
- "VPC de carga de trabalho" identifica uma VPC configurada como spoke do NCC.
Criar a VPC de carga de trabalho e uma sub-rede
A rede VPC contém sub-redes em que você vai instalar a VM do GCE para validação do caminho de dados.
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}"
Criar a VPC de roteamento e uma sub-rede
O NCC aceita todos os intervalos de sub-rede IPv4 válidos, exceto endereços IP públicos usados de modo 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}"
Criar a VPC no local e uma sub-rede
O NCC aceita todos os intervalos de sub-rede IPv4 válidos, exceto endereços IP públicos usados de modo 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}"
Configurar regras de firewall da VPC de carga de trabalho
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"
Configurar a VPC de roteamento e as regras de firewall da 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"
Configurar a VPC local e as regras de firewall da VPC
prem_protocol_fw_name="onprem-vpc-protocol-firewall"
prem_port_firewall_name="onprem-vpc-port-firewall-prem"
gcloud compute firewall-rules create "${prem_protocol_fw_name}" \
--network=${on_prem_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${prem_port_firewall_name}" \
--network=${on_prem_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configurar uma VM do GCE em cada VPC
Você vai precisar de acesso temporário à Internet para instalar pacotes em "vm1-vpc1-ncc".
Crie três máquinas virtuais. Cada uma delas será atribuída a uma das VPCs criadas 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. Configurar a conectividade híbrida
Nesta seção, vamos configurar um túnel de VPN de alta disponibilidade para conectar as redes no local e rede VPC de roteamento.

Configure um Cloud Router com BGP na VPC de roteamento
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}"
Configure um Cloud Router com BGP na 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}"
Configurar um gateway de VPN na VPC de roteamento
routing_vpn_gateway_name="routing-vpc-vpn-gateway"
gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"
Configurar um gateway de VPN na 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}"
Configure um túnel de VPN na VPC de roteamento e na VPC no 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}"
Crie sessões do BGP para fazer peering com a VPC de roteamento e os Cloud Routers locais:
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}"
Por padrão, as sub-redes do hub do NCC não são anunciadas aos spokes híbridos. Na próxima etapa, configure o Cloud Router para anunciar rotas de sub-redes do NCC para a rede local.
Anuncie sub-redes de spoke de VPC para o Cloud Router 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}"
Anuncie sub-redes no local para o Cloud Router da VPC de roteamento
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"
Atualize a configuração de peering BGP do Cloud Router local para anunciar prefixos com um valor MED de "111". Em uma seção posterior, vamos observar o comportamento do NCC com valores MED do BGP.
on_prem_router_name="on-prem-router"
bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers update-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--advertised-route-priority="111" \
--region="${region}"
Verifique o status do túnel da VPC de roteamento
gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'
Verifique o status do Cloud Router da VPC de roteamento
Use o comando gcloud para listar as rotas aprendidas do BGP do Cloud Router da VPC de roteamento.
gcloud compute routers get-status routing-vpc-cr \
--region=us-central1
4. Hub do Network Connectivity Center
Visão geral
Nesta seção, vamos configurar um hub do NCC usando comandos gcloud. O hub do NCC vai servir como plano de controle responsável por criar a configuração de roteamento entre cada spoke de VPC.

Ativar os serviços de API
Ative a API Network Connectivity, caso ainda não esteja ativada:
gcloud services enable networkconnectivity.googleapis.com
Criar hub do NCC
Criar um hub do NCC usando o comando gcloud
hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"
Exemplo de saída
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].
Descreva o hub do NCC recém-criado. Anote o nome e o caminho associado.
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'
O hub do NCC introduziu uma tabela de roteamento que define o plano de controle para criar a conectividade dos dados. Encontre o nome da tabela de roteamento do hub do NCC:
gcloud network-connectivity hubs route-tables list --hub=mesh-hub
NAME HUB DESCRIPTION
default mesh-hub
Encontre o URI da tabela de rotas padrão do 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
Liste o conteúdo da tabela de roteamento padrão do hub do NCC. Observação: a tabela de rotas do hub do NCC ficará vazia até que os spokes híbridos ou de VPC do NCC sejam definidos.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub --route_table=default
A tabela de rotas do hub do NCC deve estar vazia.
5. NCC com spokes híbridos e de VPC
Visão geral
Nesta seção, você vai configurar dois spokes do NCC usando comandos gcloud. Um spoke será um spoke de VPC e o segundo será um spoke híbrido (VPN).

Configure VPCs de carga de trabalho como um spoke do NCC
Configure a VPC de carga de trabalho como um spoke do NCC e atribua-a ao hub do NCC que foi criado anteriormente: As chamadas de API do NCC exigem que um local seja especificado. A flag "–global" permite que o usuário evite especificar um caminho de URI completo ao configurar um novo spoke do 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'
Configurar o túnel de VPN na VPC de roteamento como um spoke híbrido
Use este comando gcloud para configurar o túnel de VPN como um spoke híbrido para participar do hub de malha:
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}"
Exemplo de saída
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].
Verificar a configuração do spoke do hub de malha
Use o comando gcloud para listar o conteúdo da tabela de roteamento padrão do hub do NCC.
gcloud network-connectivity hubs list-spokes mesh-hub
Analisar a tabela de roteamento padrão do hub de malha
Use o comando gcloud para listar o conteúdo da tabela de roteamento padrão do hub do NCC.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub \
--route_table=default
Os prefixos aprendidos pelo Cloud Router com valores MED do BGP são propagados pelos spokes do NCC ao usar a troca de rotas dinâmicas com spokes híbridos do NCC.
Use o comando gcloud para visualizar o valor de prioridade 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. Verificar o caminho dos dados
Nesta etapa, vamos validar o caminho dos dados entre o spoke híbrido do NCC e o spoke de VPC. 
Use a saída desses comandos gcloud para fazer login na VM local.
gcloud compute instances list --filter="name=vm3-onprem"
Faça login na instância de VM que reside na rede no local.
gcloud compute ssh vm3-onprem --zone=us-central1-a
No terminal de vm3-onprem, use o comando curl para estabelecer uma sessão da Web na VM hospedada em 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. Limpeza
Faça login no Cloud Shell e exclua os recursos do GCP.
Excluir spokes do NCC
gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet
gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1
Excluir hub do NCC
gcloud network-connectivity hubs delete mesh-hub --quiet
Excluir regras 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
Excluir túnel de VPN de alta disponibilidade
gcloud compute vpn-tunnels delete on-prem-tunnel \
--region=us-central1 \
--quiet
gcloud compute vpn-tunnels delete routing-vpc-tunnel \
--region=us-central1 \
--quiet
Excluir gateway de VPN
gcloud compute vpn-gateways delete on-prem-vpn-gateway \
--region=us-central1 --quiet
gcloud compute vpn-gateways delete routing-vpc-vpn-gateway \
--region us-central1 --quiet
Excluir Cloud Router
gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet
gcloud compute routers delete on-prem-router --region us-central1 --quiet
Excluir instâncias do 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
Excluir sub-redes 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
Excluir VPCs
gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc
--quiet
8. Parabéns!
Você concluiu o laboratório do Network Connectivity Center sobre troca dinâmica de rotas.
Conteúdo abordado
- Troca dinâmica de rotas com o Network Connectivity Center
Próximas etapas
©Google LLC ou afiliadas. Todos os direitos reservados. Distribuição proibida.