最民主的 SD-WAN 分析:架构、配置、管理和陷阱

从通过 SD-WAN 收到的问题数量来看,该技术已开始在俄罗斯彻底扎根。 供应商自然不会睡着并提供他们的概念,一些勇敢的先驱者已经在他们的网络上实施它们。

我们与几乎所有供应商合作,多年来,在我们的实验室里,我成功地深入研究了软件定义解决方案的每个主要开发人员的架构。 Fortinet 的 SD-WAN 在这里有点与众不同,它只是将平衡通信通道之间流量的功能内置到防火墙软件中。该解决方案相当民主,因此通常由尚未准备好应对全球变化但希望更有效地利用其沟通渠道的公司考虑。

在本文中,我想告诉您如何配置和使用 Fortinet 的 SD-WAN、该解决方案适合谁以及您可能会遇到哪些陷阱。

SD-WAN 市场中最著名的参与者可分为以下两种类型之一:

1. 从头开始​​创建 SD-WAN 解决方案的初创公司。其中最成功的被大公司收购后获得了巨大的发展动力——这就是 Cisco/Viptela、VMWare/VeloCloud、Nuage/Nokia 的故事

2. 大型网络供应商创建了SD-WAN解决方案,开发了传统路由器的可编程性和可管理性——这是瞻博网络、华为的故事

Fortinet 成功找到了出路。防火墙软件具有内置功能,可以将其接口组合成虚拟通道,并使用与传统路由相比复杂的算法来平衡它们之间的负载。此功能称为 SD-WAN。 Fortinet所做的可以称为SD-WAN吗?市场逐渐认识到软件定义意味着控制平面与数据平面、专用控制器和编排器的分离。 Fortinet 没有这样的东西。集中管理是可选的,并通过传统的 Fortimanager 工具提供。但在我看来,你不应该寻找抽象的真理并浪费时间争论术语。在现实世界中,每种方法都有其优点和缺点。最好的方法是理解它们并能够选择与任务相对应的解决方案。

我将尝试通过屏幕截图告诉您 Fortinet 的 SD-WAN 是什么样子以及它可以做什么。

一切如何运作

假设您有两个由两个数据通道连接的分支。 这些数据链路组合成一个组,类似于常规以太网接口组合成 LACP 端口通道的方式。 老前辈们会记得 PPP 多链路 - 也是一个合适的类比。 通道可以是物理端口、VLAN SVI、VPN 或 GRE 隧道。

通过 Internet 连接分支机构本地网络时通常使用 VPN 或 GRE。 以及物理端口 - 如果站点之间存在 L2 连接,或者通过专用 MPLS/VPN 连接时,如果我们对没有覆盖和加密的连接感到满意。 在 SD-WAN 组中使用物理端口的另一种场景是平衡用户对 Internet 的本地访问。

我们的展位上有四个防火墙和两个 VPN 隧道,通过两个“通信运营商”运行。 该图如下所示:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

VPN 隧道是在接口模式下配置的,因此类似于 P2P 接口上具有 IP 地址的设备之间的点对点连接,可以对其进行 ping 操作以确保通过特定隧道的通信正常工作。 为了使流量加密并到达对端,将其路由到隧道中就足够了。 另一种方法是使用子网列表选择要加密的流量,这会让管理员感到非常困惑,因为配置变得更加复杂。 在大型网络中,您可以使用ADVPN技术来构建VPN;这类似于思科的DMVPN或华为的DVPN,可以更轻松地设置。

两侧均具有 BGP 路由的两台设备的站点到站点 VPN 配置

«ЦОД» (DC)
«Филиал» (BRN)

config system interface
 edit "WAN1"
  set vdom "Internet"
  set ip 1.1.1.1 255.255.255.252
  set allowaccess ping
  set role wan
  set interface "DC-BRD"
  set vlanid 111
 next
 edit "WAN2"
  set vdom "Internet"
  set ip 3.3.3.1 255.255.255.252
  set allowaccess ping
  set role lan
  set interface "DC-BRD"
  set vlanid 112
 next
 edit "BRN-Ph1-1"
  set vdom "Internet"
  set ip 192.168.254.1 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.2 255.255.255.255
  set interface "WAN1"
 next
 edit "BRN-Ph1-2"
  set vdom "Internet"
  set ip 192.168.254.3 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.4 255.255.255.255
  set interface "WAN2"
 next
end

