本文提供了如何将 VMware 合作伙伴网关从 3.3.2 或 3.4 版升级到 4.0 版的说明。

SD-WAN Gateway 设备在 4.0 版本中包含以下更改:

  • 基于 LVM 的全新系统磁盘布局;可以在卷管理方面提供更大的灵活性
  • 新的内核版本
  • 新的和升级的基本操作系统软件包
  • 提高了基于 Internet 安全中心基准的安全强化
SD-WAN Gateway 设备在 4.0 版本中包含以下系统更改:
  • 弃用了 ifupdown 以支持 https://netplan.io/
    • ifup 和 ifdown 不再可用
    • 网络配置现在位于 /etc/netplan 而非 /etc/network/ 中
    • etc/network/ifup.d 和 /etc/network/ifdown.d 不再正常工作。应使用 network-dispatcher 位置 /usr/lib/networkd-dispatcher(dormant.d、no-carrier.d、off.d、routable.d)
  • 对 cloud-init 进行了重大更改。必须检查 cloud-init 部署脚本并测试其兼容性
  • net-tools(ifconfig、netstat 等)被视为“已弃用”,在将来的版本中可能会将其移除

网络配置

弃用了 ifupdown 以支持 https://netplan.io/。网络配置已从 /etc/network 移至 /etc/netplan。

示例网络配置(空格字符是非常重要的!)- /etc/netplan/50-cloud-init.yaml:
network: 
  version: 2 
  ethernets: 
    eth0:
      addresses: 
        - 192.168.151.253/24 
      gateway4: 192.168.151.1
      nameservers: 
        addresses:
          - 8.8.8.8 
          - 8.8.4.4 
        search: [] 
      routes: 
        - to: 192.168.0.0/16
          via: 192.168.151.254
          metric: 100

     eth1:
      addresses: 
        - 192.168.152.251/24 
      gateway4: 192.168.152.1
      nameservers: 
        addresses: 
          - 8.8.8.8 
        search: [] 
每次引导时,将会重新生成网络配置。要更改位置配置,请停用 cloud-init 网络配置。
echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

cloud-init

cloud-init 已升级到版本 20.2。有关 cloud-init 的更多信息,请参阅以下网址:https://cloudinit.readthedocs.io/en/stable/index.html

示例 1:简单

meta-data:

instance-id: vcg1

local-hostname: vcg1

user-data:
#cloud-config 
hostname: vcg1 
password: Velocloud123
chpasswd: {expire: False} 
ssh_pwauth: True

示例 2:新样式的网络配置(network-config 文件)

meta-data:
instance-id: vcg1 
local-hostname: vcg1 
user-data:
#cloud-config
hostname: vcg1
password: Velocloud123
chpasswd: {expire: False}
ssh_pwauth: True
ssh_authorized_keys:
  - ssh-rsa  …  rsa-key

velocloud: 
  vcg: 
    vco: demo.velocloud.net 
    activation_code: F54F-GG4S-XGFI 
    vco_ignore_cert_errors: false 

runcmd:
  - 'echo “Welcome to VeloCloud”' 

network-config 示例 1:

version: 2
ethernets:
  eth0:
    addresses: 
      - 192.168.152.55/24
    gateway4: 192.168.152.1
    nameservers: 
      addresses:
        - 192.168.152.1 
  eth1:
    addresses:
      - 192.168.151.55/24
    gateway4: 192.168.151.1
    nameservers: 
      addresses:
        - 192.168.151.1 

network-config 示例 2:

注意:如果在网关上具有多个接口,并且需要选择一个接口以作为默认网关的首选接口,则可以使用以下配置(具有衡量指标值)以选择正确的接口。

version: 2
ethernets:
eth0:
  addresses: [192.168.82.1/24]
eth1:
  addresses: [70.150.1.1/24]
  routes:
  - {metric: 1, to: 0.0.0.0/0, via: 70.150.1.254}
