Лабораторная работа: NCC VPC в качестве узла,Лаборатория: NCC VPC в качестве узла

О практической работе
schedule7 минут
subjectПоследнее обновление: 28 марта 2025 г.
account_circleАвторы: Eric Yu, David Tu

В ходе этой лабораторной работы пользователи изучат, как можно использовать Network Connectivity Center (NCC) для установления масштабируемого соединения между VPC посредством поддержки узлов VPC. Когда пользователи определяют VPC как луч VPC, это позволяет им подключать его к нескольким сетям VPC вместе через концентратор NCC. NCC с конфигурацией лучевого узла VPC снижает операционную сложность управления парными соединениями между VPC посредством пиринга VPC вместо использования модели централизованного управления соединениями.

Напомним, что Центр сетевых подключений (NCC) — это звездообразная модель плоскости управления для управления сетевыми подключениями в Google Cloud. Ресурс концентратора обеспечивает централизованную модель управления подключениями для соединения периферийных устройств.

Что ты построишь

В этой лабораторной работе вы построите логическую звездообразную топологию с концентратором NCC, которая будет реализовывать полностью объединенную структуру соединений VPC между тремя отдельными VPC.

Что вы узнаете

  • Полное соединение Mesh VPC с NCC
  • Частный NAT через VPC

Что вам понадобится

  • Знание сети GCP VPC.
  • Знание Cloud Router и маршрутизации BGP.
  • Два отдельных проекта GCP
  • Для этой Codelab требуется 5 VPC. Один из этих VPC должен находиться в отдельном проекте, а не в хабе NCC.
  • Проверьте свою «Квоту: Сети» и при необходимости запросите дополнительные сети, скриншот ниже:

6bc606cb34bce7e8.png

Цели

  • Настройка среды GCP
  • Настройка центра сетевых подключений с использованием VPC в качестве распределенного
  • Проверка пути к данным
  • Изучите возможности обслуживания NCC
  • Очистите использованные ресурсы

Прежде чем начать

Облачная консоль Google и Cloud Shell

Для взаимодействия с GCP на протяжении всей лабораторной работы мы будем использовать как Google Cloud Console, так и Cloud Shell.

Проект NCC Hub Google Cloud Console

Доступ к облачной консоли можно получить по адресу https://console.cloud.google.com .

Настройте следующие элементы в Google Cloud, чтобы упростить настройку Центра сетевых подключений:

В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.

Запустите Cloud Shell . В этой лаборатории кода используются переменные $variables для облегчения реализации конфигурации gcloud в 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

Роли IAM

NCC требуются роли IAM для доступа к определенным API. Обязательно настройте для своего пользователя роли NCC IAM по мере необходимости.

Роль/Описание

Разрешения

networkconnectivity.networkAdmin — позволяет сетевым администраторам управлять концентратором и периферийными устройствами.

networkconnectivity.hubs. сетевое подключение.спицы.

networkconnectivity.networkSpokeManager — позволяет добавлять периферийные устройства в концентраторе и управлять ими. Используется в общем VPC, где хост-проект владеет хабом, но другие администраторы в других проектах могут добавлять периферийные устройства для своих вложений в хаб.

networkconnectivity.спицы.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer — позволяет пользователям сети просматривать различные атрибуты концентратора и периферийных устройств.

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

2. Настройте сетевое окружение.

Обзор

В этом разделе мы развернем сети VPC и правила брандмауэра в одном проекте. Логическая диаграмма иллюстрирует сетевое окружение, которое будет настроено на этом этапе.

Чтобы продемонстрировать поддержку нескольких проектов, на более позднем этапе мы развернем правила VPC и брандмауэра в другом проекте.

dc4ed09dae1a0056.png

Создайте VPC и подсети

Сеть VPC содержит подсети, в которых вы установите виртуальную машину GCE для проверки пути к данным.

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

Диапазоны подсетей, поддерживаемые VPC

