实践:NCC 站点到站点与 flexiWAN SD-WAN 设备

1. 简介

概览

在本实验中,您将探索 Network Connectivity Center 的一些功能。

Network Connectivity Center (NCC) 是一个中心辐射型控制平面模型,用于在 Google Cloud 中进行网络连接管理。Hub 资源提供集中式连接管理模型来连接 spoke。NCC 目前支持以下网络资源作为 spoke:

  • VLAN 连接
  • 路由器设备
  • 高可用性 VPN

Codelab 需要使用 flexiWAN SaaS SD-WAN 解决方案,来简化 WAN 部署和管理。flexWAN 是一种开源 SD-WAN 和 SASE 解决方案。

构建内容

在此 Codelab 中,您将构建一个中心辐射型 SD-WAN 拓扑来模拟远程分支站点,这些站点将遍历 Google 的骨干网,以实现站点到云和站点到站点通信。

  1. 您将部署一对为“flexiWAN”配置的 GCE 虚拟机中心 VPC 中的 SD-WAN 代理,表示流向 GCP 的入站和出站流量的头端。
  2. 部署两个远程 flexiWAN SD-WAN 路由器,代表两个不同的分支站点 VPC
  3. 对于数据路径测试,您将配置三个 GCE 虚拟机,以便在 GCP 上托管的本地客户端和服务器上进行模拟

84e31c667a487f7a

学习内容

  • 使用 NCC 通过开源软件定义的 WAN 解决方案连接远程分支办公室
  • 拥有使用开源软件定义的 WAN 解决方案的实践经验

所需条件

  • 了解 GCP VPC 网络
  • 了解 Cloud Router 和 BGP 路由
  • Codelab 需要 6 个 VPC。检查您的配额:网络并根据需要请求添加额外网络,屏幕截图如下:

6bc606cb34bce7e8.png

2. 目标

  • 设置 GCP 环境
  • 在 GCP 中部署 flexiWAN Edge 实例
  • 建立 NCC Hub 和 flexiWAN Edge NVA 作为 spoke
  • 使用 flexiManage 配置和管理 flexiWAN 实例
  • 配置 vpc-app-svcs 和 flexiWAN NVA 之间的 BGP 路由交换
  • 创建模拟客户远程分支或数据中心的远程站点
  • 在远程站点和 NVA 之间建立 IPSEC 隧道
  • 验证设备是否已成功部署
  • 验证网站到云端的数据传输
  • 验证网站到网站的数据传输
  • 清理已使用的资源

本教程要求创建一个免费的 flexiManage 账号 ,以进行身份验证、初始配置和管理 flexiEdge 实例。

准备工作

使用 Google Cloud 控制台和 Cloud Shell

为了与 GCP 交互,我们将在整个实验中同时使用 Google Cloud 控制台和 Cloud Shell。

Google Cloud Console

您可以访问 https://console.cloud.google.com 访问 Cloud 控制台。

在 Google Cloud 中设置以下各项,以便更轻松地配置 Network Connectivity Center:

在 Google Cloud Console 的“项目选择器”页面上,选择或创建一个 Google Cloud 项目。

启动 Cloud Shell。此 Codelab 利用 $variables 辅助在 Cloud Shell 中实现 gcloud 配置。

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname

IAM 角色

NCC 需要 IAM 角色才能访问特定 API。请务必根据需要为您的用户配置 NCC IAM 角色。

角色名称

说明

权限

networkconnectivity.networkAdmin

允许网络管理员管理 hub 和 spoke。

networkconnectivity.hubs.networkconnectivity.spokes

networkconnectivity.networkSpokeManager

允许在 hub 中添加和管理 spoke。将在宿主项目拥有 Hub 的共享 VPC 中使用,但其他项目中的其他管理员可以为其连接向 Hub 添加 spoke。

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer

允许网络用户查看 hub 和 spoke 的不同属性。

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

3. 设置网络实验环境

概览

在本部分,我们将部署 VPC 网络和防火墙规则。

377d97bf3066f259

模拟本地分支站点网络

此 VPC 网络包含本地虚拟机实例的子网。

创建本地网络和子网:

gcloud compute networks create site1-vpc \
--subnet-mode custom

gcloud compute networks create site2-vpc \
--subnet-mode custom

gcloud compute networks create s1-inside-vpc \
--subnet-mode custom

gcloud compute networks create s2-inside-vpc \
--subnet-mode custom

gcloud compute networks subnets create site1-subnet \
--network site1-vpc \
--range 10.10.0.0/24 \
--region us-central1

gcloud compute networks subnets create site2-subnet \
--network site2-vpc \
--range 10.20.0.0/24 \
--region us-east4

gcloud compute networks subnets create s1-inside-subnet \
--network s1-inside-vpc \
--range 10.10.1.0/24 \
--region us-central1

gcloud compute networks subnets create s2-inside-subnet \
--network s2-inside-vpc \
--range 10.20.1.0/24 \
--region us-east4

创建 site1-vpc 防火墙规则以允许:

  • SSH、内部、IAP
  • ESP、UDP/500、UDP/4500
  • 10.0.0.0/8 范围
  • 范围:192.168.0.0/16
gcloud compute firewall-rules create site1-ssh \--network site1-vpc \
--allow tcp:22

