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 的骨干网,以实现站点到云和站点到站点通信。
- 您将部署一对为“flexiWAN”配置的 GCE 虚拟机中心 VPC 中的 SD-WAN 代理,表示流向 GCP 的入站和出站流量的头端。
- 部署两个远程 flexiWAN SD-WAN 路由器,代表两个不同的分支站点 VPC
- 对于数据路径测试,您将配置三个 GCE 虚拟机,以便在 GCP 上托管的本地客户端和服务器上进行模拟
学习内容
- 使用 NCC 通过开源软件定义的 WAN 解决方案连接远程分支办公室
- 拥有使用开源软件定义的 WAN 解决方案的实践经验
所需条件
- 了解 GCP VPC 网络
- 了解 Cloud Router 和 BGP 路由
- Codelab 需要 6 个 VPC。检查您的配额:网络并根据需要请求添加额外网络,屏幕截图如下:
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 网络和防火墙规则。
模拟本地分支站点网络
此 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-vm
和 s2-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 路由交换。
- 创建
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
- 创建
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
- 创建 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
- 创建 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
- 在 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
- 创建
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 设置本地设备
为 SDWAN (Appliances) 创建本地虚拟机
在下面的部分中,我们将创建 site1-nva 和 site2-nva 路由器设备,作为预置型路由器。
创建实例
创建名为 site1-nva 的 site1-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-nva 的 site2-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 进行身份验证。所有路由器设备可重复使用同一令牌。
依次选择资产清单 → 令牌,创建令牌并选择副本
返回 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
在 flexiManage 控制台上激活站点路由器
登录 flexiManage 控制台,在控制器上激活 site1-nva
在左侧面板中,依次点击选择广告资源 → 设备,然后点击未知设备
输入 site1-nva 的主机名,然后将拨盘向右滑动以批准设备。
选择“接口”标签页
找到“已分配”列,然后点击否然后将设置更改为“是”
选择“防火墙”标签页,然后点击“+”号以添加入站防火墙规则
选择 WAN 接口以应用 SSH 规则,如下所述
点击“更新设备”
从 flexiWAN 控制器启动 site1-nva。返回广告资源 → 设备 → site1-nva,选择启动设备
状态 - 正在同步
状态 - 已同步
您可以在问题排查 → 通知下查看警告指示器。查看完毕后,全选并标记为已读
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”(令牌),然后创建令牌并选择复制
返回 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
通过 flexiManage 控制台激活站点路由器
登录 flexiManage 控制台,在控制器上激活 site2-nva
在左侧面板中,依次点击选择广告资源 → 设备,然后点击未知设备
输入 site2-nva 的主机名,然后将拨盘向右滑动以批准设备。
选择“接口”标签页
找到“已分配”列,然后点击否然后将设置更改为“是”
选择防火墙标签页,然后点击“+”号以添加入站防火墙规则。选择 WAN 接口以应用 SSH 规则,如下所述
点击“更新设备”
从 flexiWAN 控制器启动 site2-nva。返回广告资源 → 设备 → site2-nva,选择启动设备
Satus - 正在同步
状态 - 已同步
您可以在问题排查 → 通知下查看警告指示器。查看完毕后,全选并标记为已读
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-r1 和 hub-r2 的主机名都是"unknown"
选择主机名为 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
启用 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 控制台
依次转到 Inventory → Devices → hub-r1,然后选择带有 HostName:hub-r1 的设备
- 点击路由标签页
- 点击“BGP 配置”
- 停用“重新分布 OSPF 路由”
- 使用这些参数为 BGP 配置 hub-r1,然后点击保存
选择“接口”找到“LAN 接口”,然后找到“路由”列
- 点击“none”(无)打开菜单以选择 BGP 作为路由协议
- 点击页面顶部的“更新设备”。
为 BGP 配置 hub-r2
请务必登录到 flexiManage 控制台
前往 Inventory → Devices → hub-r2,选择 HostName:hub-r2 对应的设备
- 点击路由标签页
- 点击“BGP 配置”
- 停用“重新分布 OSPF 路由”
- 使用这些参数为 BGP 配置 hub-r2,然后点击保存
选择“接口”找到“LAN 接口”,找到“路由”列
- 点击“无”打开一个下拉菜单,选择 BGP 作为路由协议
- 点击页面顶部的更新设备
选择“路由”标签页
- 确认 hub-r2 已从 wrk-cr2 获知 BGP 路由
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-nva 和 hub-r1 的主机名旁边的复选框,以便在这对 NVA 之间构建 VPN 隧道
- 点击操作→ 创建隧道,然后配置以下内容
- 选择创建隧道
- 移除 site1-nva 和 ub-r1 的对勾标记
通过选择相应的参数,重复执行相应步骤,在 site2-nva 和 hub-r2 之间创建隧道
验证每对 NVA 之间是否建立了隧道对。
- 在左侧面板中,选择“广告资源”然后点击“隧道”然后找到“状态”列
请验证“site1-nva”到子网 192.168.235.0/24 和 192.168.236.0/24 的已知路由
- 选择广告资源 → 设备 → site1-nva,然后点击路由标签页
在下面的示例输出中,flexiWAN 使用主机 IP 地址 10.100.0.6 自动创建了隧道
17. 验证数据路径连接
在本地验证站点到云的连接
请参阅示意图:验证 s1-vm 和 workload1-vm 之间的数据路径
为站点到云配置 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-vm 和 s2-vm 之间的数据路径
为站点到站点配置 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 或其关联公司。保留所有权利。请勿散布。