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

1. Введение

Обзор

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

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

Что вы построите

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

c06021c6aaa47682.png

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

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

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

  • Знание сети GCP VPC
  • Знание Cloud Router и маршрутизации BGP.
  • Проект Google Cloud
  • Проверьте свою квоту по сетям и при необходимости запросите дополнительные сети (см. скриншот ниже):

6bc606cb34bce7e8.png

Цели

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

Роли 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 для имитации локальной сети.

6c8baa1bf0676379.png

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

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

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

  • Параметр "Routing VPC" обозначает VPC, который НЕ настроен как периферийный узел NCC VPC.
  • "Workload 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. Настройка гибридного подключения

В этом разделе мы настроим VPN-туннель высокой доступности (HA) для соединения локальной и маршрутизирующей сетей 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-соединения между маршрутизирующей VPC и локальными облачными маршрутизаторами.

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, изученных маршрутизатором Routing VPC Cloud Router.

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

4. Центр сетевого подключения

Обзор

В этом разделе мы настроим NCC Hub с помощью команд gcloud. NCC Hub будет выступать в качестве управляющей плоскости, отвечающей за построение маршрутной конфигурации между каждым периферийным 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 Spoke с помощью команд gCloud. Один из них будет работать в режиме VPC, а второй — в гибридном режиме (VPN).

647c835a25a9ceb4.png

Настройте VPC(-а) рабочей нагрузки как NCC Spoke.

Настройте рабочую нагрузку 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-туннель в маршрутизирующей 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-хаба.

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

gcloud network-connectivity hubs list-spokes mesh-hub 

Проанализируйте таблицу маршрутизации по умолчанию в mesh-хабе.

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

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

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

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 или ее аффилированные лица. Все права защищены. Распространение запрещено.