Codelab: troca de rotas dinâmicas com NCC

1. Introdução

Visão geral

Neste laboratório, os usuários vão explorar como o Network Connectivity Center (NCC) pode ser usado para estabelecer conectividade no local em grande escala com suporte para spokes da VPC e troca de rotas dinâmicas. Quando os usuários definem uma VPC como um spoke, eles podem conectá-la a várias redes VPC pelo hub do NCC. Para estabelecer a conectividade de rede com a rede local de um usuário, ele pode anexar NICs virtuais de dispositivos roteador, túneis HA_VPN ou anexos da VLAN de interconexão ao mesmo hub do NCC que os spokes VPC do NCC.

O recurso de hub fornece um modelo de gerenciamento de conectividade centralizado para interligar spokes.

O que você vai criar

Neste codelab, você vai criar uma topologia hub and spoke lógica com o hub do NCC que vai implementar a conectividade híbrida entre a rede local e uma VPC de carga de trabalho.

c06021c6aaa47682.png

O que você vai aprender

  • Distinguir entre uma VPC de carga de trabalho e uma VPC de roteamento
  • Integração do NCC com spoke VPC e spoke híbrido

O que é necessário

  • Conhecimento da rede VPC do GCP
  • Conhecimento sobre o Cloud Router e o roteamento BGP
  • Projeto do Google Cloud
  • Verifique sua Quota:Redes e solicite adição de Redes, se necessário. Confira a captura de tela abaixo:

6bc606cb34bce7e8.png

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 HA-VPN como um spoke híbrido
  • Validar caminho de dados
  • Conhecer os recursos de manutenção do NCC
  • Limpar os recursos usados

Antes de começar

Console do Google Cloud e Cloud Shell

Para interagir com o GCP, usaremos o console do Google Cloud e o Cloud Shell neste laboratório.

Projeto do Hub 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 $variables para ajudar na implementação da configuração do 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 o usuário com os papéis do IAM do NCC conforme necessário.

Função/descrição

Permissões

networkconnectivity.networkAdmin: permite que os administradores de rede gerenciem hubs e spokes.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: permite adicionar e gerenciar spokes em um hub. Para ser usado em uma 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 acessem diferentes atributos de hub 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 regras de firewall em um único projeto. O diagrama lógico ilustra o ambiente de rede que será configurado nesta etapa. Para este codelab, vamos usar uma VPC para simular uma rede local.

6c8baa1bf0676379.png

Conceito-chave 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 em que o roteador está configurado ou em toda a rede VPC. O que determina se o Cloud Router propaga 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. No restante deste codelab:

  • "VPC de roteamento" identifica uma VPC que NÃO está configurada como um spoke 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 a 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 oferece suporte a 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 on-prem e uma sub-rede

O NCC oferece suporte a 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 regras de firewall e VPC on-prem

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 a 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 VPC locais e de roteamento.

ad64a1dee6dc74c9.png

Configurar 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}"

Configurar 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}"

Configurar um túnel VPN na VPC de roteamento e na 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}"

Crie sessões de BGP para o par de BGP da VPC de roteamento e dos roteadores de nuvem no local

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 para spokes híbridos. Na próxima etapa, configure o Cloud Router para anunciar rotas de sub-redes do NCC para a rede local.

gcloud compute routers update "${routing_vpc_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--set-advertisement-ranges="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"

Atualize a configuração do peering do 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 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}"

Verificar o status do túnel VPC de roteamento

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

Verificar o status do roteador de nuvem vpc de roteamento

Use o comando gcloud para listar as rotas aprendidas do BGP do Cloud Router de roteamento de VPC.

gcloud compute routers get-status routing-vpc-cr \
--region=us-central1

4. Hub da Central de conectividade de rede

Visão geral

Nesta seção, vamos configurar um hub da NCC usando comandos gcloud. O hub do NCC será o plano de controle responsável por criar a configuração de roteamento entre cada spoke da VPC.

715e7803d5c09569.png

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 de 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 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 NCC Hub introduziu uma tabela de roteamento que define o plano de controle para criar conectividade de 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

Listar o conteúdo da tabela de roteamento padrão do hub do NCC. Observação* A tabela de rotas do hub do NCC vai estar vazia até que os spokes híbridos do NCC ou da VPC sejam definidos.

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

A tabela de rotas do hub de NCC precisa estar vazia.

5. NCC com spokes híbridos e VPC

Visão geral

Nesta seção, você vai configurar dois spokes do NCC usando comandos da gCloud. Um spoke será um spoke VPC e o segundo será um spoke híbrido (VPN).

647c835a25a9ceb4.png

Configurar 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 de raio 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 elo 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'

Configure o túnel VPN na VPC de roteamento como um spok híbrido

Use este comando gcloud para configurar o túnel de VPN como um spoke híbrido para ingressar no hub de rede.

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 raio da malha-hub

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

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 entre os spokes do NCC ao usar a troca de rotas dinâmicas com spokes híbridos do NCC.

Use o comando gcloud para conferir o valor de prioridade "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 de dados

Nesta etapa, vamos validar o caminho de dados entre o híbrido do NCC e o spoke da VPC. f266a4a762333161.png

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 está na rede local.

gcloud compute ssh vm3-onprem --zone=us-central1-a

No terminal da vm3-onprem, use o comando curl para estabelecer uma sessão da Web com a VM hospedada na 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 o 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 o 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 de rotas dinâmicas.

Conteúdo abordado

  • Troca de rota dinâmica com o Network Connectivity Center

Próximas etapas

©Google, LLC ou afiliadas. Todos os direitos reservados. Distribuição proibida.