Laboratório: VPC do NCC como um spoke

1. Introdução

Visão geral

Neste laboratório, os usuários vão descobrir como o Network Connectivity Center(NCC) pode ser usado para estabelecer conectividade entre VPCs em grande escala com suporte a spokes de VPC. Quando os usuários definem uma VPC como um spoke, eles podem conectá-la 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 as VPCs usando o peering de VPC, em vez de usar um modelo de gerenciamento de conectividade centralizado.

A central de conectividade de rede (NCC, na sigla em inglês) é um modelo de plano de controle hub-and-spoke para gerenciamento de conectividade de rede no Google Cloud. 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 lógica de hub e spoke com o hub do NCC, que vai implementar um tecido de conectividade VPC totalmente interligado em três VPCs distintas.

O que você vai aprender

  • Conectividade VPC de malha completa com NCC
  • NAT particular na VPC

O que é necessário

  • Conhecimento da rede VPC do GCP
  • Conhecimento sobre o roteamento do Cloud Router e do BGP
  • Dois projetos separados do GCP
  • Este codelab requer cinco VPCs. Uma dessas VPCs precisa estar em um projeto separado do hub do NCC.
  • Verifique sua Quota:Redes e solicite adição de Redes, se necessário. Confira a captura de tela abaixo:

6d1b99c6da87fd84.png

Objetivos

  • Configurar o ambiente do GCP
  • Configurar o Network Connectivity Center com a VPC como spoke
  • 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 [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 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 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 demonstrar o suporte a spokes entre projetos, em uma etapa posterior, vamos implantar uma VPC e regras de firewall em um projeto diferente.

245f1002db33ca98.png

Criar as VPCs e as sub-redes

A rede VPC contém sub-redes em que você vai instalar a VM do GCE para a 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 com suporte à 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 rota do hub. Os usuários vão contornar essa restrição em uma etapa posterior. Por enquanto, crie dois intervalos de IP 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

Configurar a VM do GCE em cada VPC

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

Crie quatro máquinas virtuais, e cada uma delas 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 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.

8acc7651f52e251e.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

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 do 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 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=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'

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 ficar 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 de NCC precisa 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 spokes do NCC nesta ordem:

  • VPC4
  • VPC1
  • VPC2
  • VPC3

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

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

Configure a VPC1 como um spoke do NCC.

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

Use este comando gcloud para listar todas as sub-redes que pertencem à 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 exclua o par de sub-redes /25 da importação na tabela de roteamento do hub usando a palavra-chave "export-exclude-ranges" 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.

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

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 um intervalo de IP sobreposto 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 a exportação de exclusão

No momento em que este codelab foi escrito, esse é um problema conhecido em que os usuários precisam excluir e recriar os raios do NCC para fazer mudanças de configuração no filtro de exportação.

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

Observação:a exclusão de um spoke VPC associado a uma VPC específica exige um período de espera de 10 minutos para que um novo spoke que referencia essa VPC seja recriado.

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. Essa tentativa de adicionar a VPC3 como um spoke ao 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 do 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 aceita todos os tipos de intervalo válido de IPv4, exceto endereços IP públicos usados de modo particular (PUPI).

5. NCC com spokes entre projetos

Visão geral

Até agora, você configurou spokes do NCC que pertencem ao mesmo projeto que o hub. Nesta seção, você vai configurar a VPC como um spoke do NCC em um projeto separado 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

Projeto cruzado: 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.

Console do Google Cloud para spokes de projetos cruzados

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-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 o usuário com os papéis do IAM do NCC conforme necessário.

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

A tabela abaixo lista o papel do IAM necessário para o administrador do hub e do spoke do NCC.

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

Criar as VPCs e as sub-redes no projeto cruzado

A rede VPC contém sub-redes em que você vai instalar a VM do GCE para a 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 do 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 de aro entre projetos

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

  • HUB_URI precisa ser o URI de um hub em um projeto diferente.
  • O VPC_URI precisa estar no mesmo projeto que o spoke
  • A rede VPC especifica que a VPC nesse projeto cruzado vai participar do 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. Como rejeitar ou aceitar um spoke de projeto cruzado

Visão geral

Os administradores do hub do NCC precisam aceitar explicitamente um spoke entre projetos para ingressar no hub. Isso impede que os proprietários de projetos conectem raios NCC não autorizados à tabela de roteamento global do NCC. Depois que um spoke for aceito ou rejeitado, ele poderá ser rejeitado ou aceito quantas vezes forem necessárias executando os comandos acima.

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

Identificar os raios de projetos cruzados para revisão

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

Aceitar um spoke

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

Opcional: como recusar um spoke

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

Como listar os 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, você consegue ver as rotas de sub-rede do spoke de VPC cruzado?

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. Private NAT entre VPCs

Visão geral

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

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

Use estes comandos no projeto do hub do NCC para encontrar o intervalo de sub-redes sobrepostas.

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 IP sobreposto?

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

Configurar o Private NAT

Dedique um intervalo de sub-rede roteável para o tráfego de origem NAT da sub-rede sobreposta da VPC2. Configurando um intervalo de sub-redes não sobreposto usando a flag "–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 privado

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

Configure o Cloud Router para NAT de origem o intervalo sobreposto de 10.3.3.0/24 da vpc2-ncc. No exemplo de configuração abaixo, "overlapping-vpc3" é o nome da sub-rede sobreposta. A palavra-chave "ALL" especifica que todos os intervalos de IP na sub-rede vão ser NAT de origem.

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 IP NAT e a sub-rede específica que será traduzida. Nesta etapa, crie a regra NAT "1", que traduz pacotes de rede correspondentes ao tráfego proveniente do intervalo de sub-rede sobreposto, se a rede de destino seguir um caminho da tabela de roteamento do 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
  • Acesse "Serviços de rede > Cloud NAT > ncc2-nat".

Verifique se a alocação de porta dinâmica 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 para "vm1-vpc1-ncc" e use o comando tcpdump abaixo para capturar pacotes provenientes do intervalo de 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, o NAT particular não oferece suporte a pacotes ICMP. Sessão SSH para "pNat-vm-vpc2" e use 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 

Examine a saída do tcpdump em "vm1-vpc1-ncc." Qual é o endereço IP de origem que originou a sessão TCP para nosso 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 de dados entre cada máquina virtual.

424df0ebe4510ebb.png

Use SSH para acessar "vm1-vpc1-ncc" e iniciar o despejo TCP para rastrear pacotes ICMP de " vm2-vpc2-ncc". Essa VM fica na VPC2.

vm1-vpc1-ncc

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

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

vm1-vpc2-ncc

ping 10.1.1.2

Estabeleça uma conexão SSH com "vm1-vpc2-ncc" e "ping" no endereço IP de "vm1-vpc4-ncc".

vm1-vpc2-ncc

ping 240.0.0.2

9. Limpeza

Faça login no Cloud Shell e exclua as instâncias de VM nas redes do hub e do site de filial

Excluir configurações de NAT 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 de 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 o spoke de projetos cruzados

Rejeite o spoke VPC entre projetos do hub do NCC.

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

Excluir o 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 de peering VPC de malha completa configurada com hub NCC
  • Filtro de exclusão de spoke do NCC
  • Suporte de spoke entre projetos
  • NAT particular entre VPCs

Próximas etapas

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