NCC поддерживает все допустимые диапазоны подсетей IPv4, за исключением общедоступных IP-адресов, используемых в частном порядке. На этом этапе создайте действительные диапазоны IP-адресов в VPC4, которые будут импортированы в таблицу маршрутов концентратора.

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

Создание перекрывающихся диапазонов подсетей

NCC не будет импортировать перекрывающиеся диапазоны IP-адресов в таблицу маршрутов концентратора. Пользователи обойдут это ограничение на более позднем этапе. А пока создайте два перекрывающихся диапазона IP-адресов для VPC2 и 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

Настройка правил брандмауэра VPC

Настройте правила брандмауэра на каждом VPC, чтобы разрешить

  • SSH
  • Внутренний IAP
  • Диапазон 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

Настройка виртуальной машины GCE в каждом VPC

Вам понадобится временный доступ к Интернету для установки пакетов на «vm1-vpc1-ncc».

Создайте четыре виртуальные машины, каждая виртуальная машина будет закреплена за одним из ранее созданных VPC.

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. Концентратор центра сетевых подключений

Обзор

В этом разделе мы настроим концентратор NCC с помощью команд gcloud. Концентратор NCC будет служить плоскостью управления, ответственной за построение конфигурации маршрутизации между каждым лучом VPC.

860347511de47cea.png

Включить службы API

Включите API сетевого подключения, если он еще не включен:

gcloud services enable networkconnectivity.googleapis.com

Создать центр NCC

Создайте хаб NCC с помощью команды gCloud.

gcloud network-connectivity hubs create ncc-hub

Пример вывода

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]

Опишите недавно созданный хаб NCC. Запишите имя и связанный путь.

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'

NCC Hub представил таблицу маршрутизации, которая определяет плоскость управления для создания возможности подключения к данным. Найдите имя таблицы маршрутизации NCC Hub.

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

Найдите URI таблицы маршрутов по умолчанию 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'

Перечислите содержимое таблицы маршрутизации по умолчанию NCC Hub. Примечание* Таблица маршрутов NCC Hub будет пустой до тех пор, пока не будут отключены периферийные устройства.

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

Таблица маршрутов NCC Hub должна быть пустой.

4. NCC со спицами VPC

Обзор

В этом разделе вы настроите три VPC в качестве Spoke NCC с помощью команд gCloud.

b367b1659d2df694.png

Настройка VPC в качестве распределенного узла NCC

Настройте следующие VPC в качестве Spoke NCC в следующем порядке.

  • ВПК4
  • ВПК1
  • ВПК2
  • ВПК3

Настройте VPC4 как периферию NCC и назначьте его ранее созданному концентратору NCC. Для вызовов API-интерфейса NCC требуется указать местоположение. Флаг «–global» упрощает синтаксис gcloud, позволяя пользователю не указывать полный путь URI при настройке нового лучевого узла NCC.

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

Настройте VPC1 в качестве говорящего NCC.

Администраторы могут исключить экспорт маршрутов подсети из лучевого узла VPC в таблицу маршрутов концентратора NCC. В этой части работы с кодом создайте правило исключения экспорта на основе сводного префикса, чтобы предотвратить экспорт подсети VPC1 в таблицу маршрутов NCC Hub.

Используйте эту команду gcloud, чтобы получить список всех подсетей, принадлежащих VPC1.

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

Обратите внимание на пару подсетей /25, ранее созданную в разделе настройки.

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

Настройте VPC1 как луч NCC и исключите пару подсетей /25 из импорта в таблицу маршрутизации концентратора, используя ключевое слово «export-exclude-ranges», чтобы отфильтровать сводный маршрут /24 из этого конкретного диапазона.

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 

Примечание* Пользователи могут фильтровать до 16 уникальных диапазонов IP-адресов для каждого узла NCC.

Перечислите содержимое таблицы маршрутизации по умолчанию NCC Hub. Что случилось с парой подсетей /25 в таблице маршрутизации 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