config vpn ipsec phase1-interface
 edit "BRN-Ph1-1"
  set interface "WAN1"
  set local-gw 1.1.1.1
  set peertype any
  set net-device disable
  set proposal aes128-sha1
  set dhgrp 2
  set remote-gw 2.2.2.1
  set psksecret ***
 next
 edit "BRN-Ph1-2"
  set interface "WAN2"
  set local-gw 3.3.3.1
  set peertype any
  set net-device disable
  set proposal aes128-sha1
  set dhgrp 2
  set remote-gw 4.4.4.1
  set psksecret ***
 next
end

config vpn ipsec phase2-interface
 edit "BRN-Ph2-1"
  set phase1name "BRN-Ph1-1"
  set proposal aes256-sha256
  set dhgrp 2
 next
 edit "BRN-Ph2-2"
  set phase1name "BRN-Ph1-2"
  set proposal aes256-sha256
  set dhgrp 2
 next
end

config router static
 edit 1
  set gateway 1.1.1.2
  set device "WAN1"
 next
 edit 3
  set gateway 3.3.3.2
  set device "WAN2"
 next
end

config router bgp
 set as 65002
 set router-id 10.1.7.1
 set ebgp-multipath enable
 config neighbor
  edit "192.168.254.2"
   set remote-as 65003
  next
  edit "192.168.254.4"
   set remote-as 65003
  next
 end

 config network
  edit 1
   set prefix 10.1.0.0 255.255.0.0
  next
end

config system interface
 edit "WAN1"
  set vdom "Internet"
  set ip 2.2.2.1 255.255.255.252
  set allowaccess ping
  set role wan
  set interface "BRN-BRD"
  set vlanid 111
 next
 edit "WAN2"
  set vdom "Internet"
  set ip 4.4.4.1 255.255.255.252
  set allowaccess ping
  set role wan
  set interface "BRN-BRD"
  set vlanid 114
 next
 edit "DC-Ph1-1"
  set vdom "Internet"
  set ip 192.168.254.2 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.1 255.255.255.255
  set interface "WAN1"
 next
 edit "DC-Ph1-2"
  set vdom "Internet"
  set ip 192.168.254.4 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.3 255.255.255.255
  set interface "WAN2"
 next
end

config vpn ipsec phase1-interface
  edit "DC-Ph1-1"
   set interface "WAN1"
   set local-gw 2.2.2.1
   set peertype any
   set net-device disable
   set proposal aes128-sha1
   set dhgrp 2
   set remote-gw 1.1.1.1
   set psksecret ***
  next
  edit "DC-Ph1-2"
   set interface "WAN2"
   set local-gw 4.4.4.1
   set peertype any
   set net-device disable
   set proposal aes128-sha1
   set dhgrp 2
   set remote-gw 3.3.3.1
   set psksecret ***
  next
end

config vpn ipsec phase2-interface
  edit "DC-Ph2-1"
   set phase1name "DC-Ph1-1"
   set proposal aes128-sha1
   set dhgrp 2
  next
  edit "DC2-Ph2-2"
   set phase1name "DC-Ph1-2"
   set proposal aes128-sha1
   set dhgrp 2
  next
end

config router static
 edit 1
  set gateway 2.2.2.2
  et device "WAN1"
 next
 edit 3
  set gateway 4.4.4.2
  set device "WAN2"
 next
end

config router bgp
  set as 65003
  set router-id 10.200.7.1
  set ebgp-multipath enable
  config neighbor
   edit "192.168.254.1"
    set remote-as 65002
   next
  edit "192.168.254.3"
   set remote-as 65002
   next
  end

  config network
   edit 1
    set prefix 10.200.0.0 255.255.0.0
   next
end

我以文本形式提供配置,因为在我看来,以这种方式配置 VPN 更方便。 几乎所有的设置双面都是相同的;在文本形式下,它们可以复制粘贴。 如果您在网络界面中执行相同的操作,很容易犯错误 - 忘记某处的复选标记,输入错误的值。

将接口添加到捆绑包后

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

所有路由和安全策略都可以引用它,但不能引用其中包含的接口。您至少需要允许从内部网络到 SD-WAN 的流量。当您为它们创建规则时,您可以应用IPS、防病毒和HTTPS泄露等保护措施。

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

为捆绑包配置 SD-WAN 规则。这些规则定义了特定流量的平衡算法。它们与基于策略的路由中的路由策略类似,只是当流量落入策略范围内时,它不是安装下一跳或通常的传出接口,而是添加到 SD-WAN 捆绑包的接口加上这些接口之间的流量平衡算法。