gcloud compute firewall-rules create site1-internal \
--network site1-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create site1-cloud \
--network site1-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create site1-vpn \
--network site1-vpc \
--allow esp,udp:500,udp:4500 \
--target-tags router

gcloud compute firewall-rules create site1-iap \
--network site1-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

创建 site2-vpc 防火墙规则以允许:

  • SSH、内部、IAP
  • 10.0.0.0/8 范围
  • 范围:192.168.0.0/16
gcloud compute firewall-rules create site2-ssh \
--network site2-vpc \
--allow tcp:22

gcloud compute firewall-rules create site2-internal \
--network site2-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create site2-cloud \
--network site1-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create site2-vpn \
--network site1-vpc \
--allow esp,udp:500,udp:4500 \
--target-tags router

gcloud compute firewall-rules create site2-iap \
--network site2-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

创建 s1-inside-vpc 防火墙规则以允许:

  • SSH、内部、IAP
  • 10.0.0.0/8 范围
  • 范围:192.168.0.0/16
gcloud compute firewall-rules create s1-inside-ssh \
--network s1-inside-vpc \
--allow tcp:22

gcloud compute firewall-rules create s1-inside-internal \
--network s1-inside-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create s1-inside-cloud \
--network s1-inside-vpc  \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create s1-inside-iap \
--network site2-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

创建 s2-inside-vpc 防火墙规则以允许:

  • SSH、内部、IAP
  • 10.0.0.0/8 范围
  • 范围:192.168.0.0/16
gcloud compute firewall-rules create s2-inside-ssh \
--network s2-inside-vpc \
--allow tcp:22

gcloud compute firewall-rules create s2-inside-internal \
--network s2-inside-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create s2-inside-cloud \
--network s2-inside-vpc  \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create s2-inside-iap \
--network site2-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

出于测试目的,请创建 s1-inside-vms2-inside-vm 实例

gcloud compute instances create s1-vm \
--zone=us-central1-a \
--machine-type=e2-micro \
--network-interface subnet=s1-inside-subnet,private-network-ip=10.10.1.3,no-address

gcloud compute instances create s2-vm \
--zone=us-east4-b \
--machine-type=e2-micro \
--network-interface subnet=s2-inside-subnet,private-network-ip=10.20.1.3,no-address

模拟 GCP Cloud 网络环境

如需启用通过 hub-vpc 网络和 spoke 的跨区域站点到站点流量,您必须在 hub-vpc 网络中启用全局路由。如需了解详情,请参阅 NCC 路由交换

  1. 创建 hub-vpc 网络和子网:
gcloud compute networks create hub-vpc \
--subnet-mode custom \
--bgp-routing-mode=global

gcloud compute networks subnets create hub-subnet1 \
--network hub-vpc \
--range 10.1.0.0/24 \
--region us-central1

gcloud compute networks subnets create hub-subnet2 \
--network hub-vpc \
--range 10.2.0.0/24 \
--region us-east4
  1. 创建 workload-vpc 网络和子网:
gcloud compute networks create workload-vpc \
--subnet-mode custom \
--bgp-routing-mode=global

gcloud compute networks subnets create workload-subnet1 \
--network workload-vpc \
--range 192.168.235.0/24 \
--region us-central1

gcloud compute networks subnets create workload-subnet2 \
--network workload-vpc \
--range 192.168.236.0/24 \
--region us-east4
  1. 创建 Hub-VPC 防火墙规则以允许:
  • SSH
  • ESP、UDP/500、UDP/4500
  • 内部 10.0.0.0/8 范围(涵盖从云端路由器到路由器设备的 BGP 会话所需的 TCP 端口 179)
gcloud compute firewall-rules create hub-ssh \
--network hub-vpc \
--allow tcp:22

gcloud compute firewall-rules create hub-vpn \
--network hub-vpc \
--allow esp,udp:500,udp:4500 \
--target-tags router

gcloud compute firewall-rules create hub-internal \
--network hub-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create hub-iap \
--network hub-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
  1. 创建 Workload-VPC 防火墙规则以允许:
  • SSH
  • 内部 192.168.0.0/16 范围(涵盖从云端路由器到路由器设备的 BGP 会话所需的 TCP 端口 179)
gcloud compute firewall-rules create workload-ssh \
--network workload-vpc \
--allow tcp:22

gcloud compute firewall-rules create workload-internal \
--network workload-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute --project=$projectname firewall-rules create allow-from-site-1-2 --direction=INGRESS --priority=1000 --network=workload-vpc --action=ALLOW --rules=all --source-ranges=10.10.1.0/24,10.20.1.0/24

gcloud compute firewall-rules create workload-onprem \
--network hub-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create workload-iap \
--network workload-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
  1. 在 Workload-VPC 中启用 Cloud NAT,以允许 Workload1-vm 通过创建 Cloud Router 和 NAT 网关下载软件包
gcloud compute routers create cloud-router-usc-central-1-nat \
    --network workload-vpc \
    --region us-central1
gcloud compute routers nats create cloudnat-us-central1 \
    --router=cloud-router-usc-central-1-nat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --region us-central1
  1. 创建workload1-vm in "us-central1-a" in workload-VPC,您将使用此主机验证网站到云的连接