Настройка VPC2 в качестве распределенного узла NCC

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

Настройте VPC3 как периферию NCC и назначьте его ранее созданному концентратору NCC.

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

Что случилось?

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)

NCC Hub обнаружил перекрытие диапазона IP-адресов с VPC2. Напомним, что VPC2 и VPC3 были настроены с одной и той же IP-подсетью 10.3.3.0/24.

Фильтрация перекрывающихся диапазонов IP-адресов с помощью функции «Исключить экспорт»

На момент написания этой кодовой лаборатории это известная проблема, из-за которой пользователям приходится удалять и заново создавать периферийные устройства NCC, чтобы внести изменения в конфигурацию фильтра экспорта.

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

Примечание. Для удаления распределенного сегмента VPC, связанного с определенным VPC, требуется 10-минутный период восстановления, чтобы заново создать новый распределенный сегмент, ссылающийся на тот же VPC.

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

Настройте VPC3 как периферию NCC и назначьте его ранее созданному концентратору NCC. Эта попытка добавить VPC3 в качестве распределенного узла к NCC должна увенчаться успехом.

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

Выведите содержимое таблицы маршрутизации по умолчанию NCC Hub и проверьте выходные данные.

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

Перекрывающиеся диапазоны IP-адресов VPC2 и VPC3 исключаются. Таблица маршрутизации NCC Hub поддерживает все допустимые типы диапазонов IPv4, за исключением общедоступных IP-адресов, используемых в частном порядке (PUPI).

5. NCC со спицами перекрестного проекта

Обзор

На данный момент вы настроили периферийные устройства NCC, которые принадлежат тому же проекту, что и концентратор. В этом разделе вы настроите VPC в качестве Spoke NCC из отдельного проекта, отличного от NCC Hub, с помощью команд gCloud.

Это позволяет владельцам проектов, которые управляют своими собственными VPC, участвовать в подключении к сети с помощью NCC Hub.

a90b3185e30832e8.png

Кросс-проект: Google Cloud Console и Cloud Shell

Для взаимодействия с GCP на протяжении всей лабораторной работы мы будем использовать как Google Cloud Console, так и Cloud Shell.

Кросс-проектная говорящая консоль Google Cloud

Доступ к облачной консоли можно получить по адресу https://console.cloud.google.com .

Настройте следующие элементы в Google Cloud, чтобы упростить настройку Центра сетевых подключений:

В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.

Запустите Cloud Shell . В этой лаборатории кода используются переменные $variables для облегчения реализации конфигурации gcloud в 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

Роли IAM

NCC требуются роли IAM для доступа к определенным API. Обязательно настройте для своего пользователя роли NCC IAM по мере необходимости.

Как минимум, администратору перекрестного проекта должна быть предоставлена ​​роль IAM: «networkconnectivity.networkSpokeManager».

В таблице ниже для справки перечислены роли IAM, необходимые для администратора NCC Hub и Spoke.

Роль/Описание

Разрешения

networkconnectivity.networkAdmin — позволяет сетевым администраторам управлять концентратором и периферийными устройствами.

networkconnectivity.hubs. сетевое подключение.спицы.

networkconnectivity.networkSpokeManager — позволяет добавлять периферийные устройства в концентраторе и управлять ими. Используется в общем VPC, где хост-проект владеет хабом, но другие администраторы в других проектах могут добавлять периферийные устройства для своих вложений в хаб.

networkconnectivity.спицы.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer — позволяет пользователям сети просматривать различные атрибуты концентратора и периферийных устройств.

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

Создайте VPC и подсети в перекрестном проекте.

Сеть VPC содержит подсети, в которых вы установите виртуальную машину GCE для проверки пути к данным.

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

gcloud compute networks subnets create xprj-net-2 \
--network xproject-vpc \
--range 10.100.2.0/24 \
--region us-central1

