Laboratório: VPC do NCC como um spoke

1. Introdução

Visão geral

Neste laboratório, os usuários vão aprender como o Network Connectivity Center(NCC) pode ser usado para estabelecer conectividade entre VPCs em escala por meio do suporte a spokes de VPC. Quando os usuários definem uma VPC como spoke de VPC, isso permite que a conectem a várias redes VPC pelo hub do NCC. O NCC com configuração de spoke VPC reduz a complexidade operacional do gerenciamento da conectividade entre VPCs por peering de VPC, em vez de usar um modelo de gerenciamento de conectividade centralizado.

O Network Connectivity Center (NCC) é um modelo de plano de controle hub e spoke para o gerenciamento de conectividade de rede no Google Cloud. 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 uma malha de conectividade VPC totalmente integrada em três VPCs distintas.

O que você vai aprender

  • Conectividade VPC de malha completa com NCC
  • NAT particular em toda VPC

O que é necessário

  • Conhecimento da rede VPC do GCP.
  • Conhecimento sobre o Cloud Router e roteamento de BGP.
  • Dois projetos separados do GCP
  • Este codelab requer cinco VPCs. Uma dessas VPCs precisa residir em um projeto diferente do hub do NCC
  • Verifique suas Quota:Networks e solicitar redes adicionais, se necessário. Captura de tela abaixo:

6d1b99c6da87fd84.png

Objetivos

  • Configurar o ambiente do GCP
  • Configurar o Network Connectivity Center com uma VPC como spoke
  • Validar o caminho dos dados
  • Conheça os recursos de operacionalidade do NCC
  • Limpar 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 neste 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 $variables para ajudar na implementação da configuração da gcloud no 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

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 ao hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: permite que usuários da rede visualizem 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 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 demonstrar o suporte spoke entre projetos, em uma etapa posterior, vamos implantar uma VPC e regras de firewall em outro projeto.

245f1002db33ca98.png

Crie as VPCs e as sub-redes

A rede VPC contém sub-redes onde você instalará a VM do GCE para validação do caminho de dados

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

Intervalos de sub-rede compatíveis com VPC

O NCC oferece suporte a todos os intervalos de sub-rede IPv4 válidos, exceto endereços IP públicos usados de modo privado. Nesta etapa, crie intervalos de IP válidos na VPC4 que serão importados para a tabela de rotas do hub.

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

Criar intervalos de sub-rede sobrepostos

O NCC não vai importar intervalos de IP sobrepostos para a tabela de rotas do hub. Os usuários poderão contornar essa restrição em uma etapa posterior. Por enquanto, crie dois intervalos de IPs sobrepostos para VPC2 e 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

Configurar regras de firewall da VPC

Configurar regras de firewall em cada VPC para permitir

  • SSH
  • IAP interno
  • Intervalo 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

Configure a VM do GCE em cada VPC

Você precisará de acesso temporário à Internet para instalar pacotes em "vm1-vpc1-ncc".

Criar quatro máquinas virtuais. Cada VM será atribuída a uma das VPCs criadas 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. Hub do Network Connectivity Center

Visão geral

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

8acc7651f52e251e.png

Ativar serviços da API

Ative a API de conectividade de rede caso ela ainda não esteja ativada:

gcloud services enable networkconnectivity.googleapis.com

Criar hub do NCC

Criar um hub do NCC usando o comando gcloud

gcloud network-connectivity hubs create ncc-hub

Exemplo de saída

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]

Descreva o hub de NCC recém-criado. Anote o nome e o caminho associado.

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'

O Hub do NCC introduziu uma tabela de roteamento que define o plano de controle para criar conectividade de dados. Encontrar o nome da tabela de roteamento do hub do NCC

 gcloud network-connectivity hubs route-tables list --hub=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:

Encontre o URI da tabela de rotas padrão do 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'

Liste o conteúdo da tabela de roteamento padrão do hub de NCC. Observação*: a tabela de rotas do hub do NCC estará vazia até que os spokes sejam

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

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

4. NCC com spokes de VPC

Visão geral

Nesta seção, você vai configurar três VPCs como um spoke do NCC usando comandos gcloud.

a70bc80037927bb0.png

Configurar VPCs como um spoke do NCC

Configure as VPCs a seguir como spoke do NCC, nesta ordem

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Configure a VPC4 como um spoke do NCC e atribua-a ao hub do NCC criado anteriormente. As chamadas de API de spoke do NCC exigem a especificação de um local. A flag "–global" simplifica a sintaxe do gcloud, permitindo que o usuário evite especificar um caminho de URI completo ao configurar um novo spoke do NCC.

gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global

Configurar a VPC1 como um spoke do NCC.

Os administradores podem impedir que rotas de sub-rede sejam exportadas de um spoke VPC para a tabela de rotas do hub do NCC. Nesta parte do codelab, você vai criar uma regra de exclusão de exportação com base em um prefixo de resumo para evitar que a sub-rede da VPC1 seja exportada para a tabela de rotas do hub do NCC.

