1. Введение
Обзор
В этой лабораторной работе пользователи изучат, как использовать Центр сетевого подключения (NCC) для масштабируемого установления межсетевых соединений между VPC за счет поддержки VPC Spokes. Когда пользователи определяют VPC как VPC Spoke, это позволяет им подключать его к нескольким сетям VPC одновременно через NCC Hub. NCC с конфигурацией VPC Spoke снижает сложность управления парными межсетевыми соединениями между VPC посредством пиринга VPC, используя вместо этого централизованную модель управления соединениями.
Напомним, что Центр сетевого подключения (NCC) — это модель управления сетевым подключением по принципу «звезда» в Google Cloud. Ресурс «хаб» предоставляет централизованную модель управления подключением для соединения периферийных узлов.
Что вы построите
В этом практическом занятии вы построите логическую топологию "звезда" с использованием центрального узла NCC, которая обеспечит полностью связанную сеть VPC-подключений между тремя различными VPC.
Что вы узнаете
- Полномасштабное подключение VPC с использованием NCC
- Частный NAT через VPC
Что вам понадобится
- Знание сети GCP VPC
- Знание Cloud Router и маршрутизации BGP.
- Два отдельных проекта GCP
- Для выполнения этого задания требуется 5 виртуальных частных сетей (VPC). Одна из этих VPC должна находиться в отдельном проекте, отличном от хаба NCC.
- Проверьте свою квоту по сетям и при необходимости запросите дополнительные сети (см. скриншот ниже):

Цели
- Настройка среды GCP
- Настройте Центр сетевого подключения, используя VPC в качестве периферийной сети.
- Проверить путь к данным
- Изучите характеристики ремонтопригодности NCC.
- Очистка использованных ресурсов
Прежде чем начать
Консоль Google Cloud и Cloud Shell
Для взаимодействия с GCP в ходе этой лабораторной работы мы будем использовать как консоль Google Cloud, так и Cloud Shell.
Консоль Google Cloud для проекта NCC Hub
Доступ к консоли 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
Для доступа к определенным API в NCC требуются роли IAM. Убедитесь, что вы настроили пользователя с необходимыми ролями IAM в NCC.
Роль/Описание | Разрешения |
networkconnectivity.networkAdmin — позволяет сетевым администраторам управлять центральной и периферийной сетями. | networkconnectivity.hubs. networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager — позволяет добавлять и управлять периферийными узлами в хабе. Используется в общей виртуальной частной сети (Shared VPC), где хаб принадлежит хост-проекту, но другие администраторы в других проектах могут добавлять периферийные узлы для своих подключений к хабу. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer — позволяет пользователям сети просматривать различные атрибуты центрального и периферийного узлов. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Настройка сетевой среды
Обзор
В этом разделе мы развернем сети VPC и правила брандмауэра в рамках одного проекта. Логическая схема иллюстрирует сетевую среду, которая будет настроена на этом этапе.
Чтобы продемонстрировать поддержку межпроектной архитектуры, на следующем этапе мы развернем VPC и правила брандмауэра в другом проекте.

Создайте 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 Hub с помощью команд gcloud. NCC Hub будет выступать в качестве управляющей плоскости, отвечающей за построение маршрутной конфигурации между каждым периферийным VPC.

Включить 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 Hub. Укажите его название и соответствующий путь.
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. Примечание: таблица маршрутизации центрального узла NCC будет пустой до тех пор, пока не будут добавлены периферийные узлы.
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
Таблица маршрутизации в NCC Hub должна быть пустой.
4. NCC с VPC Spokes
Обзор
В этом разделе вы настроите три VPC в качестве NCC Spoke с помощью команд gCloud.

Настройте VPC(ы) как NCC Spoke.
Настройте следующие VPC в качестве NCC Spoke в указанном порядке.
- VPC4
- ВПК1
- VPC2
- VPC3
Настройте 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.
Используйте эту команду 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 и изучите полученные данные.
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-серверы, принадлежащие к тому же проекту, что и Hub. В этом разделе вы настроите VPC в качестве NCC-сервера из отдельного проекта, отличного от NCC Hub, используя команды gCloud.
Это позволяет владельцам проектов, управляющим собственными VPC, участвовать в сетевом подключении к NCC Hub.