eth2:
  addresses: [70.155.1.1/24]
  routes:
  - {metric: 2, to: 0.0.0.0/0, via: 70.155.1.254}

net-tools

net-tools 实用程序(如 ifconfig、netstat、route 等)被视为“已弃用”。net-tools 建议的替代实用程序如下表中所示。这些命令仅显示 Linux 主机的信息,而不显示 SD-WAN 覆盖网络的信息。注意:有关更多信息,请键入:man ip。

旧 net-tools 实用程序 新的相应 net-tools 实用程序
arp ip n (ip neighbor)
ifconfig ip a (ip addr)、ip link、ip -s (ip -stats)
nameif ip link、ifrename
netstat ss、ip route(替代 netstat-r)、ip -s link(替代 netstat -i)、ip maddr(替代 netstat-g)
route ip r (ip route)

net-tool 实用程序的示例命令输出

示例输出确认命令已成功完成。ip n (ip neighbor)、ip a (ipaddr) 和 ip link 的示例命令输出如下所示。

ip n (ip neighbor):
root@SS-gateway-1:~# ip n 
192.168.0.100 dev eth2 lladdr 00:50:56:84:85:d4 REACHABLE 
192.168.0.250 dev eth2 lladdr 00:50:56:84:97:66 REACHABLE 
13.1.1.2 dev eth0 lladdr 00:50:56:84:e7:fa REACHABLE 
root@SS-gateway-1:~# 
ip a (ipaddr):
root@SS-gateway-1:~# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
       valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 4096 
    link/ether 00:50:56:84:a0:09 brd ff:ff:ff:ff:ff:ff 
    inet 13.1.1.1/24 brd 13.1.1.255 scope global eth0 
       valid_lft forever preferred_lft forever 
    inet6 fe80::250:56ff:fe84:a009/64 scope link 
       valid_lft forever preferred_lft forever 
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 
    link/ether 00:50:56:84:a6:ab brd ff:ff:ff:ff:ff:ff 
    inet 101.101.101.1/24 brd 101.101.101.255 scope global eth1 
       valid_lft forever preferred_lft forever 
    inet6 fe80::250:56ff:fe84:a6ab/64 scope link 
       valid_lft forever preferred_lft forever 
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 
    link/ether 00:50:56:84:bc:75 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.0.201/24 brd 192.168.0.255 scope global eth2 
       valid_lft forever preferred_lft forever 
    inet6 fe80::250:56ff:fe84:bc75/64 scope link 
       valid_lft forever preferred_lft forever 
6: gwd1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 4096 
    link/none 
    inet 169.254.129.1/32 scope global gwd1 
       valid_lft forever preferred_lft forever 
    inet6 fe80::27d5:9e46:e7f7:7198/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever 
root@SS-gateway-1:~# 
ip link
root@SS-gateway-1:~# ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 4096 
    link/ether 00:50:56:84:a0:09 brd ff:ff:ff:ff:ff:ff 
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 
    link/ether 00:50:56:84:a6:ab brd ff:ff:ff:ff:ff:ff 
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 
    link/ether 00:50:56:84:bc:75 brd ff:ff:ff:ff:ff:ff 
6: gwd1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 4096 
    link/none 
root@SS-gateway-1:~# 

升级注意事项

注: 以下步骤基于以下假设:您希望为新部署的 4.0 版本 SD-WAN Gateway保留相同的 IP 地址和 SD-WAN Gateway名称。不过,如果要创建具有不同 IP 地址的新 SD-WAN Gateway,您可以按照新的 SD-WAN Gateway过程进行操作。

由于对磁盘布局和系统文件进行了重大更改,无法从旧版本就地升级到 4.0 版本。迁移要求部署新的 4.0 SD-WAN Gateway系统,并停用旧代码的系统。

对于具有已知公用 IP 地址的 VPN SD-WAN Gateway或 NAT SD-WAN Gateway,如果必须保留 SD-WAN Gateway的公用 IP,请按照以下过程进行操作。

