DTLS
2025/10/29大约 1 分钟
DTLS
默认配置下,SSL VPN 使用 TCP 来封装 TLS,当 SSL VPN 封装的业务数据为 TCP 时,就形成了 TCP-in-TCP 流量。这种情况下性能可能比预期的要慢。
Datagram Transport Layer Security (DTLS) 允许 SSL VPN 使用 TLS 加密流量,并使用 UDP 作为传输层,而不是 TCP。DTLS 具有与 SSL 相同的安全性,但使用 UDP 而不是 TCP。这可以显著提高性能,避免了在 TCP-in-TCP 中可能发生的重传问题。
配置步骤
FortiGate
通过如下 CLI 开启 SSL VPN 的 DTLS。
config vpn ssl settings
set dtls-tunnel enable
endFortiClient
对应的 FortiClient 也需要开启 DTLS 功能。
重要
如果 FortiClient 连接到了 EMS Server,这里的配置是无法修改的,需要管理员在 EMS Server 端进行修改。如果 FortiClient 未连接 EMS Server,或使用的是 FortiClient VPN only 版本,需要点击 FortiClient 界面的🔒图标解锁后,才可以继续配置。

- 开启“Preferred DTLS Tunnel”:FortiClient 将在 FortiGate 上启用并成功建立隧道时使用 DTLS。如果在 FortiGate 上未启用或隧道建立不成功,则使用 TLS。DTLS 隧道使用 UDP 而不是 TCP,可以提高 VPN 的吞吐量。
- 关闭“Preferred DTLS Tunnel”:当禁用时,FortiClient 将使用 TLS,即使在 FortiGate 上启用了 DTLS。
结果验证
FortiClient 连接 FortiGate 的 SSL VPN 服务,查看 FortiGate 的 sslvpnd 进程 debug 信息,可以看到 SSL VPN 连接使用 DTLS 建立。
[321:root:5]DTLS established: DTLSv1 ECDHE-RSA-AES256-GCM-SHA384 from 192.168.100.110抓包查看 SSL VPN 协商与业务流量,可以看到 SSL VPN 协商与后续业务流量均使用 DTLS 封装。