gcloud compute instances create workload1-vm \
    --project=$projectname \
    --machine-type=e2-micro \
    --image-family debian-10 \
    --image-project debian-cloud \
    --zone us-central1-a \
    --private-network-ip 192.168.235.3 \
        --no-address \
    --subnet=workload-subnet1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to Workload VM1 !!' | tee /var/www/html/index.html
      EOF"

4. 为 SD-WAN 设置本地设备

ec754b89e375f3cc.png

为 SDWAN (Appliances) 创建本地虚拟机

在下面的部分中,我们将创建 site1-nva 和 site2-nva 路由器设备,作为预置型路由器。

创建实例

创建名为 site1-nvasite1-router 设备

gcloud compute instances create site1-nva \
--zone=us-central1-a \
--machine-type=e2-medium \
--network-interface subnet=site1-subnet \
--network-interface subnet=s1-inside-subnet,no-address \
--create-disk=auto-delete=yes,boot=yes,device-name=flex-gcp-nva-1,image=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20220901,mode=rw,size=20,type=projects/$projectname/zones/us-central1-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any \
--can-ip-forward

创建名为 site2-nvasite2-router 设备

gcloud compute instances create site2-nva \
--zone=us-east4-b \
--machine-type=e2-medium \
--network-interface subnet=site2-subnet \
--network-interface subnet=s2-inside-subnet,no-address \
--create-disk=auto-delete=yes,boot=yes,device-name=flex-gcp-nva-1,image=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20220901,mode=rw,size=20,type=projects/$projectname/zones/us-east4-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any \
--can-ip-forward 

5. 在 site1-nva 上安装 flexiWAN

打开与 site1-nva 的 SSH 连接,如果超时,请重试

gcloud compute ssh site1-nva --zone=us-central1-a

在 site1-nva 上安装 flexiWAN

sudo su 

sudo curl -sL https://deb.flexiwan.com/setup | sudo bash -
apt install flexiwan-router -y

准备虚拟机以进行 flexiWAN 控制平面注册。

flexiWAN 安装完成后,运行 fwsystem_checker 命令以检查您的系统配置。此命令用于检查系统要求,并有助于修复系统中的配置错误。

  • 选择选项 2 以进行快速、静默配置
  • 0 退出。
  • 请勿关闭 Cloud Shell 窗口。
root@site-1-nva-1:/home/user# fwsystem_checker
 
<output snipped>

        [0] - quit and use fixed parameters
         1  - check system configuration
         2  - configure system silently
         3  - configure system interactively
         4  - restore system checker settings to default
        ------------------------------------------------
Choose: 2

<output snipped>

        [0] - quit and use fixed parameters
         1  - check system configuration
         2  - configure system silently
         3  - configure system interactively
         4  - restore system checker settings to default
        ------------------------------------------------
Choose: 0
Please wait..
Done.
=== system checker ended ====

让会话保持打开状态,以便执行以下步骤

6. 向 SD-WAN 控制器注册 site1-nva

要通过 flexiManage Console 管理 flexiWAN NVA 的配置,您需要执行以下步骤。在继续操作之前,请确保已设置 flexiWAN 组织。

登录 flexiManage 账号,使用安全令牌对新部署的 flexiWAN NVA 进行身份验证。所有路由器设备可重复使用同一令牌。

依次选择资产清单 → 令牌,创建令牌并选择副本

12c173b589d220ee

返回 Cloud Shell (site1-nva),通过执行以下操作,将令牌粘贴到 /etc/flexiwan/agent/token.txt 目录中

nano /etc/flexiwan/agent/token.txt
#Paste the generated token obtain from flexiManage
#Exit session with CTRL+X and Select Y to save then enter

22e1cf5bad3d3086

在 flexiManage 控制台上激活站点路由器

登录 flexiManage 控制台,在控制器上激活 site1-nva

在左侧面板中,依次点击选择广告资源 → 设备,然后点击未知设备

f7719c28f78e907a.png

输入 site1-nva 的主机名,然后将拨盘向右滑动以批准设备。

9a6c6c45e1cad732

选择“接口”标签页

找到“已分配”列,然后点击然后将设置更改为“

a8772059968af13e.png

选择“防火墙”标签页,然后点击“+”号以添加入站防火墙规则

选择 WAN 接口以应用 SSH 规则,如下所述

df03b8a6c817ccd2.png

点击“更新设备

96b9feb77b8517cd.png

从 flexiWAN 控制器启动 site1-nva。返回广告资源 → 设备 → site1-nva,选择启动设备

708215cf91ffc09

状态 - 正在同步

918d72eeacc386fa.png

状态 - 已同步

5135096dbff49819

您可以在问题排查 → 通知下查看警告指示器。查看完毕后,全选并标记为已读

9e79db3572f91925

7. 在 site2-nva 上安装 flexiWAN

打开新标签页并创建一个 Cloud Shell 会话,更新 $variables 以帮助实现 gcloud 配置

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname

打开与 site2-nva 的 SSH 连接,如果超时,请重试

gcloud compute ssh site2-nva --zone=us-east4-b

在 site2-nva 上安装 flexiWAN

sudo su 

sudo curl -sL https://deb.flexiwan.com/setup | sudo bash -
apt install flexiwan-router -y