过程:(具有已知公用 IP 地址的 VPN 或 NAT SD-WAN Gateway
  1. 启动基于 4.0 版本映像的新 SD-WAN Gateway系统。有关更多信息,请参阅适用于您的平台的部署指南(网关安装过程)。
  2. 关闭旧 SD-WAN Gateway系统。(关闭旧 SD-WAN Gateway虚拟机(在 CLI 控制台上运行 “sudo poweroff” 命令或从可用的 Hypervisor 选项中关闭电源。)
  3. 将公用 IP 迁移到新系统:更新 NAT 记录以指向新的 SD-WAN Gateway系统,或者在新的 SD-WAN Gateway网络接口上配置公用 IP。使用上面提供的 cloud-init 示例以及与以前的 SD-WAN Gateway相同的 IP 地址部署新网关。
  4. SD-WAN Orchestrator 上从现有 SD-WAN Gateway记录中获取激活密钥(如以下步骤中所述)。
    1. SD-WAN Orchestrator 中,从左侧导航面板中选择网关 (Gateways)
    2. 网关 (Gateways) 屏幕中,单击以选择一个 SD-WAN Gateway
    3. 从所选 SD-WAN Gateway 的屏幕中,单击 SD-WAN Gateway名称旁边的向下箭头以打开信息框。
    4. 激活密钥位于信息框底部,如下图中所示。

  5. 将以下系统属性“gateway.activation.validate.deviceId”设置为 False,如下图中所示。如有必要,请参阅《VMware SD-WAN 操作员指南》中的“系统属性”一节以了解更多信息。

  6. 重新激活新的 SD-WAN Gateway系统:从 CLI 控制台中,运行:“sudo /opt/vc/bin/activate.py -s <vco_address> <activation_code>”
  7. 将以下系统属性“gateway.activation.validate.deviceId”恢复为原始值(如有必要)。

    现已注册 SD-WAN Gateway并准备好接收来自 Edge 的连接。

注: 可以通过 cloud-init 执行 SD-WAN Gateway重新激活,如本文档的“用户数据”一节中所述。

激活示例输出

root@gateway/opt/vc# /opt/vc/bin/activate.py FLM6-CSV6-REJS-XFR5 -i -s 169.254.8.2

Activation successful, VCO overridden back to 169.254.8.2 root@SS1-gateway-2:/opt/vc#

没有已知公用 IP 的 SD-WAN Gateway

本节仅适用于没有已知公用 IP 的 SD-WAN Gateway,例如,VPN SD-WAN Gateway。如果适用该场景,请执行以下过程。

过程:(没有已知公用 IP 的 SD-WAN Gateway
  1. 启动新的 SD-WAN Gateway系统。如有必要,请参阅适用于您的平台的部署指南(网关安装过程)。
  2. 激活新的 SD-WAN Gateway系统。
  3. 将新的 SD-WAN Gateway添加到 SD-WAN Orchestrator SD-WAN Gateway池中。有关更多详细信息,请参阅《VMware SD-WAN 操作员指南》中的“网关管理”一节。
    1. 现已注册 SD-WAN Gateway并准备好接收来自 Edge 的连接。
  4. SD-WAN Orchestrator SD-WAN Gateway池中移除旧 SD-WAN Gateway。有关更多信息,请参阅《VMware SD-WAN 操作员指南》中的“网关管理”一节。
  5. 停用旧 SD-WAN Gateway虚拟机。(从 SD-WAN Orchestrator 中移除 SD-WAN Gateway记录并停用虚拟机实例。)

通过 API 获取网关激活密钥

要使用 API 方法进行部署,请使用以下命令:“network/getNetworkGateways”

示例响应:

{"jsonrpc":"2.0","result":[{"id":1, "activationKey":"69PX-YHY2-N5PZ-G3UW …