URI проекта NCC Hub

Используйте эту команду gcloud, чтобы найти URI концентратора NCC. Путь URI понадобится вам для настройки межпроектного узла NCC на следующем шаге.

gcloud network-connectivity hubs describe ncc-hub

Межпроектный разговорный VPC

Войдите в другой проект, где VPC НЕ является частью проекта NCC Hub. В CloudShell используйте эту команду, чтобы настроить VPC в качестве распределенного сервера NCC.

  • HUB_URI должен быть URI хаба в другом проекте.
  • VPC_URI должен находиться в том же проекте, что и распределенный сервер.
  • Сеть VPC указывает, что VPC в этом кросс-проекте присоединится к NCC Hub в другом проекте.
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'

О каком состоянии перекрестного проекта говорил НКК? Почему?

6. Отклонить или принять предложение перекрестного проекта

Обзор

Администраторы NCC Hub должны явно принять перекрестный проект, чтобы присоединиться к концентратору. Это не позволяет владельцам проектов подключать несанкционированные периферийные устройства NCC к глобальной таблице маршрутизации NCC. После того как луч был принят или отклонен, его можно впоследствии отклонять или принимать столько раз, сколько необходимо, выполнив приведенные выше команды.

Вернитесь в проект, в котором расположен концентратор NCC, войдя в облачную оболочку.

Определите перекрестные компоненты проекта для рассмотрения

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

Принятие спицы

gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke

Необязательно: Отклонение спикера

gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke 
--details="some reason to reject"

Перечисление активных спиц на 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

Получение списка маршрутов подсети в концентраторе

Из выходных данных вы можете увидеть маршруты подсети от перекрестного узла VPC?

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.1.0/24  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

Обновление межпроектного Spoke VPC с помощью фильтра Include-Export

Войдите в проект, где VPC НЕ является частью проекта NCC Hub. В CloudShell используйте эту команду, чтобы настроить VPC в качестве распределенного сервера NCC.

  • HUB_URI должен быть URI хаба в другом проекте.
  • VPC_URI должен находиться в том же проекте, что и распределенный сервер.
  • Сеть VPC указывает, что VPC в этом кросс-проекте присоединится к NCC Hub в другом проекте.
  • Импортируйте только диапазон подсети 10.100.2.0/24 в таблицу маршрутов концентратора NCC.
  • Обратите внимание на значение «ETAG» на выходе. Это значение генерируется NCC, и вам необходимо предоставить его администратору концентратора NCC. Администратору хаба NCC необходимо будет указать это значение при принятии запроса периферийного узла перекрестного проекта на присоединение к хабу.
gcloud network-connectivity spokes linked-vpc-network update xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--include-export-ranges=10.100.2.0/24
Update request issued for: [xprj-vpc]
Waiting for operation [projects]/xproject/locations/global/operations/operation-1742936388803-6313100521cae-020ac5d2-58
52fbba] to complete...done.                                                                                                 
Updated spoke [xprj-vpc].
createTime: '2025-02-14T14:25:41.996129250Z'
etag: '4'
fieldPathsPendingUpdate:
- linked_vpc_network.include_export_ranges
group: projects/xxxxxxxx/locations/global/hubs/ncc-hub/groups/default
hub: projects/xxxxxxxx/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  includeExportRanges:
  - 10.100.2.0/24
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/vpc1-spoke
name: projects/xproject/locations/global/spokes/xprj-vpc
reasons:
- code: UPDATE_PENDING_REVIEW
  message: Spoke update is Pending Review
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 182e0f8f-91cf-481c-a081-ea6f7e40fb0a
updateTime: '2025-03-25T20:59:51.995734879Z'

Определите обновленные компоненты перекрестного проекта для рассмотрения

Войдите в проект, в котором размещен хаб NCC. В CloudShell используйте эту команду, чтобы проверить состояние межпроектного обновления VPC.

  • Какова стоимость ETAG? Это значение должно соответствовать выходным данным обновления распределенного сервера vpc.
