1. 华林优配

      一文学会顺利获得centOS搭建openVPN

      • 时间 :2023-12-21
      • 作者 :华林优配科技
      • 浏览数 :3597

      1: 环境

      服务器系统:CentOS Linux release 7.9.2009 (Core)

      服务器配置:不重要

      服务器IP:

      Openvpn服务器:

      外网:124.70.49.106

      内网:192.168.0.155

      内网测试服务器:192.168.0.21

      openvpn客户端服务器网段:172.16.16.0/24

      OpenVpn版本:2.5.6

      easy-rsa版本:3.0.8

      安装包存放的路径:/tmp/install/

      程序安装目录:/data/openvpn

      备注:

      root# 代表在root用户下执行的命令

      $ 代表是在普通用户下执行的命令

      # 单个#号代表注释


      2:安装步骤

      2.1 准备工作

      (以下所有操作均在Openvpn服务器操作)

      # 关闭防火墙

      root# systemctl stop firewalld

      root# systemctl disable firewalld


      # 关闭selinux

      root# sed -i 's/enforcing/disabled/' /etc/selinux/config

      root# setenforce 0



      # 安装依赖

      root# yum install -y vim wget lrzsz gcc-c++ openssl openssl-devel net-tools lzo lzo-devel pam pam-devel


      # 下载安装包

      root# mkdir /tmp/install

      root# cd /tmp/install

      root# wget http://swupdate.openvpn.org/community/releases/openvpn-2.5.6.tar.gz

      root# wget http://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz



      2.2 安装OpenVpn和EasyRSA

      #1)安装OpenVpn

      root# cd /tmp/install


      #创建目录

      root# mkdir /data


      #解压缩

      root# tar -zxvf openvpn-2.5.6.tar.gz

      root# cd openvpn-2.5.6


      #--prefix= 后面路径是安装openvpn到那个文件路径下

      root# ./configure --prefix=/data/openvpn/


      #编译

      root# make && make install

      #添加openvpn的环境变量

      root# echo -e "PATH=\$PATH:/data/openvpn/sbin" >/etc/profile.d/openvpn256.sh


      #加载环境变量

      root# source /etc/profile


      #执行下面的命令看看是否成功,出现以下内容表示成功

      root# openvpn --version

      OpenVPN 2.5.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on May 5 2022


      #2)安装EasyRSA

      root# cd /tmp/install

      root# tar -zxvf EasyRSA-3.0.8.tgz

      root# mv EasyRSA-3.0.8 /data/EasyRSA



      2.3 服务端配置

      2.3.1 准备CA签发组织环境

      #拷贝EasyRSA

      root# cp -r /data/EasyRSA /data/openvpn/easy-rsa-server

      root# cd /data/openvpn/easy-rsa-server


      #准备签发证书的默认变量文件

      root# egrep -v "^$|^#" vars.example >vars

      #编辑vars文件,在最后一行增加以下内容

      root# vim vars

      #添加参数,设置CA证书有效期为100年(日期可以你自己决定设置多长)

      set_var EASYRSA_CA_EXPIRE 36500

      #添加参数,设置服务器证书为10年

      set_var EASYRSA_CERT_EXPIRE 3650



      2.3.2 创建CA组织与服务器证书

      #1)创建CA组织

      root# cd /data/openvpn/easy-rsa-server


      #初始化,执行此命令会生成pki目录

      root# ./easyrsa init-pki


      #创建CA组织,nopass代表不需要密码的意思

      root# ./easyrsa build-ca nopass


      #这里是CA组织的名称,我这边使用的是CATEST,这个名字可以用默认的也可以你自己输入

      Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CATEST


      #执行创建ca组织成功的话,会出现下面的这个ca.crt文件

      Your new CA certificate file for publishing is at:

      /data/openvpn/easy-rsa-server/pki/ca.crt


      #CA证书文件

      root# ls -l /data/openvpn/easy-rsa-server/pki/ca.crt

      -rw------- 1 root root 1151 May 5 09:56 /data/openvpn/easy-rsa-server/pki/ca.crt


      #CA秘钥文件

      root# ls -l /data/openvpn/easy-rsa-server/pki/private/ca.key

      -rw------- 1 root root 1679 May 5 09:56 /data/openvpn/easy-rsa-server/pki/private/ca.key


      #2)创建服务端证书

      root# cd /data/openvpn/easy-rsa-server

      #创建服务端证书申请文件,openvpnserver为了区别参数标识,我这里设置为openvpnserver,如果你自己安装的话可以使用默认的server 这个名称

      root# ./easyrsa gen-req openvpnserver nopass


      #默认回车就行

      Common Name (eg: your user, host, or server name) [openvpnserver]:

      Keypair and certificate request completed. Your files are:


      #请求文件

      req: /data/openvpn/easy-rsa-server/pki/reqs/openvpnserver.req


      #私钥文件

      key: /data/openvpn/easy-rsa-server/pki/private/openvpnserver.key


      #3)签发服务端证书

      root# cd /data/openvpn/easy-rsa-server

      #这里的server是代表服务端意思,openvpnserver这个是上面我们创建的服务端证书的名称

      root# ./easyrsa sign server openvpnserver


      #输入yes

      Type the word 'yes' to continue, or any other input to abort.

      Confirm request details: yes


      #服务端的证书文件

      Certificate created at: /data/openvpn/easy-rsa-server/pki/issued/openvpnserver.crt

      #4)创建交互秘钥

      root# cd /data/openvpn/easy-rsa-server

      root# ./easyrsa gen-dh

      DH parameters of size 2048 created at /data/openvpn/easy-rsa-server/pki/dh.pem

      #5) 启用安全增强配置

      root# cd /data/openvpn/easy-rsa-server

      root# openvpn --genkey tls-auth ta.key


      2.3.3 OpenVPN服务端配置

      #创建openvpn用户

      root# groupadd openvpn

      root# useradd -M -s /sbin/nologin -g openvpn openvpn

      # 创建证书存放目录

      root# mkdir /data/openvpn/certificate

      # 创建日志存放目录

      root# mkdir /data/openvpn/logs

      root# chown openvpn. /data/openvpn/logs


      # 将服务端证书秘钥和交互秘钥复制到certificate目录

      root# cp /data/openvpn/easy-rsa-server/pki/ca.crt /data/openvpn/certificate/

      root# cp /data/openvpn/easy-rsa-server/pki/issued/openvpnserver.crt /data/openvpn/certificate/

      root# cp /data/openvpn/easy-rsa-server/pki/private/openvpnserver.key /data/openvpn/certificate/

      root# cp /data/openvpn/easy-rsa-server/pki/dh.pem /data/openvpn/certificate/

      root# cp /data/openvpn/easy-rsa-server/ta.key /data/openvpn/certificate/

      #添加配置文件

      root# cd /data/openvpn/

      root# vim /data/openvpn/server.conf


      #__server.conf—stat___

      #端口

      port 1194

      #协议

      proto tcp

      dev tun

      #ca证书文件

      ca /data/openvpn/certificate/ca.crt

      #服务端证书文件

      cert /data/openvpn/certificate/openvpnserver.crt

      #服务端私钥文件

      key /data/openvpn/certificate/openvpnserver.key

      #交换秘钥文件

      dh /data/openvpn/certificate/dh.pem

      #安全增强文件,0是服务端,1是客户端

      tls-auth /data/openvpn/certificate/ta.key 0

      #分配客户端IP的网段,不能和服务器一个网段,不能冲突

      server 10.8.0.0 255.255.255.0

      #运行通讯的内网路由,可以多条

      push "route 192.168.0.0 255.255.255.0"

      #会话检测,每十秒测试一下,超过120秒没回应就认为对方down

      keepalive 10 120

      #加密算法

      cipher AES-256-CBC

      #压缩算法

      compress lz4-v2

      #推送客户端使用lz4-v2算法

      push "compress lz4-v2"

      #最大客户端数

      max-clients 100

      #运行openvpn的用户和用户组

      user openvpn

      group openvpn

      #权限检测

      persist-tun

      persist-key

      #状态日志

      status /data/openvpn/logs/openvpn-status.log

      log-append /data/openvpn/logs/openvpn.log

      #日志级别

      verb 3

      mute 20

      #__server.conf—end___


      #内核转发规则

      root# echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf

      root# sysctl -p

      #iptablesNAT规则

      #这里的ip就是server.conf 中的server 10.8.0.0 255.255.255.0 ;添加转发规则到开机启动项

      root# echo 'iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE' >> /etc/rc.d/rc.local

      root# chmod +x /etc/rc.d/rc.local

      root# /etc/rc.d/rc.local


      2.3.4 启动OpenVPN

      # 创建启动文件

      root# vim /etc/systemd/system/openvpn.service(以下内容直接复制粘贴即可)

      [Unit]

      Description=OpenVPN Server

      After=network.target

      After=syslog.target

      [Install]

      WantedBy=multi-user.target

      [Service]

      ExecStart=/data/openvpn/sbin/openvpn --config /data/openvpn/server.conf


      #加载系统服务

      root# systemctl daemon-reload

      #开机启动

      root# systemctl enable openvpn.service

      #启动服务

      root# systemctl start openvpn.service

      #查看服务运行状态

      root# systemctl status openvpn.service


      2.4 客户端文件配置

      2.4.1 准备客户端证书

      #1)创建客户端申请证书

      root# cp -r /data/EasyRSA /data/openvpn/easy-rsa-client

      root# cd /data/openvpn/easy-rsa-client


      #初始化,执行此命令会生成pki目录

      root# ./easyrsa init-pki


      #创建客户端申请证书,我这里用的是名字全拼

      root# ./easyrsa gen-req zhangsan nopass(后续创建新证书也必须回到/data/openvpn/easy-rsa-client的目录下创建)


      #直接回车就行

      Common Name (eg: your user, host, or server name) [zhangsan]:

      req: /data/openvpn/easy-rsa-client/pki/reqs/zhangsan.req

      key: /data/openvpn/easy-rsa-client/pki/private/zhangsan.key


      #2)服务端签发证书

      root# cd /data/openvpn/easy-rsa-server


      #将客户端证书复制到CA工作目录

      root# ./easyrsa import-req /data/openvpn/easy-rsa-client/pki/reqs/zhangsan.req zhangsan


      #设置客户端证书有效期,我这里设置的是90天

      root# sed -i "s/set_var EASYRSA_CERT_EXPIRE.*$/set_var EASYRSA_CERT_EXPIRE\t90/g" ./vars


      #签发证书

      root# ./easyrsa sign client zhangsan


      #输入yes

      Type the word 'yes' to continue, or any other input to abort.

      Confirm request details:yes


      #生成的证书

      Certificate created at: /data/openvpn/easy-rsa-server/pki/issued/zhangsan.crt


      2.4.2 准备客户端配置文件

      #创建存放目录

      root# mkdir /data/openvpn/client/


      #创建张三证书存放的目录

      root# mkdir /data/openvpn/client/zhangsan


      #复制证书

      root# find /data/openvpn/ \( -name "zhangsan.key" -o -name "zhangsan.crt" -o -name "ca.crt" -o -name "ta.key" \) -exec cp {} /data/openvpn/client/zhangsan \;


      #配置客户端文件

      root# vim /data/openvpn/client/zhangsan/client.ovpn

      client

      dev tun

      proto tcp

      remote 124.70.49.106 1194

      resolv-retry infinite

      nobind

      ca ca.crt

      cert zhangsan.crt

      key zhangsan.key

      remote-cert-tls server

      tls-auth ta.key 1

      cipher AES-256-CBC

      verb 3

      compress lz4-v2


      2.5 测试

      #将证书下载下来

      root# cd /data/openvpn/client/

      root# tar -zcvf zhangsan.tar.gz zhangsan

      root# sz zhangsan.tar.gz

      这里截图为自己电脑通scp把证书等文件下载到自己电脑


      image.png


      image.png


      #win10 安装客户端(这里不演示了)

      http://swupdate.openvpn.org/community/releases/openvpn-install-2.4.5-I601.exe

      #将 zhangsan.tar.gz 复制到 openvpn的config目录,然后点击链接

      联系我们
      联系我们

      华林优配Baimatech,集M2M产品研发、IoT平台服务、国际化运营于一体,让我们联接,共创未来