准备虚拟机以进行 flexiWAN 控制平面注册。

flexiWAN 安装完成后,运行 fwsystem_checker 命令以检查您的系统配置。此命令用于检查系统要求,并有助于修复系统中的配置错误。

  • 选择选项 2 以进行快速、静默配置
  • 0 退出。
  • 请勿关闭 Cloud Shell 窗口。
root@site2-nva:/home/user# fwsystem_checker
 
<output snipped>

        [0] - quit and use fixed parameters
         1  - check system configuration
         2  - configure system silently
         3  - configure system interactively
         4  - restore system checker settings to default
        ------------------------------------------------
Choose: 2

<output snipped>

        [0] - quit and use fixed parameters
         1  - check system configuration
         2  - configure system silently
         3  - configure system interactively
         4  - restore system checker settings to default
        ------------------------------------------------
Choose: 0
Please wait..
Done.
=== system checker ended ====

8. 使用 SD-WAN 控制器注册 site2-nva

要通过 flexiManage Console 管理 flexiWAN NVA 的配置,您需要执行以下步骤。在继续操作之前,请确保已设置 flexiWAN 组织。

登录 flexiManage 账号,使用安全令牌对新部署的 flexiWAN NVA 进行身份验证。所有路由器设备可重复使用同一令牌。

依次选择“Inventory”(广告资源)→“Tokens”(令牌),然后创建令牌并选择复制

12c173b589d220ee

返回 Cloud Shell (site2-nva),通过执行以下操作,将令牌粘贴到 /etc/flexiwan/agent/token.txt 目录中

nano /etc/flexiwan/agent/token.txt
#Paste the generated token obtain from flexiManage
#Exit session with CTRL+X and Select Y to save then enter

22e1cf5bad3d3086

通过 flexiManage 控制台激活站点路由器

登录 flexiManage 控制台,在控制器上激活 site2-nva

在左侧面板中,依次点击选择广告资源 → 设备,然后点击未知设备

c98696cf67043ec2.png

输入 site2-nva 的主机名,然后将拨盘向右滑动以批准设备。

de418da3f581e0bd.png

选择“接口”标签页

找到“已分配”列,然后点击然后将设置更改为“

eee6a98dba7b2a04.png

选择防火墙标签页,然后点击“+”号以添加入站防火墙规则。选择 WAN 接口以应用 SSH 规则,如下所述

df03b8a6c817ccd2.png

点击“更新设备

96b9feb77b8517cd.png

从 flexiWAN 控制器启动 site2-nva。返回广告资源 → 设备 → site2-nva,选择启动设备

c80291bb430dce7d.png

Satus - 正在同步

da9c08ebfbd1265e.png

状态 - 已同步

5135096dbff49819

您可以在问题排查 → 通知下查看警告指示器。查看完毕后,全选并标记为已读

2c21322b87d848b

9. 设置 Hub SDWAN 设备

在下一部分中,您将按照之前通过站点路由执行的方式,向 flexiWAN 控制器创建和注册集线器路由器(hub-r1 和 hub-r2)。

打开新标签页并创建一个 Cloud Shell 会话,更新 $variables 以帮助实现 gcloud 配置

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname

创建中心 NVA 实例

创建 hub-r1 设备:

gcloud compute instances create hub-r1 \
--zone=us-central1-a \
--machine-type=e2-medium \
--network-interface subnet=hub-subnet1 \
--network-interface subnet=workload-subnet1,no-address \
--can-ip-forward \
--create-disk=auto-delete=yes,boot=yes,device-name=flex-gcp-nva-1,image=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20220901,mode=rw,size=20,type=projects/$projectname/zones/us-central1-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any

创建 hub-r2 设备:

gcloud compute instances create hub-r2 \
--zone=us-east4-b \
--machine-type=e2-medium \
--network-interface subnet=hub-subnet2 \
--network-interface subnet=workload-subnet2,no-address \
--can-ip-forward \
--create-disk=auto-delete=yes,boot=yes,device-name=flex-gcp-nva-1,image=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20220901,mode=rw,size=20,type=projects/$projectname/zones/us-east4-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any

10. 在 Hub 实例上为 hub-r1 安装 flexiWAN

打开与 hub-r1 的 SSH 连接

gcloud compute ssh hub-r1 --zone=us-central1-a

在两个 hub-r1 上安装 flexiWAN 代理

sudo su
sudo curl -sL https://deb.flexiwan.com/setup | sudo bash -
apt install flexiwan-router -y

准备 hub-r1 虚拟机以进行 flexiWAN 注册。

flexiWAN 安装完成后,运行 fwsystem_checker 命令以检查您的系统配置。此命令用于检查系统要求,并有助于修复系统中的配置错误。

root@hub-r1:/home/user# fwsystem_checker
  • 选择选项 2 以进行快速、静默配置
  • 0 退出。
  • 请勿关闭 Cloud Shell 窗口。

11. 在 flexiManage 控制器上注册 hub-r1 虚拟机

登录 flexiManage 账号,使用安全令牌对新部署的 flexiWAN NVA 进行身份验证。

  • 依次选择资产清单 → 令牌,然后复制令牌

返回 Cloud Shell (hub-r1),通过执行以下操作,将令牌粘贴到 /etc/flexiwan/agent/token.txt 目录中

