本文提供了如何将 VMware 合作伙伴网关从 3.3.2 或 3.4 版升级到 4.0 版的说明。
SD-WAN 网关 设备在 4.0 版本中包含以下更改:
- 基于 LVM 的全新系统磁盘布局;可以在卷管理方面提供更大的灵活性
- 新的内核版本
- 新的和升级的基本操作系统软件包
- 提高了基于 Internet 安全中心基准的安全强化
- 弃用了 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。
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: []
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
#cloud-config
hostname: vcg1
password: Velocloud123
chpasswd: {expire: False}
ssh_pwauth: True
示例 2:新样式的网络配置(network-config 文件)
instance-id: vcg1 local-hostname: vcg1
#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 的示例命令输出如下所示。
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:~#
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:~#
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 版本。迁移要求部署新的 4.0 SD-WAN 网关系统,并停用旧代码的系统。
对于具有已知公用 IP 地址的 VPN SD-WAN 网关或 NAT SD-WAN 网关,如果必须保留 SD-WAN 网关的公用 IP,请按照以下过程进行操作。
- 启动基于 4.0 版本映像的新 SD-WAN 网关系统。有关更多信息,请参阅适用于您的平台的部署指南(网关安装过程)。
- 关闭旧 SD-WAN 网关系统。(关闭旧 SD-WAN 网关虚拟机(在 CLI 控制台上运行
“sudo poweroff”命令或从可用的 Hypervisor 选项中关闭电源。) - 将公用 IP 迁移到新系统:更新 NAT 记录以指向新的 SD-WAN 网关系统,或者在新的 SD-WAN 网关网络接口上配置公用 IP。使用上面提供的 cloud-init 示例以及与以前的 SD-WAN 网关相同的 IP 地址部署新网关。
- 在 SD-WAN Orchestrator 上从现有 SD-WAN 网关记录中获取激活密钥(如以下步骤中所述)。
- 从 SD-WAN Orchestrator 中,从左侧导航面板中选择网关 (Gateways)。
- 从网关 (Gateways) 屏幕中,单击以选择一个 SD-WAN 网关。
- 从所选 SD-WAN 网关 的屏幕中,单击 SD-WAN 网关名称旁边的向下箭头以打开信息框。
- 激活密钥位于信息框底部,如下图中所示。

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


- 重新激活新的 SD-WAN 网关系统:从 CLI 控制台中,运行:
“sudo /opt/vc/bin/activate.py -s <vco_address> <activation_code>” - 将以下系统属性“gateway.activation.validate.deviceId”恢复为原始值(如有必要)。
现已注册 SD-WAN 网关并准备好接收来自 Edge 的连接。
激活示例输出
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 网关
本节仅适用于没有已知公用 IP 的 SD-WAN 网关,例如,VPN SD-WAN 网关。如果适用该场景,请执行以下过程。
- 启动新的 SD-WAN 网关系统。如有必要,请参阅适用于您的平台的部署指南(网关安装过程)。
- 激活新的 SD-WAN 网关系统。
- 将新的 SD-WAN 网关添加到 SD-WAN Orchestrator SD-WAN 网关池中。有关更多详细信息,请参阅《VMware SD-WAN 操作员指南》中的“网关管理”一节。
- 现已注册 SD-WAN 网关并准备好接收来自 Edge 的连接。
- 从 SD-WAN Orchestrator SD-WAN 网关池中移除旧 SD-WAN 网关。有关更多信息,请参阅《VMware SD-WAN 操作员指南》中的“网关管理”一节。
- 停用旧 SD-WAN 网关虚拟机。(从 SD-WAN Orchestrator 中移除 SD-WAN 网关记录并停用虚拟机实例。)
通过 API 获取网关激活密钥
要使用 API 方法进行部署,请使用以下命令:“network/getNetworkGateways”
示例响应:
{"jsonrpc":"2.0","result":[{"id":1, "activationKey":"69PX-YHY2-N5PZ-G3UW …
在数据平面中配置切换接口
VMware SD-WAN 网关网络配置
在下图的示例(VRF/VLAN 切换到 PE)中,我们假设 eth0 是面向公用网络 (Internet) 的接口,而 eth1 是面向内部网络(通过 PE 的客户 VRF)的接口。BGP 对等连接配置是在 VCO 上的“配置”(Configure) >“客户”(Customer) 中根据客户/VRF 管理的。请注意,每个 VRF 的 IP 地址均可按客户进行配置。管理 VRF 的 IP 地址会继承在 Linux 中的 SD-WAN 网关接口上配置的 IP 地址。

管理 VRF 在 SD-WAN 网关上创建,用于向默认网关 IP 发送定期 ARP 刷新,以确定下一跃点 MAC。为此,建议在 PE 路由器上设置专用 VRF。PE 路由器也可以使用相同的管理 VRF 向 SD-WAN 网关发送 IP SLA 探测,以检查 SD-WAN 网关状态(SD-WAN 网关具有一个有状态 ICMP 响应程序,该响应程序仅在其服务已启动时,才会响应 ping 操作)。管理 VRF 上不需要 BGP 对等连接。如果未设置管理 VRF,您可以将其中的一个客户 VRF 作为管理 VRF,但不建议这样做。
"vcmp.interfaces":[
"eth0"
],
(..snip..)
"wan": [
"eth1"
],
步骤 2:配置管理 VRF。此 VRF 由 SD-WAN 网关用于下一跃点 MAC(PE 路由器)的 ARP。SD-WAN 网关创建的所有 VRF 将使用相同的下一跃点 MAC。您需要在 /etc/config/gatewayd 中配置管理 VRF 参数。
管理 VRF 即是 PE 路由器用来发送 IP SLA 探测的 VRF。仅当服务已启动且存在连接的 Edge 时,SD-WAN 网关才会响应 ICMP 探测。下表介绍了需要定义的每个参数。此示例在 802.1q VLAN ID 1000 上具有管理 VRF。
| mode | QinQ (0x8100)、QinQ (0x9100)、无、802.1Q、802.1ad |
| c_tag | 用于 QinQ 封装的 C 标记值或用于 802.1Q 封装的 802.1Q VLAN ID |
| s_tag | 用于 QinQ 封装的 S 标记值 |
| interface | 切换接口,通常为 eth1 |
"vrf_vlan": {
"tag_info": [
{
"resp_mode": 0,
"proxy_arp": 0,
"c_tag": 1000,
"mode": "802.1Q",
"interface": "eth1",
"s_tag": 0
}
]
},
步骤 3:编辑 /etc/config/gatewayd-tunnel 以在 wan 参数中包含这两个接口。保存所做的更改。
wan="eth0 eth1"
移除阻止的子网
默认情况下,SD-WAN 网关会阻止流向 10.0.0.0/8 和 172.16.0.0/14 的流量。我们需要在使用此 SD-WAN 网关之前将这些子网移除,因为我们希望 SD-WAN 网关也将流量发送到专用子网。如果不编辑此文件,则在尝试将流量发送到阻止的子网时,您将在 /var/log/gwd.log 中看到以下消息
2015-12-18T12:49:55.639 ERR [NET] proto_ip_recv_handler:494 Dropping packet destined for 10.10.150.254, which is a blocked subnet. 2015-12-18T12:52:27.764 ERR [NET] proto_ip_recv_handler:494 Dropping packet destined for 10.10.150.254, which is a blocked subnet. [message repeated 48 times] 2015-12-18T12:52:27.764 ERR [NET] proto_ip_recv_handler:494 Dropping packet destined for 10.10.150.10, which is a blocked subnet.
[
{
"network_addr": "10.0.0.0",
"subnet_mask": "255.0.0.0"
},
{
"network_addr": "172.16.0.0",
"subnet_mask": "255.255.0.0"
}
]
[ ]
步骤 3:使用 sudo /opt/vc/bin/vc_procmon restart 重新启动 SD-WAN 网关进程。