1. Введение
Обзор
В этой лабораторной работе пользователи изучат, как использовать Network Connectivity Center (NCC) для организации масштабируемого соединения между VPC благодаря поддержке VPC Spokes. Определение VPC как VPC Spoke позволяет подключать его к нескольким сетям VPC через NCC Hub. NCC с конфигурацией VPC Spokes снижает операционную сложность управления парными соединениями между VPC через пиринг VPC, используя вместо этого централизованную модель управления соединениями.
Напомним, что Network Connectivity Center (NCC) — это модель плоскости управления сетевыми подключениями типа «звезда» для управления сетевыми подключениями в Google Cloud. Ресурс концентратора обеспечивает централизованную модель управления подключениями для соединения распределительных устройств.
Что вы построите
В этой лабораторной работе вы построите логическую топологию «звезда» с концентратором NCC, которая реализует полносвязную структуру соединений VPC в трех отдельных VPC.
Чему вы научитесь
- Полносетевое VPC-подключение с NCC
- Частный NAT через VPC
Что вам понадобится
- Знание сети GCP VPC
- Знание облачного маршрутизатора и маршрутизации BGP
- Два отдельных проекта GCP
- Для этой практической работы требуется 5 VPC. Одна из этих VPC должна находиться в отдельном проекте, отличном от NCC-центра.
- Проверьте свою Квоту:Сети и запросите дополнительные сети, если необходимо, снимок экрана ниже:
Цели
- Настройка среды GCP
- Настройте Центр сетевых подключений с VPC в качестве сервера-распределителя
- Проверить путь к данным
- Изучите особенности обслуживания NCC
- Очистите использованные ресурсы
Прежде чем начать
Google Cloud Console и Cloud Shell
Для взаимодействия с GCP на протяжении всей этой лабораторной работы мы будем использовать как Google Cloud Console, так и Cloud Shell.
Проект NCC Hub Консоль Google Cloud
Доступ к Cloud Console можно получить по адресу https://console.cloud.google.com .
Настройте следующие элементы в Google Cloud, чтобы упростить настройку Центра сетевых подключений:
В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
Запустите Cloud Shell . В этой лабораторной работе используются $переменные для упрощения реализации конфигурации 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.networkSpokeManager — позволяет добавлять и управлять спелеосерверами в хабе. Используется в Shared VPC, где хост-проект владеет хабом, но другие администраторы других проектов могут добавлять спелеосерверы для своих подключений к хабу. | сетевые соединения.спицы.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer — позволяет пользователям сети просматривать различные атрибуты концентратора и лучей. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Настройте сетевое окружение
Обзор
В этом разделе мы развернём сети VPC и правила брандмауэра в одном проекте. Логическая схема иллюстрирует сетевую среду, которая будет настроена на этом этапе.
Чтобы продемонстрировать поддержку межпроектных распределенных серверов, на следующем этапе мы развернем VPC и правила брандмауэра в другом проекте.
Создайте VPC и подсети
Сеть VPC содержит подсети, в которых вы установите GCE VM для проверки пути данных.
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 VM в каждом 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. Центр сетевых подключений Hub
Обзор
В этом разделе мы настроим NCC Hub с помощью команд gcloud. NCC Hub будет выступать в качестве плоскости управления, отвечающей за построение конфигурации маршрутизации между каждым VPC-сервером.
Включить службы API
Включите API сетевого подключения, если он еще не включен:
gcloud services enable networkconnectivity.googleapis.com
Создать NCC Hub
Создайте концентратор 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 Hub по умолчанию. Примечание: Таблица маршрутизации NCC Hub будет пустой до тех пор, пока не будут установлены скаты.
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
Таблица маршрутизации NCC Hub должна быть пустой.
4. NCC со спицами VPC
Обзор
В этом разделе вы настроите три VPC в качестве NCC Spoke с помощью команд gCloud.
Настройте VPC как NCC Spoke
Настройте следующие VPC как NCC Spoke в этом порядке
- ВПК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.
Используйте эту команду 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. Что случилось с парой подсетей /25 в таблице маршрутизации концентратора 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
Настройте 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-адресов с помощью функции «Исключить экспорт»
Используйте команду gcloud для обновления сервера VPC2 с целью исключения перекрывающегося диапазона IP-адресов.
gcloud network-connectivity spokes linked-vpc-network update vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global
Используйте команду gcloud для обновления NCC-луча для VPC3, чтобы исключить перекрывающийся диапазон подсетей.
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 поддерживает все допустимые типы диапазонов IPv4, за исключением частных публичных IP-адресов (PUPI).
5. NCC с перекрестными спицами
Обзор
До сих пор вы настраивали серверы NCC Spoke, принадлежащие тому же проекту, что и концентратор. В этом разделе вы настроите VPC как сервер NCC Spoke из отдельного проекта, отличного от NCC Hub, с помощью команд gCloud.
Это позволяет владельцам проектов, управляющим собственными VPC, участвовать в сетевом подключении с помощью NCC Hub.
Кросс-проект: Google Cloud Console и Cloud Shell
Для взаимодействия с GCP на протяжении всей этой лабораторной работы мы будем использовать как Google Cloud Console, так и Cloud Shell.
Cross Project Spoke Консоль Google Cloud
Доступ к Cloud Console можно получить по адресу https://console.cloud.google.com .
Настройте следующие элементы в Google Cloud, чтобы упростить настройку Центра сетевых подключений:
В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
Запустите Cloud Shell . В этой лабораторной работе используются $переменные для упрощения реализации конфигурации 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.networkSpokeManager — позволяет добавлять и управлять спелеосерверами в хабе. Используется в Shared VPC, где хост-проект владеет хабом, но другие администраторы других проектов могут добавлять спелеосерверы для своих подключений к хабу. | сетевые соединения.спицы.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer — позволяет пользователям сети просматривать различные атрибуты концентратора и лучей. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
Создайте VPC и подсети в кросс-проекте
Сеть VPC содержит подсети, в которых вы установите GCE VM для проверки пути данных.
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 Spice? Почему?
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
Обновление Cross Project 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 Specked.
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
Какое имя подсети содержится в перекрывающемся диапазоне IP-адресов на vpc2-ncc?
*Запишите и сохраните имя подсети где-нибудь. Вам нужно будет настроить исходный 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 и динамическими маршрутами между VPC-споками NCC и гибридными спицами. В этом разделе настройте NCC для поддержки режима обмена маршрутами подсетей IPv6 и двойного стека IPv4 и IPv6.
Создайте новую VPC для IPv6, которая присоединится к NCC-Hub в качестве VPC-списка. GCP автоматически назначит все адреса ULA из диапазона fd20::/20.
gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6
gcloud compute networks subnets create vpc5-ext-ipv6 \ --network=vpc5-ncc \
--stack-type=IPV6 \
--ipv6-access-type=EXTERNAL \
--region=us-central1
gcloud compute networks subnets create vpc5-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1
Используйте эту команду, чтобы настроить VPC5 как маршрутизатор NCC и исключить маршрут подсети IPv4 из таблицы маршрутизации концентратора. Экспортируйте сеть IPv6 ULA в таблицу маршрутизации концентратора NCC.
gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--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 создайте правило брандмауэра VPC IPv6, чтобы разрешить трафик, исходящий из диапазона 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 создайте правило брандмауэра VPC IPv6, чтобы разрешить трафик, исходящий из диапазона 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 для проверки подключения к путям передачи данных в следующем разделе. Примечание: vpc1-dualstack-vm будет использоваться в качестве бастионного хоста для получения внеполосного доступа к собственным виртуальным машинам 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
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--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:1000:0:0:0:0/64 us-east1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc4 ncc-hub default
fd20:c95:95d2:1:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc4 ncc-hub default
fd20:670:3823:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
fd20:90:6768:1000:0:0:0:0/64 us-east1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc2 ncc-hub default
fd20:90:6768:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc2 ncc-hub default
Фильтрация подсетей IPv6 с помощью NCC VPC Spreader
Проверьте таблицу маршрутизации концентратора NCC на наличие внешних маршрутов подсети IPv6.
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"
Пример выходных данных: таблица маршрутизации концентратора ncc узнала внешний диапазон IPv6.
IP_CIDR_RANGE PRIORITY LOCATION STATE TYPE SITE_TO_SITE NEXT_HOP HUB ROUTE_TABLE
10.5.5.0/24 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
2600:1900:4001:ce6:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
fd20:670:3823:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
10.50.10.0/24 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 ncc-hub default
Используйте команду gcloud ниже для обновления серверов VPC5 с целью исключения двух конкретных внутренних подсетей IPv6 и одной внешней подсети IPv6 из таблицы маршрутизации концентратора NCC.
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--global \
--include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
--exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64
Используйте команду gcloud для проверки фильтров экспорта сервера VPC5.
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--global \
--include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
--exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64
Проверьте таблицу маршрутизации концентратора NCC на наличие внешних маршрутов подсети IPv6.
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"
Пример выходных данных: таблица маршрутизации концентратора ncc узнала внешний диапазон IPv6.
IP_CIDR_RANGE PRIORITY LOCATION STATE TYPE SITE_TO_SITE NEXT_HOP HUB ROUTE_TABLE
fd20:670:3823:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc5 demo-mesh-hub default
9. Проверьте подключение к каналу данных
Подключение к каналу передачи данных IPv4
Ознакомьтесь со схемой и проверьте путь данных IPv4 между каждой виртуальной машиной.
Подключитесь по 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» и выполните команду «ping» на IP-адрес « vm1-vpc1-ncc ».
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 для проверки подключения IPv6 в глобальном VPC.
ping fd20:90:6768:1000:0:1::
Установите сеанс SSH с « vpc1-dualstack-vm» и выполните команду «ping» на 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 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
gcloud compute networks subnets delete vpc5-ext-ipv6 --region=us-central1 --quiet
Удалить VPC
gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc, vpc5-ncc --quiet
11. Поздравляем!
Вы завершили лабораторную работу по Центру сетевых подключений!
Что вы охватили
- Настроенная пиринговая сеть Full Mesh VPC с NCC Hub
- Фильтр исключения спицы NCC
- Поддержка Cross Project Spoke
- Частный NAT между VPC
Следующие шаги
©Google, LLC или её аффилированные лица. Все права защищены. Не распространять.