博客 > 硬件&操作系统
# Ubuntu 18.04+ 安装和维护 OpenVPN > 建议多考虑一下使用docker,本文未使用。 ## 步骤一:跟着教程走完安装 - 这个教程总共有12个大步骤(12个主要章节),其中所有没标Optional(可选)的大步骤**都是必须做的**,别省任何一步。它里面必选和可选是交替出现的,所以别看到一个可选就停止往下看了,下面还有其他必须做的。 - 一定注意这个教程的Prerequisites(先决条件)章节,这里面是有干货的,讲了把OpenVPN服务器和CA签名服务器分离开的架构设计。如果你觉得安全性不那么重要,可以直接使用同一个服务器,同一个EasyRSA工具包,不过就是要把教程里导入导出、在两个服务器间传输秘钥之类的步骤省去,自己跳一点步骤,相信熟悉Linux命令行的你一定没有问题。其实分离开确实看起来非常牛逼,但是在接下来的维护中,尤其是自动化中,会搞出一些麻烦。建议非必要不分离。 - 教程里生成客户端连接配置(`.ovpn`文件)时的脚本,记得要看懂cat之前的部分,把路径改成你自己正确的路径,最好在脚本开头加一个判断arg1为空的逻辑: ```bash if [ $# -eq 0 ] || [ "$1" == "" ]; then echo "No arguments" exit 1 fi ``` - 教程的最后一章是介绍证书吊销的,建议在开服的时候就预先生成一个吊销文件,然后写到`server.conf`里,这样以后真的有需要吊销的证书时,就可以不动配置文件了。 别看步骤多,按部就班跟下来就没有问题!(当然还是要注意根据你自己的情况替换文件名、目录名之类的,还有nano可以换成vim) ### 做法 跟着教程走就完事: - 原文:<https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-18-04> - 译文1:<https://www.howtoing.com/how-to-set-up-an-openvpn-server-on-ubuntu-18-04> - 译文2:<https://www.gobeta.net/posts/how-to-set-up-an-openvpn-server-on-ubuntu-18-04/> ## 步骤二:打开单证书共用模式 OpenVPN默认是一个连接设备一个证书,但是生成不是特别自动化,有时候会显得麻烦。 **建议给需要较高安全性的连接配置使用单独证书!不要混用证书!连接人员经常变动(比如给员工用)也别混用证书,否则任何人员离职都需要吊销证书,全体更新。** 但是**安全性要求没有特别特别高,并且不常变动连接人员和连接位置的连接配置,就可以打开共用模式**。这样也方便控制证书管理的粒度。比如一个项目组的一个版本开发期间,组内所有的开发机器可以使用同一个证书,开发结束后证书失效;每名员工只产生一个证书,如果这名员工有多台设备需要连VPN,这难道也需要发多个证书吗?总之打开共用模式就是要**把发证书、使用证书、吊销证书、更新证书这几件事平衡起来**,不需要死命地发证书了。 ### 做法 `server.conf`里,激活`duplicate-cn`(如果没有就加一行) ## 步骤三:打开客户端互访 OpenVPN默认只支持C<->S的访问,不支持同局域网内C<->C,那我搭局域网还有啥用? ### 做法 `server.conf`里,激活`client-to-client`(如果没有就加一行) ## 后续的增强步骤 ### 证书和配置的自动化脚手架 本步骤要达成以下目的: 1. 给新的人员或设备开户时,根据给定的名称一键式自动生成和签名新证书,自动导出连接配置,然后轻松地分发给这个人员或设备 2. 根据给定的名称一键式吊销一个(或多个)证书 鉴于如果将CA和OpenVPN二服分离,中间会涉及到网络传输和触发信号的问题,可能CA服务器要通过消息队列或者触发器来响应一次证书签名,这个设计过于定制化,而且我本来也没有这么去分离开两个服务器,所以暂时不考虑。 ### 实时状态监控和管理 使用管理界面(management interface):在`server.conf`里添加`management localhost <port>`,然后`telnet localhost <port>`,里面有大量的运行中操作。 当然也可以简单查看活跃的客户端连接:`cat /var/log/openvpn/openvpn-status.log` ### 静态IP ### 组网 ### 管理员UI