本文件提供有關如何將 VMware 合作夥伴閘道從 3.3.2 或 3.4 版升級至 4.0 版的指示。

SD-WAN 閘道 應用裝置在 4.0 版本中包含下列變更:

  • 以 LVM 為基礎的新系統磁碟組態,可在大量管理中提供更多的彈性
  • 新的核心版本
  • 新的和升級的基礎作業系統套件
  • 根據網際網路安全性中心的基準,改善了安全性強化
SD-WAN 閘道 應用裝置在 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-tool 公用程式 新增對應的 Net-tool 公用程式
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)
路由 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:~# 

升級考量事項

備註: 以下步驟是根據假設您想要保留相同的 IP 位址,以及部署在 4.0 版中新 SD-WAN 閘道SD-WAN 閘道 名稱。但是,如果您想要使用不同的 IP 位址來建立新的 SD-WAN 閘道,可以遵循新的 SD-WAN 閘道 程序。

由於磁碟配置和系統檔案的大量變更,無法進行從較舊版本到 4.0 版的就地升級。移轉需要部署新的 4.0 SD-WAN 閘道 系統,並解除委任執行較舊程式碼的系統。

對於具有已知公用 IP 位址的 VPN SD-WAN 閘道 或 NAT SD-WAN 閘道,如果必須保留 SD-WAN 閘道 的公用 IP,請遵循以下程序。

程序:(具有已知公用 IP 位址的 VNP 或 NAT SD-WAN 閘道 )
  1. 根據 4.0 版映像啟動新的 SD-WAN 閘道 系統。如需詳細資訊,請參閱平台的部署指南 (閘道安裝程序)。
  2. 關閉舊的 SD-WAN 閘道 系統。(將舊的 SD-WAN 閘道 虛擬機器關閉),(透過在 CLI 主控台上執行 “sudo poweroff” 命令,或從可用的 Hypervisor 選項關閉電源)。
  3. 將公用 IP 移轉到新系統:更新 NAT 記錄以指向新的 SD-WAN 閘道 系統,或在新的 SD-WAN 閘道 網路介面上設定公用 IP。使用與先前 SD-WAN 閘道 相同的 IP 位址,在上述所指定的 Cloud-int 範例中部署新閘道。
  4. SD-WAN Orchestrator 中的現有 SD-WAN 閘道 記錄取得啟用金鑰 (如下列步驟所述)。
    1. SD-WAN Orchestrator 中,從左側導覽面板中選取閘道 (Gateways)
    2. 閘道 (Gateways) 畫面中,按一下 SD-WAN 閘道 加以選取。
    3. 從所選 SD-WAN 閘道 的畫面中,按一下 SD-WAN 閘道 名稱旁的向下箭頭,以開啟資訊方塊。
    4. 啟用金鑰位於資訊方塊的底部,如下圖所示。

  5. 將下列系統內容「gateway.activation.validate.deviceId」設定為 False,如下圖所示。如有必要,請參閱 VMware SD-WAN 操作員指南中的〈系統內容〉一節,以取得詳細資訊。

  6. 重新啟用新的 SD-WAN 閘道 系統:從 CLI 主控台執行:“sudo /opt/vc/bin/activate.py -s <vco_address> <activation_code>”
  7. 將下列系統內容「gateway.activation.validate.deviceId」還原為原始值 (如有必要)。

    SD-WAN 閘道 現已登錄,並準備好從 Edge 接收連線。

備註: 您可以透過 Cloud-int 執行 SD-WAN 閘道 重新啟用,如本文件的「使用者資料」一節中所述。

啟用範例輸出

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

啟用成功,VCO 覆寫回 169.254.8.2 root@SS1-gateway-2:/opt/vc#

不含已知公用 IP 的 SD-WAN 閘道

本節僅適用於沒有已知公用 IP 的 SD-WAN 閘道,例如 VPN SD-WAN 閘道。如果適用此案例,請遵循下列程序進行操作。

程序: SD-WAN 閘道 不含已知公用 IP
  1. 啟動新的 SD-WAN 閘道 系統。如有需要,請參閱平台的部署指南 (閘道安裝程序)。
  2. 啟動新的 SD-WAN 閘道 系統。
  3. 將新的 SD-WAN 閘道 新增至 SD-WAN Orchestrator SD-WAN 閘道 集區。如需詳細資料,請參閱 VMware SD-WAN 作業員指南中的「閘道管理」一節。
    1. SD-WAN 閘道 現已登錄,並準備好從 Edge 接收連線。
  4. SD-WAN Orchestrator SD-WAN 閘道 集區中移除舊的 SD-WAN 閘道。如需詳細資訊,請參閱 VMware SD-WAN 操作員指南中的「閘道管理」一節。
  5. 解除委任舊的 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 是面向公用網路 (網際網路) 的介面,而 eth1 是面向內部網路 (經由 PE 的客戶 VRF) 的介面。在 VCO 上,會依客戶/VRF,在 [設定 (Configure)] > [客戶 (Customer)] 之下管理 BGP 對等。請注意,每個 VRF 的 IP 位址均可依客戶來個別設定。管理 VRF 的 IP 位址會繼承在 Linux 中的 SD-WAN 閘道介面上所設定的 IP 位址。

管理 VRF 建立於 SD-WAN 閘道上,用來傳送定期 ARP 重新整理給預設閘道 IP,以決定下一個躍點 MAC。為此,建議在 PE 路由器上設定專用的 VRF。PE 路由器也可以使用相同的管理 VRF,來傳送 IP SLA 探查給 SD-WAN 閘道,以檢查 SD-WAN 閘道狀態 (SD-WAN 閘道具有一個可設定狀態的 ICMP 回應程式,該回應程式僅在其服務已啟動時,才會執行 Ping 偵測)。管理 VRF 上不需要 BGP 對等。如果未設定管理 VRF,您可以使用其中一個客戶 VRF 作為管理 VRF,但不建議這樣做。

步驟 1:編輯 /etc/config/gatewayd,並指定正確的 VCMP 和 WAN 介面。VCMP 介面是公用介面,會終止覆疊通道。此內容中的 WAN 介面是遞交介面。
      "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 識別碼 1000 上具有管理 VRF。

模式 QinQ (0x8100)、QinQ (0x9100)、無、802.1Q、802.1ad
c_tag 用於 QinQ 封裝的 C 標籤值,或用於 802.1Q 封裝的 802.1Q VLAN 識別碼
s_tag 用於 QinQ 封裝的 S 標籤值
介面 遞交介面,通常為 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.
步驟 1:在 SD-WAN 閘道上,編輯 /opt/vc/etc/vc_blocked_subnets.json 檔案。您會發現該檔案最初包含以下內容。
[
            {
                        "network_addr": "10.0.0.0",
                        "subnet_mask": "255.0.0.0"
            },
            {
            "network_addr": "172.16.0.0",
            "subnet_mask": "255.255.0.0"
            }
]
步驟 2:移除這兩個網路。編輯後,該檔案應如下所示。儲存變更。
[
]

步驟 3:使用 sudo /opt/vc/bin/vc_procmon restart 來重新啟動 SD-WAN 閘道程序。