gcloud network-connectivity hubs list-spokes ncc-hub \ 
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml

Примите обновленные изменения из перекрестного проекта.

Используйте команду, чтобы принять запрос участника перекрестного проекта на присоединение к NCC Hub.

gcloud network-connectivity hubs accept-spoke-update ncc-hub \
 --spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
 --spoke-etag={etag value}

При необходимости отклоните обновленные изменения из перекрестного проекта.

Используйте команду, чтобы отклонить запрос участника перекрестного проекта на присоединение к NCC Hub.

gcloud network-connectivity hubs reject-spoke-update ncc-hub  \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke  \
--details="not today" \
--spoke-etag={etag value} 

Убедитесь, что луч перекрестного проекта присоединился к концентратору NCC.

gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"

7. Частный NAT между VPC

Обзор

В этом разделе вы настроите частный NAT для перекрытия диапазонов подсетей между двумя VPC. Обратите внимание, что для частного NAT между VPC требуется NCC.

В предыдущем разделе VPC2 и VPC3 настроены с перекрывающимся диапазоном подсетей «10.3.3.0/24». Оба VPC настроены как луч NCC, чтобы исключить вставку перекрывающейся подсети в таблицу маршрутов концентратора NCC, что означает отсутствие пути данных уровня 3 для достижения хостов, находящихся в этой подсети.

Используйте эти команды в проекте концентратора NCC, чтобы найти перекрывающиеся диапазоны подсетей.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

Какое имя подсети в vpc2-ncc содержит перекрывающийся диапазон IP-адресов?

*Запишите и сохраните где-нибудь имя подсети. Вы настроите исходный NAT для этого диапазона.

Настройка частного NAT

Выделите диапазон маршрутизируемых подсетей для источника трафика NAT из перекрывающейся подсети VPC2. Путем настройки непересекающегося диапазона подсети с помощью флага «– Цель = PRIVATE_NAT».

gcloud beta compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT

Создайте выделенный облачный маршрутизатор для выполнения частного NAT.

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

Настройте облачный маршрутизатор для использования NAT в перекрывающемся диапазоне 10.3.3.0/24 из vpc2-ncc. В приведенном ниже примере конфигурации «overlapping-vpc3» — это имя перекрывающейся подсети. Ключевое слово «ALL» указывает, что все диапазоны IP-адресов в подсети будут использовать исходный NAT.

gcloud beta compute routers nats create ncc2-nat \
--router=private-nat-cr \
--type=PRIVATE \
--nat-custom-subnet-ip-ranges=overlapping-vpc3:ALL \
--router-region=us-central1

На предыдущих шагах был создан пул диапазонов IP-адресов NAT и конкретная подсеть, которая будет преобразована. На этом этапе создайте правило NAT «1», которое преобразует сетевые пакеты, соответствующие трафику, полученному из перекрывающегося диапазона подсетей, если сеть назначения выбирает путь из таблицы маршрутизации концентратора NCC.

gcloud beta 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

Проверьте путь к данным для частного NAT

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

Пример вывода

enableDynamicPortAllocation: true
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
name: ncc2-nat
rules:
- action:
    sourceNatActiveRanges:
    - https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/xxxxxxxx/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

Опционально,

  • Переключиться на веб-консоль
  • перейдите в «Сетевые службы > Cloud NAT > ncc2-nat ».

Убедитесь, что динамическое выделение портов включено по умолчанию.

7317d3cfb7e9468b.png

Далее вы проверите путь к данным, который использует частный путь NAT, настроенный для VPC2.

444d45616f1d0cae.png

Откройте сеанс SSH для «vm1-vpc1-ncc» и используйте приведенную ниже команду tcpdump для захвата пакетов, полученных из диапазона пула NAT «10.10.10.0/29».

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

