You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OCServ与OpenConnect连接时DTLS握手失败问题求助

解决OCServ DTLS握手失败问题

排查与修复步骤

结合你的配置和报错信息,按以下步骤逐一解决问题:

1. 确认UDP端口连通性

DTLS依赖UDP传输,先确保服务器UDP 443端口对外开放:

  • 检查服务器防火墙规则:
    ufw status
    # 或用iptables
    iptables -L -n | grep 443
    
    若没有UDP 443的允许规则,添加规则:
    ufw allow 443/udp
    
  • 在客户端测试UDP连通性:
    nc -u YOUR_SERVER_IP 443
    
    输入内容后无报错,说明UDP通路正常;若连接失败,先解决网络连通问题。

2. 调整DTLS相关配置

你的配置中开启了dtls-legacy = true,这是为兼容老旧客户端设计的,现代OpenConnect客户端可能因此出现握手冲突:

  • 编辑/etc/ocserv/ocserv.conf,将dtls-legacy = true改为dtls-legacy = false,或直接注释该行。
  • 可选:添加DTLS优先级配置,排除旧版本协议:
    dtls-priorities = "NORMAL:-VERS-DTLS1.0"
    
  • 简化TLS优先级配置,减少兼容性冲突:
    将原tls-priorities修改为:
    tls-priorities = "NORMAL:-VERS-SSL3.0:-ARCFOUR-128"
    

修改完成后重启OCServ:

systemctl restart ocserv

3. 扩大UDP缓冲区

报错中的"Resource temporarily unavailable"可能是服务器UDP缓冲区不足导致的,调整内核参数:

  • 临时生效:
    sysctl -w net.core.rmem_max=16777216
    sysctl -w net.core.wmem_max=16777216
    
  • 永久生效:编辑/etc/sysctl.conf,添加以下两行:
    net.core.rmem_max=16777216
    net.core.wmem_max=16777216
    
    执行sysctl -p加载新配置。

4. 临时禁用DTLS验证

在客户端连接时尝试禁用DTLS,验证问题是否出在DTLS协商环节:

openconnect --no-dtls YOUR_SERVER_IP

若不再报错,说明问题确实源于DTLS配置,回到前面的步骤优化配置即可。

5. 升级OCServ版本

旧版本OCServ可能存在DTLS相关bug,升级到最新版本:

sudo apt update && sudo apt upgrade ocserv

配置文件的其他优化点

你的配置中default-domain = SERVER_IP应替换为实际的服务器IP或域名,虽不会导致DTLS报错,但建议修正以避免潜在问题。

内容的提问来源于stack exchange,提问作者danial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:25:55