Use este comando gcloud para listar todas as sub-redes pertencentes à VPC1.

gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc

Observe o par de sub-redes /25 criado anteriormente na seção de configuração.

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

Configure a VPC1 como um spoke NCC e evite que o par de sub-redes /25 seja importado para a tabela de roteamento de hub usando "export-exclude-ranges" palavra-chave para filtrar a rota de resumo /24 desse intervalo 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 

Observação* Os usuários podem filtrar até 16 intervalos de IP exclusivos por spoke do NCC.

Liste o conteúdo da tabela de roteamento padrão do hub de NCC. O que aconteceu com o par de sub-redes /25 na tabela de roteamento do NCC Hub?

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

Configurar a VPC2 como um spoke do NCC

gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global

Configure a VPC3 como um spoke do NCC e atribua-a ao hub do NCC criado anteriormente.

gcloud  network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global

O que aconteceu?

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)

O hub do NCC detectou sobre o intervalo de IP em conflito com a VPC2. Lembre-se de que a VPC2 e a VPC3 foram configuradas com a mesma sub-rede IP 10.3.3.0/24.

Como filtrar intervalos de IP sobrepostos com "Excluir exportação"

No momento da elaboração deste codelab, havia um problema conhecido em que os usuários precisavam excluir e recriar spokes do NCC para alterar a configuração do filtro de exportação.

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

Observação:para recriar um spoke que faça referência à mesma VPC, é preciso ter um período de espera de 10 minutos para excluir um spoke da VPC associado a uma VPC específica.

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

Configure a VPC3 como um spoke do NCC e atribua-a ao hub do NCC criado anteriormente. A tentativa de adicionar a VPC3 como spoke com o NCC deve ser bem-sucedida.

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

Liste o conteúdo da tabela de roteamento padrão do hub de NCC e examine a saída.

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

Os intervalos de IP sobrepostos de VPC2 e VPC3 são excluídos. A tabela de roteamento do hub do NCC oferece suporte a todos os tipos de intervalos válidos IPv4, exceto os endereços IP públicos usados de maneira privada (PUPI).

5. NCC com spokes de projetos cruzados

Visão geral

Até agora, você configurou spokes NCC que pertencem ao mesmo projeto que o Hub. Nesta seção, você vai configurar a VPC como um spoke do NCC de um projeto diferente do hub do NCC usando comandos gcloud.

Isso permite que os proprietários de projetos que gerenciam as próprias VPCs participem da conectividade de rede com o NCC Hub.

e1190fa898c5097d.png

Projetos cruzados: console do Google Cloud e Cloud Shell

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

Console do Google Cloud com spoke de vários projetos

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 da gcloud no 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

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.

No mínimo, o administrador de spoke entre projetos precisa receber o papel do IAM: "networkconnectivity.networkSpokeManager. "

A tabela abaixo lista o papel do IAM necessário para o administrador do NCC Hub e Spoke para referência.

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 ao hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: permite que usuários da rede visualizem diferentes atributos de hub e spokes.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

Crie as VPCs e as sub-redes no projeto cruzado

A rede VPC contém sub-redes onde você instalará a VM do GCE para validação do caminho de dados

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 do projeto de hub do NCC

Use este comando gcloud para encontrar o URI do hub do NCC. Você vai precisar do caminho do URI para configurar o spoke do NCC entre projetos na próxima etapa.

gcloud network-connectivity hubs describe ncc-hub

VPC spoke entre projetos

Faça login no outro projeto em que a VPC NÃO faz parte do projeto NCC Hub. No cloudshell, use este comando para configurar uma VPC como spoke NCC.

  • HUB_URI precisa ser o URI de um hub em um projeto diferente.
  • VPC_URI precisa estar no mesmo projeto que o spoke
  • A rede VPC especifica que a VPC neste projeto cruzado vai se juntar ao hub do NCC em outro projeto
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'

Qual é o estado do spoke do NCC entre projetos? Por quê?

6. Rejeitar ou aceitar o spoke entre projetos

Visão geral

Os administradores do hub do NCC precisam aceitar explicitamente um spoke entre projetos para participar dele. Isso impede que os proprietários do projeto anexem spokes NCC não autorizados à tabela de roteamento global do NCC. Depois de aceito ou rejeitado, um spoke pode ser subsequentemente rejeitado ou quantas vezes quiser com a execução dos comandos acima.

Volte ao projeto em que o hub do NCC está localizado fazendo login no Cloud Shell.

Identificar os spokes de vários projetos para revisão

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="reason:PENDING_REVIEW"

Como aceitar um spoke

gcloud network-connectivity spokes accept xproj-spoke --global

Opcional: rejeitar um spoke

gcloud network-connectivity spokes reject xproj-spoke \
--global \
--details="some reason to reject"