На момент написания этой лаборатории частный NAT не поддерживал пакеты ICMP. Сеанс SSH с « pNat-vm-vpc2» и используйте команду Curl, как показано ниже, для подключения к « vm1-vpc1-ncc» через порт TCP 80.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Проверьте выходные данные tcpdump на «vm1-vpc1-ncc». Каков исходный IP-адрес, с которого был инициирован сеанс TCP с нашим веб-сервером на «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. Поддержка NCC для подсетей IPv6.

Центр сетевых подключений поддерживает обмен подсетями IPv6 и обмен динамическими маршрутами между лучами NCC VPC и гибридными лучами. В этом разделе настройте NCC для поддержки режима обмена маршрутами подсети только для IPv6 и с двойным стеком IPv4 и IPv6.

57282c3276d50671.png

Создайте новый VPC для IPv6, который присоединится к NCC-Hub в качестве периферийного VPC.

gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6 

gcloud compute networks subnets create vpc4-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1

Используйте эту команду, чтобы настроить VPC5 как луч NCC и исключить маршрут подсети IPv4 из экспорта в таблицу маршрутов концентратора. Экспортируйте сеть ULA IPv6 в таблицу маршрутов концентратора NCC.

gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--include-export-ranges=ALL_IPV6_RANGES
--exclude-export-ranges=10.5.5.0/24
--global

Включите VPC1 и VPC4 для частных уникальных локальных адресов IPv6 (ULA). GCP автоматически назначит все адреса ULA из диапазона fd20::/20.

gcloud compute networks update vpc-ncc4 \
    --enable-ula-internal-ipv6

gcloud compute networks update vpc-ncc1 \
    --enable-ula-internal-ipv6

Создайте собственный ipv6 и подсеть с двойным стеком ipv4_v6 в VPC1.

gcloud compute networks subnets create vpc1-ipv6-sn1 \
    --network=vpc-ncc1 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc1-ipv64-sn2 \
    --network=vpc-ncc1 \
    --range=10.10.10.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

Создайте собственный ipv6 и подсеть с двойным стеком ipv4_v6 в VPC4.

gcloud compute networks subnets create vpc4-ipv6-sn1 \
    --network=vpc-ncc4 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc4-ipv64-sn2 \
    --network=vpc-ncc4 \
    --range=10.40.40.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

На VPC1 создайте правило брандмауэра IPv6 VPC, чтобы разрешить трафик, исходящий из диапазона ULA IPv6.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
    --network=vpc-ncc1 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

В VPC4 создайте правило брандмауэра IPv6 VPC, чтобы разрешить трафик, поступающий из диапазона ULA IPv6.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
    --network=vpc-ncc4 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

Создайте три экземпляра GCE IPv6, чтобы проверить подключение к пути данных в следующем разделе.

gcloud compute instances create vpc4-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc4-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc1-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-dual-stack-vm \
    --zone us-east1-b \
    --network=vpc-ncc1 \
    --subnet=vpc2-ipv64-sn2 \
    --stack-type=IPV4_IPV6

Проверьте NCC Hub на наличие подсетей IPv6.

Проверьте таблицу маршрутов концентратора NCC на наличие подсетей IPv6 ULA.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

Обратите внимание, что в выводе приведенной выше команды не указаны подсети IPv6. По умолчанию подсети IPv6 из периферийных серверов VPC НЕ включаются для экспорта в таблицу маршрутов концентратора NCC.

Listed 0 items.

Используйте приведенные ниже команды gcloud, чтобы обновить лучи VPC1 и VPC4 для экспорта подсетей IPv6 в таблицу маршрутов концентратора NCC.

gcloud network-connectivity spokes linked-vpc-network update vpc1-spoke1 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

Еще раз проверьте таблицу маршрутов концентратора NCC на наличие подсетей IPv6 ULA.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

Пример вывода