可以通过 L3-L4 信息、认可的应用程序、互联网服务(URL 和 IP)以及认可的工作站和笔记本电脑用户将流量与一般流量分开。 此后,可以将以下平衡算法之一分配给分配的流量:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

在“接口首选项”列表中,从已添加到捆绑包中的接口中选择将为此类流量提供服务的接口。 通过不添加所有接口,您可以精确限制您使用的渠道,例如电子邮件,如果您不想给具有高 SLA 的昂贵渠道造成负担。 在 FortiOS 6.4.1 中,可以将添加到 SD-WAN 捆绑包的接口分组为区域,例如创建一个区域用于与远程站点通信,另一个区域用于使用 NAT 进行本地互联网访问。 是的,是的,进入常规互联网的流量也可以被平衡。

关于平衡算法

关于 Fortigate(Fortinet 的防火墙)如何在通道之间分割流量,有两个有趣的选项,但在市场上并不常见:

最低成本 (SLA) – 从当前满足SLA的所有接口中,选择由管理员手动设置的权重(成本)较低的接口;此模式适用于“批量”流量,例如备份和文件传输。

最佳质量 (SLA) – 该算法除了常见的Fortigate数据包的延迟、抖动和丢失之外,还可以使用当前的信道负载来评估信道的质量; 该模式适用于VoIP、视频会议等敏感流量。

这些算法需要设置一个通信通道性能计——性能 SLA。 该仪表定期(检查间隔)监控有关 SLA 合规性的信息:通信通道中的数据包丢失、延迟(latency)和抖动(jitter),并且可以“拒绝”那些当前不符合质量阈值的通道——它们正在丢失数据包过多或延迟过长。 此外,仪表还监视通道的状态,并可以在响应重复丢失(非活动之前的故障)的情况下暂时将其从捆绑中删除。 恢复后,经过多次连续响应(恢复链路后),仪表将自动将通道返回到捆绑包,并且将再次开始通过它传输数据。

这就是“meter”设置的样子:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

在 Web 界面中,ICMP-Echo-r​​equest、HTTP-GET 和 DNS 请求可用作测试协议。命令行上还有更多选项:TCP-echo 和 UDP-echo 选项可用,以及专门的质量测量协议 - TWAMP。

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

测量结果也可以在网页界面中看到:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

并在命令行上:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

故障排除

如果您创建了规则,但一切未按预期工作,您应该查看 SD-WAN 规则列表中的命中计数值。它将显示流量是否完全符合此规则:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

在仪表本身的设置页面上,您可以看到通道参数随时间的变化。虚线表示参数的阈值

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

在 Web 界面中,您可以看到流量如何根据传输/接收的数据量和会话数量进行分配:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

除此之外,还有一个极好的机会以最大的细节跟踪数据包的通过。 在实际网络中工作时,设备配置会累积许多跨 SD-WAN 端口的路由策略、防火墙和流量分配。 所有这些都以复杂的方式相互作用,尽管供应商提供了数据包处理算法的详细框图,但非常重要的是能够不构建和测试理论,而是查看流量的实际流向。

例如,下面的一组命令

diagnose debug flow filter saddr 10.200.64.15
diagnose debug flow filter daddr 10.1.7.2
diagnose debug flow show function-name
diagnose debug enable
diagnose debug trace 2

允许您跟踪源地址为 10.200.64.15 和目标地址为 10.1.7.2 的两个数据包。
我们从 10.7.1.2 ping 10.200.64.15 两次,并查看控制台上的输出。

第一个包:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

第二包:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

这是防火墙收到的第一个数据包:
id=20085 trace_id=475 func=print_pkt_detail line=5605 msg="vd-Internet:0 received a packet(proto=1, 10.200.64.15:42->10.1.7.2:2048) from DMZ-Office. type=8, code=0, id=42, seq=0."
VDOM – Internet, Proto=1 (ICMP), DMZ-Office – название L3-интерфейса. Type=8 – Echo.

已为他创建了一个新会话:
msg="allocate a new session-0006a627"

并且在路由策略设置中找到了匹配项
msg="Match policy routing id=2136539137: to 10.1.7.2 via ifindex-110"

结果发现数据包需要发送到 VPN 隧道之一:
"find a route: flag=04000000 gw-192.168.254.1 via DC-Ph1-1"

在防火墙策略中检测到以下允许规则:
msg="Allowed by Policy-3:"

数据包被加密并发送到 VPN 隧道:
func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-DC-Ph1-1"
func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-DC-Ph1-1"
func=esp_output4 line=905 msg="IPsec encrypt/auth"

