问题症状
环境:Ubuntu 16.04 x64
版本:OCServ 0.10.11-1build1
今日重置了阿里云 ECS 后,选择从 APT 源直接安装 OCServ 而非从官网手动下载安装,随后便发生了一些诡异事情。
service ocserv start
所启动的 OCServ 服务在 IPv4 网络中进行连接时,尽管网络状态良好,仍然回退到了 TLS 链路。而使用 ocserv
命令直接启动服务却能正常建立 DTLS 连接。
使用 lsof -i:443
检查 443 号端口监听状态时发现,前者会由 systemd
与 ocserv-main
共四个进程监听 IPv6 协议类型上的 443 号端口的 UDP/TCP,而后者由 ocserv
共两个进程监听 IPv4 协议类型上的 443 号端口的 UDP/TCP。
查看 /etc/init.d/ocserv
文件发现,OCserv Daemon 在启动时会正确调用位于 /etc/ocserv/ocserv.conf
的配置文件,但却没有根据配置文件中的设定进行监听。
解决方案-1" style="margin: 24px 0px 16px; padding: 0px 0px 0.3em; box-sizing: border-box; line-height: 1.25; color: rgb(36, 41, 46); font-family: Consolas, "liberation mono", Menlo, Monaco, "noto serif sc", serif; letter-spacing: 0.1px; text-wrap: wrap; background-color: rgb(255, 255, 255);">解决方案 1
早在 2016 年便有人指出这个缺陷(现已修复),而阿里云 APT 源中的包版本较老,所以没有修复此问题。
Try to go to “/lib/systemd/system/” and modify the file of “ocserv.service”,
1.use vim to change two lines,
2.Remove the line of “Requires=ocserv.socket”
3.Remove the line of “Also=ocserv.socket”
4.save the file,
execute “systemctl daemon-reload”,
then reload the service “service ocserv start”
编辑
/lib/systemd/system/ocserv.service
,移除Requires=ocserv.socket
和Also=ocserv.socket
重新加载 Systemd 配置文件:执行
systemctl daemon-reload
重启 OCServ 服务:执行
service ocserv start
服务重启后,DTLS 连接可以正常建立,且未与 OpenVZ-BBR 冲突,至此问题得到了完美解决。
解决方案 2
使用 apt remove ocserv
移除旧版本的 OCServ,从 OCServ 项目官网 下载最新版本的 OCServ,然后手动安装。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8652.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~