IP_CIDR_RANGE                  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
fd20:c95:95d2:1:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub        default
fd20:90:6768:1000:0:0:0:0/64             us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc1  ncc-hub        default
fd20:c95:95d2:1000:0:0:0:0/64            us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub        default
fd20:90:6768:0:0:0:0:0/64                us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc1  ncc-hub        default

9. Проверьте подключение к каналу данных.

Путь передачи данных IPv4

Обратитесь к схеме и проверьте путь данных IPv4 между каждой виртуальной машиной.

27c61b09f2bf2d02.png

SSH к « vm1-vpc1-ncc» и запустите дамп TCP, чтобы отслеживать пакеты ICMP от «vm2-vpc2-ncc». Напоминаем, что эта виртуальная машина находится на VPC2.

vm1-vpc1-ncc

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

Установите сеанс SSH с « vm1-vpc2-ncc» и «пингуйте» IP-адрес « vm1-vpc1-ncc ».

vm1-vpc2-ncc

ping 10.1.1.2

Установите SSH для « vm1-vpc2-ncc» и «пингуйте» IP-адрес « vm1-vpc4-ncc ».

vm1-vpc2-ncc

ping 240.0.0.2

Путь передачи данных IPv6

Обратитесь к схеме и проверьте путь данных IP64 между каждой виртуальной машиной.

3afe67968317a16d.png

Используйте команду gcloud, чтобы получить список IP-адресов для каждого экземпляра с поддержкой IPv6.

 gcloud compute instances list --filter="INTERNAL_IP:fd20"

Пример вывода

NAME                ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP                   EXTERNAL_IP      STATUS
vpc1-ipv6-vm        us-central1-a  n1-standard-1               fd20:90:6768:0:0:1:0:0/96                      RUNNING
vpc4-ipv6-vm        us-central1-a  n1-standard-1               fd20:c95:95d2:1:0:1:0:0/96                     RUNNING
vpc1-dual-stack-vm  us-east1-b     n1-standard-1               10.10.10.3                    XXX.196.137.107  RUNNING
                                                               fd20:90:6768:1000:0:1:0:0/96

Установите сеанс SSH с « vpc1-dualstack-vm» и «пингуйте» IPv6-адрес « vpc1-ipv6-vm », чтобы проверить подключение IPv6 в глобальном VPC.

ping fd20:90:6768:1000:0:1::

Установите сеанс SSH с « vpc1-dualstack-vm» и «пингуйте» IPv6-адрес « vpc4-ipv6-vm », чтобы проверить подключение IPv6 через соединение NCC.

ping fd20:c95:95d2:1:0:1::

10. Очистка

Войдите в облачную оболочку и удалите экземпляры виртуальных машин в сетях концентратора и филиала.

Удаление частных конфигураций VPC Nat

gcloud beta compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud beta 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

Удалить спицы 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

Отклонить спицу перекрестного проекта

Отклонить перекрестный проект VPC из концентратора NCC.

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

Удалить концентратор NCC

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

Удалить правила брандмауэра

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
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc1 
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc4 

Удаление экземпляров 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
gcloud compute instances delete vpc4-ipv6-vm  --zone us-central1-a --quiet
gcloud compute instances delete vpc2-dual-stack-vm --zone us-east1-b --quiet
gcloud compute instances delete vpc2-ipv6-vm --zone us-central1-a --quiet

Удаление подсетей 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
gcloud compute networks subnets delete vpc1-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc4-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc4-ipv6-sn1 --region=us-central1 --quiet

Удаление VPC

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

11. Поздравляем!

Вы завершили лабораторную работу Центра сетевых подключений!

Что вы покрыли

  • Настроенная пиринговая сеть Full Mesh VPC с концентратором NCC
  • Фильтр исключения спиц NCC
  • Межпроектная поддержка
  • Частный NAT между VPC

Следующие шаги

©Google, LLC или ее дочерние компании. Все права защищены. Не распространяйте.