Como listar spokes ativos no Hub

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

Listar rotas de sub-rede no hub

Na saída, é possível conferir as rotas de sub-rede do spoke entre as VPCs?

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 particular entre VPCs

Visão geral

Nesta seção, você vai configurar o NAT particular para intervalos de sub-rede sobrepostos entre duas VPCs. A NAT particular entre as VPCs exige NCC.

Na seção anterior, a VPC2 e a VPC3 estão configuradas com um intervalo de sub-rede sobreposto de "10.3.3.0/24". As duas VPCs são configuradas como um spoke NCC para impedir a inserção da sub-rede sobreposta na tabela de rotas do hub do NCC. Isso significa que não há um caminho de dados da camada 3 para alcançar os hosts que residem nessa sub-rede.

Use esses comandos no projeto de hub do NCC para encontrar os intervalos de sub-rede sobrepostos.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

Na vpc2-ncc, qual é o nome da sub-rede que contém o intervalo de IPs sobreposto?

*Anote e salve o nome da sub-rede em algum lugar. Você vai configurar o NAT de origem para este intervalo.

Configurar o Private NAT

Dedicar um intervalo de sub-rede roteável ao tráfego NAT de origem da sub-rede sobreposta da VPC2. Configurando um intervalo de sub-rede sem sobreposição usando "–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

Criar um Cloud Router dedicado para executar NAT particular

gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1

Configurar o Cloud Router para gerar NAT no intervalo sobreposto de 10.3.3.0/24 de vpc2-ncc. No exemplo de configuração abaixo, "overlay-vpc3" é o nome da sub-rede sobreposta. A palavra "ALL" especifica que todos os intervalos de IP na sub-rede terão a origem NAT.

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

As etapas anteriores criaram um pool de intervalos de IPs NAT e a sub-rede específica que será convertida. Nesta etapa, crie a regra NAT "1" que converte pacotes de rede correspondentes ao tráfego proveniente de um intervalo de sub-rede sobreposto se a rede de destino seguir um caminho da tabela de roteamento de hub do 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

Verificar o Private NAT

gcloud compute routers nats describe ncc2-nat --router=private-nat-cr

Exemplo de saída

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

Opcionalmente,

  • Mudar para o console da Web
  • navegue até "Serviços de rede > Cloud NAT > ncc2-nat".

Verifique se a alocação dinâmica de porta está ativada por padrão.

114050bb65e0c4e2.png

Em seguida, você vai verificar o caminho de dados que usa o caminho NAT particular configurado para a VPC2.

5035b181aeaa30a8.png

Abra uma sessão SSH em "vm1-vpc1-ncc" e use o comando tcpdump abaixo para capturar pacotes provenientes do intervalo do pool NAT "10.10.10.0/29".

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

No momento da elaboração deste codelab, a NAT particular não é compatível com pacotes ICMP. Sessão SSH para "pNat-vm-vpc2" e usar o comando curl conforme mostrado abaixo para se conectar a "vm1-vpc1-ncc" na porta TCP 80.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Analise a saída do tcpdump em "vm1-vpc1-ncc". Qual é o endereço IP de origem que originou a sessão TCP para o servidor da Web em "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. Verificar a conectividade do caminho de dados

Consulte o diagrama e verifique o caminho dos dados entre cada máquina virtual.

424df0ebe4510ebb.png

Estabeleça uma conexão SSH com "vm1-vpc1-ncc" e inicie o despejo de TCP para rastrear pacotes ICMP de " vm2-vpc2-ncc". Vale lembrar que esta VM reside na VPC2.

vm1-vpc1-ncc

sudo tcpdump -i any icmp -v -e -n

Estabeleça uma sessão SSH para "vm1-vpc2-ncc" e "ping" o endereço IP "vm1-vpc1-ncc".

vm1-vpc2-ncc

ping 10.1.1.2

Estabeleça um SSH para "vm1-vpc2-ncc" e "ping" o endereço IP "vm1-vpc4-ncc".

vm1-vpc2-ncc

ping 240.0.0.2

9. Limpeza

Fazer login no Cloud Shell e excluir instâncias de VM nas redes do site de hub e filial

Excluir configurações de VPC particulares

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

Excluir spokes da 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

Rejeitar spoke entre projetos

Rejeite o spoke da VPC entre projetos do hub do NCC.

gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global

Excluir hub do NCC

gcloud network-connectivity hubs delete ncc-hub --quiet

Excluir regras 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

Excluir instâncias do 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

Excluir sub-redes 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

Excluir VPCs

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

10. Parabéns!

Você concluiu o laboratório do Network Connectivity Center.

Conteúdo abordado

  • Rede configurada de peering de VPC de malha completa com o hub do NCC
  • Filtro de exclusão de spoke do NCC
  • Suporte via spoke entre projetos
  • NAT particular entre VPC

Próximas etapas

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