Межпроектная работа: Google Cloud Console и Cloud Shell
Для взаимодействия с GCP в ходе этой лабораторной работы мы будем использовать как консоль Google Cloud, так и Cloud Shell.
Cross Project Spoke Google Cloud Console
Доступ к консоли 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 [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
Для доступа к определенным API в NCC требуются роли IAM. Убедитесь, что вы настроили пользователя с необходимыми ролями IAM в NCC.
Как минимум, администратору межпроектной сети необходимо предоставить роль IAM: "networkconnectivity.networkSpokeManager".
В таблице ниже для справки указана роль IAM, необходимая для администрирования NCC Hub and Spoke.
Роль/Описание | Разрешения |
networkconnectivity.networkAdmin — позволяет сетевым администраторам управлять центральной и периферийной сетями. | networkconnectivity.hubs. networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager — позволяет добавлять и управлять периферийными узлами в хабе. Используется в общей виртуальной частной сети (Shared VPC), где хаб принадлежит хост-проекту, но другие администраторы в других проектах могут добавлять периферийные узлы для своих подключений к хабу. | networkconnectivity.spokes.** |
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 Hub. Путь URI понадобится вам для настройки межпроектного соединения NCC на следующем шаге.
gcloud network-connectivity hubs describe ncc-hub
Cross Project Spoke 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'
Каково состояние проекта по взаимодействию между NCC и другими организациями? Почему?
6. Отклонить или принять предложение по межпроектному взаимодействию.
Обзор
Администраторы NCC Hub должны явно разрешить подключение к хабу межпроектного ответвления. Это предотвращает присоединение владельцев проектов к глобальной таблице маршрутизации 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
Обновите VPC Cross Project Spoke с помощью фильтра include-Export.
Войдите в проект, в котором VPC НЕ является частью проекта NCC Hub. В Cloudshell используйте эту команду для настройки VPC в качестве периферийного узла NCC.
- HUB_URI должен быть URI хаба в другом проекте.
- VPC_URI должен находиться в том же проекте, что и периферийный узел.
- В настройках VPC-сети указано, что VPC в этом межпроектном проекте будет подключаться к NCC Hub в другом проекте.
- В таблицу маршрутизации NCC Hub импортируйте только диапазон подсетей 10.100.2.0/24.
- Обратите внимание на значение "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 Spoke.
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 Hub, чтобы найти перекрывающиеся диапазоны подсетей.
gcloud compute networks subnets list --network vpc2-ncc
gcloud compute networks subnets list --network vpc3-ncc
Какое имя подсети в vpc2-ncc содержит перекрывающийся диапазон IP-адресов?
*Запишите и сохраните имя подсети где-нибудь. Вам потребуется настроить NAT для этого диапазона.
Настройка частного NAT
Выделите маршрутизируемый диапазон подсетей для передачи NAT-трафика из перекрывающихся подсетей VPC2. Для этого настройте неперекрывающийся диапазон подсетей с помощью флага "–purpose=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
При желании,
- Перейдите в веб-консоль.
- Перейдите в раздел "Сетевые службы > Облачный NAT > ncc2-nat "
Убедитесь, что динамическое распределение портов включено по умолчанию.

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

Откройте 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.

Создайте новую 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, разрешающее трафик из диапазона IPv6 ULA.
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, разрешающее трафик из диапазона IPv6 ULA.
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 для подсетей ULA IPv6.
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 между каждой виртуальной машиной.

Подключитесь по SSH к " vm1-vpc1-ncc" и запустите TCP dump для трассировки ICMP-пакетов из "vm2-vpc2-ncc". Напоминаем, что эта виртуальная машина находится в VPC2.
vm1-vpc1-ncc
sudo tcpdump -i any icmp -v -e -n
Установите SSH-соединение с виртуальным модулем " vm1-vpc2-ncc" и выполните команду ping для проверки IP-адреса этого модуля .
vm1-vpc2-ncc
ping 10.1.1.2
Установите SSH-соединение с виртуальным модулем " vm1-vpc2-ncc" и выполните команду ping для IP-адреса виртуального модуля " vm1-vpc4-ncc ".
vm1-vpc2-ncc
ping 240.0.0.2
Путь передачи данных IPv6 Подключение
Обратитесь к схеме и проверьте путь передачи данных по протоколу IP64 между каждой виртуальной машиной.

Используйте команду 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" и выполните команду ping для проверки IPv6-подключения виртуального компьютера " vpc1-ipv6-vm " в глобальной виртуальной частной сети (VPC).
ping fd20:90:6768:1000:0:1::
Установите SSH-сессию с виртуальным модулем " vpc1-dualstack-vm" и выполните команду ping для проверки IPv6-подключения виртуального модуля " vpc4-ipv6-vm " через соединение NCC.
ping fd20:c95:95d2:1:0:1::
10. Уборка
Войдите в облачную оболочку и удалите экземпляры виртуальных машин в сетях центрального узла и филиалов.
Удалите конфигурации NAT частной VPC.
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 Hub
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. Поздравляем!
Вы завершили лабораторную работу в Центре сетевого подключения!
Что вы осветили
- Настроена полномасштабная сеть пиринга VPC с использованием NCC Hub.
- Фильтр исключения NCC Spoke
- Поддержка межпроектных спицовок
- Частный NAT между VPC
Следующие шаги
©Google, LLC или ее аффилированные лица. Все права защищены. Распространение запрещено.