VPN服务器搭建
2023年11月11日
136
各位处在Linux运维潮流中的大佬们,文章不才,在这里特此分享一套VPN服务器搭建的流程及使用分享。 每个公司都或多或少的进行远程办公,有的公司会采用向日葵orTeamviewer也或者是ngrok、灰鸽子等内网穿透软件,这些软件大都进行收费、限速、无法本地连接公司电脑。为了避免这种情况的发生,合理利用公司的网络带宽、实现远程办公,本地直通公司网络,每个工程师会给公司搭建一套VPN来实现人员的要求。

image.png

各位处在Linux运维潮流中的大佬们,文章不才,在这里特此分享一套VPN服务器搭建的流程及使用分享。 每个公司都或多或少的进行远程办公,有的公司会采用向日葵orTeamviewer也或者是ngrok灰鸽子等内网穿透软件,这些软件大都进行收费、限速、无法本地连接公司电脑。为了避免这种情况的发生,合理利用公司的网络带宽、实现远程办公,本地直通公司网络,每个工程师会给公司搭建一套VPN来实现人员的要求。VPN的方式有很多种,像ike、pptp、l2tp等都可以作为选择,这里我给大家分享一下OpenVPN的搭建。 首先,我们需要准备一台自己的服务器,如果使用的人非常多建议将配置提高一下来承载压力,我们先来准备一下运行环境。

openvpn运行环境

系统版本
centos77.7.1908
OpenVPN2.4.8
mysql/mariadb-server5.5.64
easyrsa3.0.6

有了前提准备,还要继续了解到OpenVPN并不在CentOS-Base源中,而是在扩展源epel中,有了这些信息那我们接下来开始正式安装,let's go!

  • 安装 epel、openvpn、mariadb-server 数据库软件

image.png

在执行完上述操作后,整个系统就已经完成了30%了,要让它正常工作还需要对它进行一下设置。在使用OpenVPN的原因就是他可以保证每个客户端使用自己的证书和服务器来建立连接(非强制)、还可以控制客户端之间能否进行通信、使用隧道模式or桥接模式、dh加密等。客户端和服务器之间的第一道安全就是证书,如果加上dh加密,那更加安全。下面我们来生成证书。 easyrsa是一个封装的openssl工具,通过几个简单命令就可以生成证书,简化了openssl的操作复杂性,这个程序可以在github上下载下来也可以使用epel源中的,这里我使用的是github上的,首先下载 easyrsa 生成证书,这里用的是3.0.6的版。

image.png

创建 CA 根证书

  • 创建证书需要将公司的信息写到配置文件里面,easyrsa默认会读取vars中的内容并利用这些内容生成CA证书

    image.png

  • 接下来需要对工作目录进行初始化,正式创建证书(瞪大眼睛,千万不要走神)

    image.png

  • 创建服务器端证书(证书无密码)

    image.png

  • 使用CA对服务器端的证书进行签名

    image.png

  • 创建 dh 秘钥(耗时稍微长一些)

    image.png

准备好证书后就可以生成我们的配置文件,由于服务器端的证书没有添加密码,所以不需要添加额外配置。准备好的配置文件如下:
  • image.png

  • 准备好配置文件就可以启动这个服务了,但在启动之前还需要将服务器的内核转发功能打开,这个功能如果不打开,VPN流量是无法到达目标服务器,拨VPN之后只能和VPN服务器进行通信;OpenVPN还依赖firewalld来实现地址路由,由于开启了防火墙在对外提供服务的时候需要允许openvpn的流量进入

  • image.png

添加了这些规则我们来看一下配置是否正确,需不需要再添加额外的规则

image.png

  • 将证书文件放在openvpn配置目录中

    image.png

  • 启动我们的VPN服务

    image.png

使用 mysql 数据库做用户名密码认证
  • 直接安装下面这个软件

    image.png

  • 准备PAM认证文件

    image.png

  • 创建数据库、表、添加用户

    image.png

  • 测试认证是否通过

  • image.png

  • 客户端配置

  • 生成客户端证书

    image.png

  • 用CA证书对客户端证书进行签名,只有签名证书客户端才能使用证书登录 vpn

    image.png

  • 准备配置文件

    image.png

通过以上的步骤和操作,相信你已经可以使用了。如果还是不行,千万不要放弃,文章中已经把该详细说的关键的全部标注出来了,请认真阅读一下。有任何问题可以进行评论留言。