加密数据包将发送到此 WAN 接口的网关地址:
msg="send to 2.2.2.2 via intf-WAN1"

对于第二个数据包,一切发生类似,但它被发送到另一个 VPN 隧道并通过不同的防火墙端口离开:
func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-DC-Ph1-2"
func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-DC-Ph1-2"
func=esp_output4 line=905 msg="IPsec encrypt/auth"
func=ipsec_output_finish line=622 msg="send to 4.4.4.2 via intf-WAN2"

该解决方案的优点

可靠的功能和用户友好的界面。 SD-WAN 出现之前 FortiOS 中可用的功能集已被完全保留。也就是说,我们没有新开发的软件,而是来自经过验证的防火墙供应商的成熟系统。具有传统的网络功能集,方便易学的网络界面。例如,有多少 SD-WAN 供应商在终端设备上拥有远程访问 VPN 功能?

安全级别80。 FortiGate 是顶级防火墙解决方案之一。 互联网上有很多有关设置和管理防火墙的材料,并且在劳动力市场上有许多安全专家已经掌握了供应商的解决方案。

SD-WAN 功能零价格。 在 FortiGate 上构建 SD-WAN 网络的成本与在其上构建常规 WAN 网络的成本相同,因为不需要额外的许可证即可实现 SD-WAN 功能。

进入门槛低。 Fortigate 针对不同性能级别提供了良好的设备分级。最年轻、最便宜的型号非常适合扩大办公室或销售点,例如容纳 3-5 名员工。许多供应商根本没有如此低性能且价格实惠的型号。

高性能。 通过将 SD-WAN 功能减少到流量平衡,该公司可以发布专门的 SD-WAN ASIC,因此 SD-WAN 操作不会降低整个防火墙的性能。

能够在 Fortinet 设备上实施整个办公室。 它们是一对防火墙、交换机、Wi-Fi 接入点。 这样的办公室管理起来既简单又方便——交换机和接入点在防火墙上注册并通过它们进行管理。 例如,从控制该交换机的防火墙接口来看,交换机端口可能如下所示:

最民主的 SD-WAN 分析:架构、配置、管理和陷阱

缺乏控制器作为单点故障。 供应商本身也关注这一点,但这只能被称为部分好处,因为对于那些拥有控制器的供应商来说,确保其容错能力的成本并不高,通常是以虚拟化环境中少量计算资源为代价的。

该寻找什么

控制平面和数据平面之间没有分离。 这意味着必须手动或使用现有的传统管理工具 - FortiManager 配置网络。 对于实施这种分离的供应商来说,网络是自行组装的。 管理员可能只需要调整其拓扑,禁止某处的某些内容,仅此而已。 然而,FortiManager的王牌在于它不仅可以管理防火墙,还可以管理交换机和Wi-Fi接入点,即几乎整个网络。

有条件增加可控性。 由于传统工具用于自动化网络配置,因此随着 SD-WAN 的引入,网络可管理性略有增加。另一方面,新功能的可用速度更快,因为供应商首先仅针对防火墙操作系统发布新功能(这可以立即使用它),然后才为管理系统补充必要的接口。

某些功能可以通过命令行使用,但不能通过 Web 界面使用。 有时进入命令行进行配置并不那么可怕,但在 Web 界面中看不到有人已经通过命令行配置了某些内容才可怕。 但这通常适用于最新的功能,并且随着 FortiOS 的更新,Web 界面的功能逐渐得到改进。

谁适合

对于那些没有很多分支机构的人。 在包含 8-10 个分支机构的网络上实施具有复杂中心组件的 SD-WAN 解决方案可能不会花费太多 - 您将不得不花钱购买 SD-WAN 设备和虚拟化系统资源的许可证来托管中心组件。 小公司通常拥有有限的免费计算资源。 对于 Fortinet 来说,只需购买防火墙就足够了。

对于那些有很多小树枝的人。 对于许多供应商来说,每个分支机构的最低解决方案价格相当高,从最终客户业务的角度来看可能并不有趣。 Fortinet 以极具吸引力的价格提供小型设备。

对于那些还没有准备好走得太远的人。 对于某些客户来说,使用控制器、专有路由以及新的网络规划和管理方法实施 SD-WAN 可能是一个太大的步骤。是的,这样的实施最终将有助于优化沟通渠道的使用和管理员的工作,但首先您必须学习很多新东西。对于那些尚未准备好进行范式转变,但希望从沟通渠道中挤出更多内容的人来说,Fortinet 的解决方案恰到好处。

来源: habr.com

添加评论