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.
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:
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.
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.
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.
Anunciar sub-redes de ligação da VPC para o roteador local na nuvem
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}"
Divulgar sub-redes locais para o roteador VPC Cloud Router
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.
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).
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.
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.