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 模式下点菜单启动时没问题。

相关推荐
wanhengidc2 小时前
当云手机出现卡顿怎么办?
运维·服务器·安全·智能手机
寻道模式6 小时前
【运维心得】三步10分钟拆装笔记本键盘
运维·计算机外设·笔记本
元清加油6 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
炫友呀7 小时前
Centos 更新/修改宝塔版本
linux·运维·centos
闻道且行之7 小时前
嵌入式|VNC实现开发板远程Debian桌面
运维·debian·嵌入式
向日葵.8 小时前
fastdds.ignore_local_endpoints 属性
服务器·网络·php
IT成长日记8 小时前
【自动化运维神器Ansible】Playbook中的when条件判断:精细化控制任务执行
运维·自动化·ansible·playbook·when·条件判断
昵称为空C10 小时前
SpringBoot接口限流的常用方案
服务器·spring boot
Peter_Deng.11 小时前
Linux 下基于 TCP 的 C 语言客户端/服务器通信详解(三个示例逐步进阶)
服务器·c语言·网络
杭州泽沃电子科技有限公司12 小时前
告别翻山越岭!智能监拍远程守护输电线路安全
运维·人工智能·科技·安全