nano /etc/flexiwan/agent/token.txt
#Paste the generated token obtain from flexiManage
#Exit session with CTRL+X and Select Y to save then enter

12. 在 Hub 实例上为 hub-r2 安装 flexiWAN

打开与 hub-r2 的 SSH 连接

gcloud compute ssh hub-r2 --zone=us-east4-b

在两个 hub-r2 上安装 flexiWAN 代理

sudo su
sudo curl -sL https://deb.flexiwan.com/setup | sudo bash -
apt install flexiwan-router -y

准备 hub-r2 虚拟机以进行 flexiWAN 注册。

flexiWAN 安装完成后,运行 fwsystem_checker 命令以检查您的系统配置。此命令用于检查系统要求,并有助于修复系统中的配置错误。

root@hub-r2:/home/user# fwsystem_checker
  • 选择选项 2 以进行快速、静默配置
  • 0 退出。
  • 请勿关闭 Cloud Shell 窗口。

13. 在 flexiManage 控制器上注册 hub-r2 虚拟机

登录 flexiManage 账号,使用安全令牌对新部署的 flexiWAN NVA 进行身份验证。

  • 依次选择资产清单 → 令牌,然后复制令牌

返回 Cloud Shell (hub-r2),通过执行以下操作,将令牌粘贴到 /etc/flexiwan/agent/token.txt 目录中

nano /etc/flexiwan/agent/token.txt
#Paste the generated token obtain from flexiManage
#Exit session with CTRL+X and Select Y to save then enter

在 flexiManage 控制台上激活 Hub 路由器 hub-r1

登录 flexiManage 控制台

  • 依次转到广告资源 → 设备
  • 查找并注意 hub-r1hub-r2 的主机名都是"unknown"

1a88ffa4409ad3c0

选择主机名为 hub-r1 的未知设备

  • 输入 hub-r1 的主机名
  • 批准设备,将拨盘向右滑动。

选择接口标签页

  • 找到“已分配”
  • 在界面行旁边,点击以将设置更改为“是”

选择防火墙标签页

  • 点击“+”添加入站防火墙规则
  • 选择 WAN 接口以继承该规则
  • 允许使用 TCP 协议的 SSH 端口 22
  • 点击“更新设备

从 flexiWAN 的控制器启动 SD-WAN 的 hub-r1 设备

  • 返回广告资源 → 设备 → hub-r1

选择“Start Device”(启动设备)

  • 等待同步完成,并注意观察“running”状态

在 flexiManage 控制台上激活 Hub 路由器 hub-r2

选择主机名为 hub-r2 的未知设备

  • 输入 hub-r2 的主机名
  • 批准设备,将刻度盘向右滑动。

选择“接口”标签页

  • 找到“已分配”
  • 点击界面行旁边的,将设置更改为

选择防火墙标签页

  • 点击“+”添加入站防火墙规则
  • 选择 WAN 接口以继承该规则
  • 允许采用 TCP 协议的 SSH 端口 22
  • 点击添加规则
  • 点击“更新设备

从 flexiWAN 的控制器启动 SD-WAN 的 hub-r2 设备

  • 返回广告资源 → 设备 → hub-r2,选择启动设备
  • 等待同步完成,并注意观察“running”状态

14. GCP Hub 上的 Network Connectivity Center

802fe0ef1e98c563

启用 API 服务

启用 NetworkConnectivity API(如果尚未启用):

gcloud services enable networkconnectivity.googleapis.com

创建 NCC Hub

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 spoke

找到 hub-r1 和 hub-r2 的 URI 和 IP 地址,并记下输出结果。下一步操作将会用到此信息。

请务必记下 hub-r1 和 hub-r2 实例的 IP 地址 (192.168.x.x)。

gcloud compute instances describe hub-r1 \
--zone=us-central1-a \
--format="value(selfLink.scope(projects))"

gcloud compute instances describe hub-r1 --zone=us-central1-a | grep "networkIP"
gcloud compute instances describe hub-r2 \
--zone=us-east4-b \
--format="value(selfLink.scope(projects))"

gcloud compute instances describe hub-r2 --zone=us-east4-b | grep "networkIP"

将 hub-r1 的 Vnic networkIP (192.168.x.x) 添加为 spoke 并启用网站到网站数据传输

gcloud network-connectivity spokes linked-router-appliances create s2s-wrk-cr1 \
--hub=ncc-hub \
--router-appliance=instance="https://www.googleapis.com/compute/projects/$projectname/zones/us-central1-a/instances/hub-r1",ip=192.168.235.4 \
--region=us-central1 \
--site-to-site-data-transfer

将 hub-r2 的 Vnic networkIP (192.168.x.x) 添加为 spoke 并启用站点到站点数据传输

gcloud network-connectivity spokes linked-router-appliances create s2s-wrk-cr2 \
--hub=ncc-hub \
--router-appliance=instance=/projects/$projectname/zones/us-east4-b/instances/hub-r2,ip=192.168.236.101 \
--region=us-east4 \
--site-to-site-data-transfer

配置 Cloud Router 以与 Hub-R1 建立 BGP

在以下步骤中,创建 Cloud Router 路由器并通告工作负载 VPC 子网 192.168.235.0/24

