Windows OpenVPN的安装之服务器自动启动连接

简介

OpenVPN 不管是服务器还是客户端,都是安装相同的软件。仅仅是配置时,采用哪个配置文件的问题。它带了两个配置文件的例子,一个是 client.ovpn,一个是 server.ovpn。直接拿过来修改就好了。具体如何配置,请看本博客之前的文章。

这里描述的是 Windows 上面安装 OpenVPN。

正常安装完成后,它有个 GUI,会在任务栏产生一个图标。鼠标右键点图标,会有菜单。选择菜单里面的【连接】,OpenVPN 开始执行连接操作。

对于服务器来说,同样需要点这个【连接】菜单,才算启动了服务器。然后客户端才可以连接过来。也就是说,需要操作者登录 Windows 桌面,去点那个菜单。

如何自动启动

那么,如何自动启动这个连接,不需要操作者去点菜单?网上查到的资料很简单,说是把配置文件放到 config-auto 文件夹底下。

我这样做了,没有任何效果。

首先,我做好了一个配置文件,放到 config 目录底下,然后鼠标去点【连接】菜单,连接建立正常,没有任何问题。

然后,我把这个配置,放到 config-auto 目录下,重新启动电脑,然后测试发现,连接并没有建立。

网上查了一堆资料,各种说法都有,但都不对。其实这里有个概念的问题,网上大多没说清楚,只说操作。然后按照这些操作做,还是不行。

概念

OpenVPN 安装以后,在 Windows 的服务器里面,有一个服务,名为:OpenVPNService。这个去 Windows 的服务里面查看,应该能看到。这个服务应该是设置为自动启动的。

然后,这个服务,它是从 config-auto 里面查配置文件的。并且,配置文件的名字不重要,任何名字都行,只要它是 xxx.ovpn 这样的后缀名。

我遇到的问题

因为一开始并不明白这个概念,检查了 Windows 系统,有这个 OpenVPNService 服务,并且这个服务确实已经运行了,而且又在 config-auto 目录下放了配置文件,还是不行。并且,这个配置文件是放在 config 目录下,点菜单建立连接,能够正常工作的配置文件。所以我只能乱猜,以为是需要这个配置文件的文件名需要让 Service 知道,需要配置,又不知道去哪里配置。

问题的解决

后面发现,在 OpenVPN 的安装目录底下有一个 log 目录。这个目录底下有 xxx.log 文件。这个 xxx 就是配置文件的名字。如果曾经有个多个不同名字的配置文件,这里就有多个 xxx.log 文件。

打开对应的 log 文件发现一个错误提示:

DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305)

拿这个错误提示去问 ChatGPT,它说应该是:

配置文件里面有一行:cipher AES-256-CBC,应该改为:

data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
data-ciphers-fallback AES-256-CBC

看起来合理。用上述两行去替换掉原来的那一行,重启服务。结果,仍然不行。再看 log,发现问题似乎和那个 fallback 有关。

去掉第二行(有 fallback 那一行),重启服务,好了!

总结:

  1. 概念:OpenVPN 安装了一个服务叫做 OpenVPNService,可以在 Windows 系统的服务里面看到;这个服务需要的配置文件放在 config-auto 目录下;配置文件的名称可以是任意文件名,后缀是 .ovpn 就说明它是 OpenVPN 的配置文件。

  2. 如果上述两个条件(1. 服务自动运行;2. 配置文件在正确目录下),仍然不行,应该去看 log 目录底下的 log 文件,看看问题在哪里。

  3. 关于那个 cipher 的问题:这一行是OpenVPN 安装后附带的例子配置文件带来的。但它是不正确的。不知道为何在 GUI 模式下点菜单启动时没问题。

相关推荐
Hacker_Oldv3 分钟前
WPS 认证机制
运维·服务器·wps
bitcsljl11 分钟前
Linux 命令行快捷键
linux·运维·服务器
ac.char14 分钟前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu
Youkiup41 分钟前
【linux 常用命令】
linux·运维·服务器
qq_297504611 小时前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i1 小时前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_437398211 小时前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~1 小时前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
上海运维Q先生1 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes