CodeLab: динамический обмен маршрутами с NCC

1. Введение

Обзор

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

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

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

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

c06021c6aaa47682.png

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

  • Различие между VPC рабочей нагрузки и VPC маршрутизации.
  • NCC Интеграция лучевого облака VPC и гибридного спица

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

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

6bc606cb34bce7e8.png

Цели

  • Настройка среды GCP
  • Настройка центра сетевых подключений с использованием VPC в качестве распределенного
  • Настройте Центр сетевых подключений с туннелями HA-VPN в качестве гибридного лучевого узла.
  • Проверка пути к данным
  • Изучите возможности обслуживания 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 [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname
region="us-central1"
zone="us-central1-a"

Роли 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 будет использоваться для моделирования локальной сети.

6c8baa1bf0676379.png

Ключевая концепция 1

Google Cloud Global VPC обеспечивает соединение каналов передачи данных между более чем 44 регионами GCP. Cloud Router, региональная служба, динамически объявляет подсети и распространяет полученные маршруты в регионе, где настроен маршрутизатор, или по всей сети VPC. То, что определяет, будет ли облачный маршрутизатор распространять маршруты на региональном или глобальном уровне, зависит от пользователя, определяющего режим динамической маршрутизации: региональный или глобальный.

В этом разделе мы начнем с настройки каждого VPC с режимом региональной маршрутизации. Остальная часть этой кодовой лаборатории:

  • «Маршрутизация VPC» идентифицирует VPC, который НЕ настроен как луч NCC VPC.
  • «VPC рабочей нагрузки» идентифицирует VPC, настроенный как распределенный NCC.

Создайте VPC для рабочей нагрузки и подсеть.

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

vpc_spoke_network_name="workload-vpc"
vpc_spoke_subnet_name="workload-subnet"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
vpc_spoke_name="workload-vpc-spoke"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom 

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"

Создайте маршрутизирующий VPC и подсеть.

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

routing_vpc_network_name="routing-vpc"
routing_vpc_subnet_name="routing-vpc-subnet"
routing_vpc_subnet_range="10.0.2.0/24"

gcloud compute networks create "${routing_vpc_network_name}" \
--subnet-mode=custom

gcloud compute networks subnets create "${routing_vpc_subnet_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--range="${routing_vpc_subnet_range}"

Создайте локальное VPC и подсеть.

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

on_prem_network_name="on-prem-net-vpc"
on_prem_subnet_name="on-prem-subnet"
on_prem_subnet_range="10.0.3.0/24"

gcloud compute networks create "${on_prem_network_name}" \
--subnet-mode=custom

gcloud compute networks subnets create "${on_prem_subnet_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--range="${on_prem_subnet_range}"

Настройка правил брандмауэра VPC для рабочей нагрузки

workload_vpc_firewall_name="workload-protocol-fw-vpc"
workload_port_firewall_name="workload-port-firewall-vpc"

gcloud compute firewall-rules create "${workload_vpc_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${workload_port_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

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

routing_vpc_fw_name="routing-vpc-protocol-fw"
routing_vpc_port_fw_name="routing-vpc--port-fw"

gcloud compute firewall-rules create "${routing_vpc_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${routing_vpc_port_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

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

prem_protocol_fw_name="onprem-vpc-protocol-firewall"
prem_port_firewall_name="onprem-vpc-port-firewall-prem"

gcloud compute firewall-rules create "${prem_protocol_fw_name}" \
--network=${on_prem_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${prem_port_firewall_name}" \
--network=${on_prem_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

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

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

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

gcloud compute instances create vm1-vpc-workload \
--zone us-central1-a \
--subnet="${vpc_spoke_subnet_name}" \
--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-vpc-routing \
--zone us-central1-a \
--subnet="${routing_vpc_subnet_name}" \
--no-address 

gcloud compute instances create vm3-onprem \
--zone us-central1-a \
--subnet="${on_prem_subnet_name}" \
--no-address 

3. Настройка гибридного подключения

В этом разделе мы настроим туннель HA VPN для соединения локальных сетей и сетей маршрутизации VPC.

ad64a1dee6dc74c9.png

Настройте облачный маршрутизатор с BGP в маршрутизирующем VPC.

routing_vpc_router_name="routing-vpc-cr"
routing_vpc_router_asn=64525

gcloud compute routers create "${routing_vpc_router_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--asn="${routing_vpc_router_asn}"

Настройте облачный маршрутизатор с BGP в локальном VPC.

on_prem_router_name="on-prem-router"
on_prem_router_asn=64526

gcloud compute routers create "${on_prem_router_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--asn="${on_prem_router_asn}"

Настройте VPN-шлюз в маршрутизирующем VPC.

routing_vpn_gateway_name="routing-vpc-vpn-gateway"

gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"

Настройте VPN-шлюз в локальном VPC.

on_prem_gateway_name="on-prem-vpn-gateway"

gcloud compute vpn-gateways create "${on_prem_gateway_name}" \
--region="${region}" \
--network="${on_prem_network_name}"

Настройте VPN-туннель в маршрутизирующем VPC и локальном VPC.

secret_key=$(openssl rand -base64 24)
routing_vpc_tunnel_name="routing-vpc-tunnel"
on_prem_tunnel_name="on-prem-tunnel"

gcloud compute vpn-tunnels create "${routing_vpc_tunnel_name}" \
--vpn-gateway="${routing_vpn_gateway_name}" \
--peer-gcp-gateway="${on_prem_gateway_name}" \
--router="${routing_vpc_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"

gcloud compute vpn-tunnels create "${on_prem_tunnel_name}" \
--vpn-gateway="${on_prem_gateway_name}" \
--peer-gcp-gateway="${routing_vpn_gateway_name}" \
--router="${on_prem_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"

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

interface_hub_name="if-hub-to-prem"
hub_router_ip="169.254.1.1"

gcloud compute routers add-interface "${routing_vpc_router_name}" \
--interface-name="${interface_hub_name}" \
--ip-address="${hub_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${routing_vpc_tunnel_name}" \
--region="${region}"

bgp_hub_name="bgp-hub-to-prem"
prem_router_ip="169.254.1.2"
gcloud compute routers add-bgp-peer "${routing_vpc_router_name}" \
--peer-name="${bgp_hub_name}" \
--peer-ip-address="${prem_router_ip}" \
--interface="${interface_hub_name}" \
--peer-asn="${on_prem_router_asn}" \
--region="${region}"

interface_prem_name="if-prem-to-hub"
gcloud compute routers add-interface "${on_prem_router_name}" \
--interface-name="${interface_prem_name}" \
--ip-address="${prem_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${on_prem_tunnel_name}" \
--region="${region}"

bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers add-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--peer-ip-address="${hub_router_ip}" \
--interface="${interface_prem_name}" \
--peer-asn="${routing_vpc_router_asn}" \
--region="${region}"

По умолчанию подсети NCC Hub не объявляются гибридным периферийным устройствам. На следующем этапе настройте облачный маршрутизатор для объявления маршрутов подсети NCC в локальной сети.

gcloud compute routers update "${routing_vpc_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--set-advertisement-ranges="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"

Обновите конфигурацию пиринга BGP локального облачного маршрутизатора, чтобы объявлять префиксы со значением MED «111». В следующем разделе мы рассмотрим поведение NCC со значениями BGP Med.

on_prem_router_name="on-prem-router"
bgp_prem_name="bgp-prem-to-hub"

gcloud compute routers update-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--advertised-route-priority="111" \
--region="${region}"

Проверьте состояние маршрутизирующего туннеля vpc

gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'

Проверьте статус маршрутизации облачного маршрутизатора vpc

Используйте команду gcloud для получения списка полученных маршрутов BGP облачного маршрутизатора vpc.

gcloud compute routers get-status routing-vpc-cr \
--region=us-central1

4. Концентратор центра сетевых подключений

Обзор

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

715e7803d5c09569.png

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

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

gcloud services enable networkconnectivity.googleapis.com

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

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

hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"

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

Create request issued for: [mesh-hub]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719930559145-61c448a0426e4-2d18c8dd-7107edbe] to complete...done.               
Created hub [mesh-hub].

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

gcloud network-connectivity hubs describe mesh-hub
createTime: '2024-07-02T14:29:19.260054897Z'
exportPsc: false
name: projects/ncc/locations/global/hubs/mesh-hub
policyMode: PRESET
presetTopology: MESH
routeTables:
- projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uniqueId: 08f9ae88-f76f-432b-92b2-357a85fc83aa
updateTime: '2024-07-02T14:29:32.583206925Z'

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

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

Найдите URI таблицы маршрутов по умолчанию NCC.

gcloud network-connectivity hubs route-tables describe default --hub=mesh-hub
createTime: '2024-07-02T14:29:22.340190411Z'
name: projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uid: fa2af78b-d416-41aa-b442-b8ebdf84f799

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

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

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

5. NCC с гибридными и VPC-спицами

Обзор

В этом разделе вы настроите два узла NCC с помощью команд gCloud. Один луч будет лучом VPC, а второй — гибридом (VPN).

647c835a25a9ceb4.png

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

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

vpc_spoke_name="workload-vpc-spoke"
vpc_spoke_network_name="workload-vpc"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
Create request issued for: [workload-vpc-spoke]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719931097138-61c44aa15463f-90de22c7-40c10e6b] to complete...done.               
Created spoke [workload-vpc-spoke].
createTime: '2024-07-02T14:38:17.315200822Z'
group: projects/ncc/locations/global/hubs/mesh-hub/groups/default
hub: projects/ncc/locations/global/hubs/mesh-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/ncc/global/networks/workload-vpc
name: projects/ncc/locations/global/spokes/workload-vpc-spoke
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 33e50612-9b62-4ec7-be6c-962077fd47dc
updateTime: '2024-07-02T14:38:44.196850231Z'

Настройте VPN-туннель в Routing VPC в качестве гибридного узла .

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

vpn_spoke_name="hybrid-spoke"
routing_vpc_tunnel_name="routing-vpc-tunnel"
region="us-central1"
hub_name="mesh-hub"

gcloud network-connectivity spokes linked-vpn-tunnels create "${vpn_spoke_name}" \
--region="${region}" \
--hub="${hub_name}" \
--vpn-tunnels="${routing_vpc_tunnel_name}"

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

Create request issued for: [hybrid-spoke]
Waiting for operation [projects/ncc/locations/us-central1/operations/operation-1719932916561-61c45168774be-0a06ae03-88192175] to complete...done.          
Created spoke [hybrid-spoke].

Проверьте конфигурацию лучей Mesh-Hub.

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

gcloud network-connectivity hubs list-spokes mesh-hub 

Анализ таблицы маршрутизации по умолчанию Mesh-концентратора.

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

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

Префиксы, полученные от облачного маршрутизатора, со значениями BGP MED распространяются по периферийным узлам NCC при использовании динамического обмена маршрутами с гибридными лучевыми узлами NCC.

Используйте команду gcloud, чтобы просмотреть значение приоритета «111».

gcloud network-connectivity hubs route-tables routes list \
--hub=mesh-hub \
--route_table=default \
--effective-location=us-central1 \
--filter=10.0.3.0/24

6. Проверьте путь к данным.

На этом этапе мы проверим путь данных между гибридным NCC и распределенным сервером VPC. f266a4a762333161.png

Используйте выходные данные этих команд gcloud для входа в локальную виртуальную машину.

gcloud compute instances list --filter="name=vm3-onprem"

Войдите в экземпляр виртуальной машины, находящийся в локальной сети.

gcloud compute ssh vm3-onprem --zone=us-central1-a

На терминале vm3-onprem используйте команду Curl, чтобы установить веб-сеанс с виртуальной машиной, размещенной в workload-vpc.

curl 10.0.1.2 -v
*   Trying 10.0.1.2:80...
* Connected to 10.0.1.2 (10.0.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.1.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 03 Jul 2024 15:41:34 GMT
< Server: Apache/2.4.59 (Debian)
< Last-Modified: Mon, 01 Jul 2024 20:36:16 GMT
< ETag: "1e-61c358c8272ba"
< Accept-Ranges: bytes
< Content-Length: 30
< Content-Type: text/html
< 

<h3>Web Server: www-vm1</h3>
* Connection #0 to host 10.0.1.2 left intact

7. Очистка

Войдите в облачную оболочку и удалите ресурсы GCP.

Удалить спицы NCC

gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet

gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1

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

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

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

gcloud compute firewall-rules delete onprem-vpc-port-firewall-prem onprem-vpc-protocol-firewall routing-vpc--port-fw routing-vpc-protocol-fw workload-port-firewall-vpc workload-protocol-fw-vpc --quiet

Удалить туннель HA-VPN

gcloud compute vpn-tunnels delete on-prem-tunnel \
--region=us-central1 \
--quiet 

gcloud compute vpn-tunnels delete routing-vpc-tunnel \
--region=us-central1 \
--quiet 

Удалить VPN-шлюз

gcloud compute vpn-gateways delete on-prem-vpn-gateway \
--region=us-central1 --quiet

gcloud compute vpn-gateways delete routing-vpc-vpn-gateway \
--region us-central1 --quiet

Удалить облачный маршрутизатор

gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet

gcloud compute routers delete on-prem-router --region us-central1 --quiet

Удаление экземпляров GCE

gcloud compute instances delete vm1-vpc-workload \
--zone=us-central1-a \
--quiet


gcloud compute instances delete vm2-vpc-routing \
--zone=us-central1-a \
--quiet

gcloud compute instances delete vm3-onprem \
--zone=us-central1-a \
--quiet

Удаление подсетей VPC

gcloud compute networks subnets delete workload-subnet --region us-central1 --quiet

gcloud compute networks subnets delete on-prem-subnet --region us-central1 --quiet

gcloud compute networks subnets delete routing-vpc-subnet --region us-central1 --quiet

Удаление VPC

gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc 
--quiet 

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

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

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

  • Динамический обмен маршрутами с центром сетевых подключений

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

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