在 us-central1 中创建将通过 hub-r1 与 BGP 通信的 Cloud Router 路由器

gcloud compute routers create wrk-cr1 \
--region=us-central1 \
--network=workload-vpc \
--asn=65002 \
--set-advertisement-groups=all_subnets \
--advertisement-mode=custom

通过将路由器设备配置为 NCC Spoke,这使得 Cloud Router 路由器能够在虚拟接口上协商 BGP。

在 Cloud Router 路由器上创建两个接口,用于与 hub-r1 交换 BGP 消息。

从工作负载子网中选择 IP 地址,并且可以根据需要更改

gcloud compute routers add-interface wrk-cr1 \
--region=us-central1 \
--subnetwork=workload-subnet1 \
--interface-name=int0 \
--ip-address=192.168.235.101 

gcloud compute routers add-interface wrk-cr1 \
--region=us-central1 \
--subnetwork=workload-subnet1 \
--interface-name=int1 \
--ip-address=192.168.235.102 \
--redundant-interface=int0

配置 Cloud Router 路由器接口以使用 hub-r1 的 vNIC-1 建立 BGP,并使用 hub-r1 的 IP 地址 networkIP 更新对等 IP 地址。请注意,int0 &和int1。

gcloud compute routers add-bgp-peer wrk-cr1 \
    --peer-name=hub-cr1-bgp-peer-0 \
    --interface=int0 \
    --peer-ip-address=192.168.235.4 \
    --peer-asn=64111 \
    --instance=hub-r1 \
    --instance-zone=us-central1-a \
    --region=us-central1

gcloud compute routers add-bgp-peer wrk-cr1 \
    --peer-name=hub-cr1-bgp-peer-1 \
    --interface=int1 \
    --peer-ip-address=192.168.235.4 \
    --peer-asn=64111 \
    --instance=hub-r1 \
    --instance-zone=us-central1-a \
    --region=us-central1

验证 BGP 状态,在 Codelab 中的此时间点,BGP 为“连接状态”因为尚未针对 BGP 配置网络路由器设备。

gcloud compute routers get-status wrk-cr1 --region=us-central1

配置 Workload-cr2 以使用 Hub-R2 建立 BGP

在以下步骤中,创建 Cloud Router 路由器并通告工作负载 VPC 子网 192.168.236.0/24

在 us-east4 中创建将通过 hub-r2 与 BGP 通信的 Cloud Router 路由器

gcloud compute routers create wrk-cr2 \
--region=us-east4 \
--network=workload-vpc \
--asn=65002 \
--set-advertisement-groups=all_subnets \
--advertisement-mode=custom

在 Cloud Router 路由器上创建一对接口,用于与 hub-r2 交换 BGP 消息,从工作负载子网中选择 IP 地址,可以根据需要更改

gcloud compute routers add-interface wrk-cr2 \
--region=us-east4 \
--subnetwork=workload-subnet2 \
--interface-name=int0 \
--ip-address=192.168.236.5 


gcloud compute routers add-interface wrk-cr2 \
--region=us-east4 \
--subnetwork=workload-subnet2 \
--interface-name=int1 \
--ip-address=192.168.236.6 \
--redundant-interface=int0

配置 Cloud Router 路由器接口以使用 hub-r2 的 vNIC-1 建立 BGP,并使用 hub-r1 networkIP 的 IP 地址更新对等 IP 地址。请注意,int0 &和int1。

gcloud compute routers add-bgp-peer wrk-cr2 \
    --peer-name=hub-cr2-bgp-peer-0 \
    --interface=int0 \
    --peer-ip-address=192.168.236.101 \
    --peer-asn=64112 \
    --instance=hub-r2 \
    --instance-zone=us-east4-b \
    --region=us-east4

gcloud compute routers add-bgp-peer wrk-cr2 \
    --peer-name=hub-cr2-bgp-peer-1 \
    --interface=int1 \
    --peer-ip-address=192.168.236.101 \
    --peer-asn=64112 \
    --instance=hub-r2 \
    --instance-zone=us-east4-b \
    --region=us-east4

验证 BGP 状态,在 Codelab 中的此时间点,BGP 为“连接状态”因为尚未针对 BGP 配置网络路由器设备。

gcloud compute routers get-status wrk-cr2 --region=us-east4

15. 为 BGP 配置集线器路由器设备

为 BGP 配置 hub-r1

请务必登录到 flexiManage 控制台

依次转到 InventoryDeviceshub-r1,然后选择带有 HostName:hub-r1 的设备

  • 点击路由标签页
  • 点击“BGP 配置”
  • 停用“重新分布 OSPF 路由”
  • 使用这些参数为 BGP 配置 hub-r1,然后点击保存

8d470056f620717f

选择“接口”找到“LAN 接口”,然后找到“路由”列

  • 点击“none”(无)打开菜单以选择 BGP 作为路由协议

82310aab05e9e414

  • 点击页面顶部的“更新设备”

为 BGP 配置 hub-r2

请务必登录到 flexiManage 控制台

前往 Inventory → Deviceshub-r2,选择 HostName:hub-r2 对应的设备

  • 点击路由标签页
  • 点击“BGP 配置”
  • 停用“重新分布 OSPF 路由”
  • 使用这些参数为 BGP 配置 hub-r2,然后点击保存

