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:
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.
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.
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.
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.
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.
Em seguida, você vai verificar o caminho de dados que usa o caminho NAT particular configurado para a VPC2.
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.
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.