“8ecb14e2c046012e”

选择“接口”找到“LAN 接口”,找到“路由”列

  • 点击“无”打开一个下拉菜单,选择 BGP 作为路由协议

41a381f81f2b500e

  • 点击页面顶部的更新设备

选择“路由”标签页

  • 确认 hub-r2 已从 wrk-cr2 获知 BGP 路由

ddf3e811b193ec10.png

16. 路由器设备之间的 BGP 路由交换

为远程站点建立本地 ASN

为 site1-nva 和 site2-nva 配置本地 BGP ASN,配置完成后,我们将在远程站点和集线器路由器之间建立 IPSEC 隧道。

选择带有 HostName:site1-nva 的设备

  • 点击路由标签页
  • 点击“BGP 配置”
  • 停用“重新分布 OSPF 路由”
  • 已启用的 BGP
  • 本地 ASN 7269 → 保存
  • 更新设备
  • “接口”标签页 → LAN → 路由 → BGP
  • 更新设备

选择带有 HostName:site2-nva 的设备

  • 点击路由标签页
  • 点击“BGP 配置”
  • 停用“重新分布 OSPF 路由”
  • 已启用的 BGP
  • 本地 ASN 7270 → 保存
  • 更新设备
  • “接口”标签页 → LAN → 路由 → BGP
  • 更新设备

在站点和中心设备之间配置 VPN 隧道

请务必登录到 flexiManage 控制台

  • 依次转到广告资源 → 设备
  • 选中 site1-nvahub-r1 的主机名旁边的复选框,以便在这对 NVA 之间构建 VPN 隧道
  • 点击操作→ 创建隧道,然后配置以下内容

d870b4049a0e7fcf.png

c50d794442c0bdd0.png

  • 选择创建隧道
  • 移除 site1-nvaub-r1 的对勾标记

通过选择相应的参数,重复执行相应步骤,在 site2-nva 和 hub-r2 之间创建隧道

37c86e17b74e98ca

验证每对 NVA 之间是否建立了隧道对。

  • 在左侧面板中,选择“广告资源”然后点击“隧道”然后找到“状态”列

a31e7a73aff53b66.png

请验证“site1-nva”到子网 192.168.235.0/24 和 192.168.236.0/24 的已知路由

  • 选择广告资源 → 设备 → site1-nva,然后点击路由标签页

在下面的示例输出中,flexiWAN 使用主机 IP 地址 10.100.0.6 cef8dee200ac600a.png 自动创建了隧道

17. 验证数据路径连接

在本地验证站点到云的连接

请参阅示意图:验证 s1-vmworkload1-vm 之间的数据路径

2a403992934279b3

为站点到云配置 VPC 静态路由

内部部署的 Site1-VPC 和 Site2-VPC 可模拟本地数据中心网络。

Site-1-nva 和 site-2-nva 路由器设备均使用 VPN 连接来访问中心网络。

对于站点到云用例**,** 使用路由器设备作为连接到 GCP 云网络中网络的下一个跃点,创建到 192.168.0.0/16 目标的静态路由。

s1-inside-vpc 上,为云端目的地 (192.168.0.0/16) 创建静态路由:

gcloud compute routes create site1-subnet-route  \
--network=s1-inside-vpc \
--destination-range=192.168.0.0/16  \
--next-hop-instance=site1-nva \
--next-hop-instance-zone=us-central1-a

s2-inside-vpc 上,为云端目的地 (192.168.0.0/16) 创建静态路由:

gcloud compute routes create site2-subnet-route  \
--network=s2-inside-vpc \
--destination-range=192.168.0.0/16  \
--next-hop-instance=site2-nva \
--next-hop-instance-zone=us-east4-b

在 cloudshell 上,查找 "workload1-vm" 的 IP 地址。您需要此文件来测试来自“s1-vm”的连接。

gcloud compute instances describe workload1-vm --zone=us-central1-a | grep "networkIP"

打开与 s1-vm 的 SSH 连接,如果超时,请重试

gcloud compute ssh s1-vm --zone=us-central1-a

通过 SSH 连接到“s1-vm”,然后使用“curl”命令建立与 Workloads1-VM IP 地址的 TCP 会话。

s1-vm:~$ curl 192.168.235.3 -vv
*   Trying 192.168.235.3:80...
* Connected to 192.168.235.3 (192.168.235.3) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.235.3
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 07 Dec 2022 15:12:08 GMT
< Server: Apache/2.4.54 (Debian)
< Last-Modified: Tue, 06 Dec 2022 00:57:46 GMT
< ETag: "1f-5ef1e4acfa1d9"
< Accept-Ranges: bytes
< Content-Length: 31
< Content-Type: text/html
< 
Page served from: workload1-vm
* Connection #0 to host 192.168.235.3 left intact

验证网站到网站连接

参考上图,验证 s1-vms2-vm 之间的数据路径

1a7ec558ab1ecd37

为站点到站点配置 VPC 静态路由

要使用 GCP 的全球网络在站点 1 和站点 2 之间路由站点到站点流量,您需要使用本地路由器设备作为下一个跃点,创建到远程站点子网目标的静态路由。

在稍后的步骤中,工作负载 VPC 将配置 NCC 以支持站点到站点数据传输。

s1-inside-vpc 上,创建一条指向 site2-subnet (10.20.1.0/24) 的静态路由:

gcloud compute routes create site1-sn1-route  \
--network=s1-inside-vpc \
--destination-range=10.20.1.0/24  \
--next-hop-instance=site1-nva \
--next-hop-instance-zone=us-central1-a

s2-inside-vpc 上,创建一条指向 site1-subnet (10.10.1.0/24) 的静态路由:

gcloud compute routes create site2-sn1-route  \
--network=s2-inside-vpc \
--destination-range=10.10.1.0/24  \
--next-hop-instance=site2-nva \
--next-hop-instance-zone=us-east4-b

在 cloudshell 上,查找“s2-vm”的 IP 地址。您需要此文件来测试来自 S1-vm 的连接。

gcloud compute instances describe s2-vm --zone=us-east4-b | grep networkIP

打开与 s1-vm 的 SSH 连接,如果超时,请重试

gcloud compute ssh s1-vm --zone=us-central1-a

通过 SSH 连接到“s1-vm”和“ping”“s2-vm”的 IP 地址。

s1-vm:~$ ping 10.20.1.3
PING 10.20.1.3 (10.20.1.3) 56(84) bytes of data.
64 bytes from 10.20.1.3: icmp_seq=1 ttl=60 time=99.1 ms
64 bytes from 10.20.1.3: icmp_seq=2 ttl=60 time=94.3 ms
64 bytes from 10.20.1.3: icmp_seq=3 ttl=60 time=92.4 ms
64 bytes from 10.20.1.3: icmp_seq=4 ttl=60 time=90.9 ms
64 bytes from 10.20.1.3: icmp_seq=5 ttl=60 time=89.7 ms

18. 清理

登录 Cloud Shell 并删除中心和分支站点网络中的虚拟机实例

#on prem instances
gcloud compute instances delete s1-vm --zone=us-central1-a --quiet
gcloud compute instances delete s2-vm --zone=us-east4-b --quiet

#delete on prem firewall rules
gcloud compute firewall-rules delete site1-ssh --quiet
gcloud compute firewall-rules delete site1-internal --quiet
gcloud compute firewall-rules delete site1-cloud --quiet
gcloud compute firewall-rules delete site1-vpn  --quiet
gcloud compute firewall-rules delete site1-iap --quiet
gcloud compute firewall-rules delete site2-ssh --quiet
gcloud compute firewall-rules delete site2-internal --quiet
gcloud compute firewall-rules delete site2-cloud --quiet
gcloud compute firewall-rules delete site2-vpn  --quiet
gcloud compute firewall-rules delete site2-iap --quiet
gcloud compute firewall-rules delete allow-from-site-1-2 --quiet
gcloud compute firewall-rules delete s2-inside-cloud s2-inside-internal s2-inside-ssh --quiet
gcloud compute firewall-rules delete s1-inside-cloud s1-inside-iap s1-inside-internal s1-inside-ssh s2-inside-cloud s2-inside-iap s2-inside-internal s2-inside-ssh --quiet


#delete ncc spokes
gcloud network-connectivity spokes delete s2s-wrk-cr1 --region us-central1 --quiet
gcloud network-connectivity spokes delete s2s-wrk-cr2 --region us-east4 --quiet

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

#delete the cloud router
gcloud compute routers delete wrk-cr1 --region=us-central1 --quiet
gcloud compute routers delete wrk-cr2 --region=us-east4 --quiet

#delete the instances

gcloud compute instances delete hub-r1 --zone=us-central1-a --quiet
gcloud compute instances delete hub-r2 --zone=us-east4-b --quiet
gcloud compute instances delete workload1-vm --zone=us-central1-a --quiet
gcloud compute instances delete site1-nva --zone=us-central1-a --quiet
gcloud compute instances delete site2-nva --zone=us-east4-b --quiet

#delete on prem subnets

gcloud compute networks subnets delete hub-subnet1 s1-inside-subnet site1-subnet workload-subnet1 --region=us-central1 --quiet

gcloud compute networks subnets delete hub-subnet2 s2-inside-subnet  site2-subnet workload-subnet2 --region=us-east4 --quiet 

#delete hub firewall rule
gcloud compute firewall-rules delete hub-ssh --quiet
gcloud compute firewall-rules delete hub-vpn --quiet
gcloud compute firewall-rules delete hub-internal --quiet
gcloud compute firewall-rules delete hub-iap --quiet

gcloud compute firewall-rules delete workload-ssh --quiet
gcloud compute firewall-rules delete workload-internal --quiet
gcloud compute firewall-rules delete workload-onprem --quiet
gcloud compute firewall-rules delete workload-iap --quiet

#delete on vpcs
gcloud compute networks delete hub-vpc s1-inside-vpc s2-inside-vpc site2-vpc workload-vpc --quiet 

19. 恭喜!

您已完成 Network Connectivity Center 实验!

所学内容

  • 为 NCC 站点到云配置了软件定义的 WAN 集成
  • 为 NCC 站点到站点配置软件定义的 WAN 集成

后续步骤

©Google, LLC 或其关联公司。保留所有权利。请勿散布。