ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

centos7.5安装openvpn2.4.6

2019-05-29 15:53:59  阅读:928  来源: 互联网

标签:openvpn2.4 rsa easyrsa3 etc client easy openvpn 安装 centos7.5


  • 关闭默认防火墙

    • systemctl stop firewalld.service 
      systemctl disable firewalld.service 
      
  • 安装iptables(即便是centos7以上系统防火墙是fireword也同样需要安装设置iptables)

    • yum install -y iptables
      
  • 升级iptables

    • yum update iptables 
      
  • 安装iptables-services

    • yum install -y iptables-services
      
  • 设置开机启动

    • systemctl enable iptables
      
  • 启动

    • systemctl start iptables
      
  • 清空所有默认规则

    • iptables -F
      
  • 清空所有自定义规则

    • iptables -X
      
  • 配置openvpn的nat功能,将10.81.22.0网段(当前内网网段)(不加-s 10.81.22.0–>ip/16–>i子网掩码就表示所有网段)的包转发到ens32–>i网卡名称口

    • iptables -t nat -A POSTROUTING -s 10.81.22.0/16 -o ens32 -j MASQUERADE
      
  • 添加FORWARD白名单

    • iptables -A FORWARD -i tun+ -j ACCEPT
      
  • 保存iptables配置

    • service iptables save
      
  • 重启iptables

    • service iptables restart
      
  • vim /etc/sysctl.conf

    • 添加下列代码至文件末尾
      net.ipv4.ip_forward = 1
      
  • vim /etc/sysctl.d/99-sysctl.conf

    • 添加下列代码至文件末尾
      net.ipv4.ip_forward = 1
      
  • sysctl -p

  • 为vpn安装openvpn及所有所需软件

    • 安装EPEL仓库

      • wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
        
      • rpm -Uvh epel-release-6-8.noarch.rpm
        
    • 安装openvpn

      • yum install openvpn
        
    • 安装openvpn最新的easy-rsa,该包用来制作ca证书,服务端证书,客户端证书。最新的为easy-rsa3

      • wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
        
      • unzip master.zip
        
    • 将解压得到的文件夹easy-rsa-master重命名为easy-rsa

      • mv easy-rsa-mater/ easy-rsa/
        
      • 然后将的到的easy-ras文件夹复制到/etc/openvpn/目录下

        • cp -R easy-rsa/ /etc/openvpn/
          
  • 编辑vars文件,根据自己环境配置

    • 先进入/etc/openvpn/easy-rsa/easyrsa3目录

      • cp /etc/openvpn/easy-rsa/easyrsa3/
        
    • 复制vars.example 为vars

      • cp vars.example vars
        
    • 修改下面字段,命令:vi vars,然后修改,最后wq保存

      • //根据自己情况更改
        set_var EASYRSA_REQ_COUNTRY     "CN"
        set_var EASYRSA_REQ_PROVINCE    "BJ"
        set_var EASYRSA_REQ_CITY        "BEIJING"
        set_var EASYRSA_REQ_ORG         "HUANQIU"
        set_var EASYRSA_REQ_EMAIL       "1274716901@qq.com"
        set_var EASYRSA_REQ_OU          "My OpenVPN"
        
  • 创建服务端证书及key

    • 进入/etc/openvpn/easy-rsa/easyrsa3/目录初始化

      • ./easyrsa init-pki
        
      • 在这里插入图片描述
    • 创建根证书

      • ./easyrsa build-ca
        
      • 在这里插入图片描述

        • 注意:在上述部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置个独一无二的。
    • 创建服务器端证书

      • ./easyrsa gen-req server nopass
        
      • 在这里插入图片描述

        • 注:该过程中需要输入common name,随意但是不要跟之前的根证书的一样
    • 签约服务端证书

      • ./easyrsa sign server server
        
      • 在这里插入图片描述

        • 注:该命令中.需要你确认生成,要输入yes,还需要你提供我们当时创建CA时候的密码。如果你忘记了密码,那你就重头开始再来一次吧。
    • 创建Diffie-Hellman,确保key穿越不安全网络的命令

      • ./easyrsa gen-dh
        
      • 在这里插入图片描述

  • 创建客户端证书

    • 进入root目录新建client文件夹,文件夹可随意命名,然后拷贝前面解压得到的easy-ras文件夹到client文件夹,进入下列目录

      • cd /root/
        mkdir client && cd client
        cp -R easy-rsa/ client/
        cd client/easy-rsa/easyrsa3/
        
    • 初始化

      • ./easyrsa init-pki
        
    • 创建客户端key及生成证书(记住生成是自己输入的密码)

      • ./easyrsa gen-req hywx //名字自己定义
        
      • 在这里插入图片描述

    • 将的到的hywx.req导入然后签约证书

      • 进入到/etc/openvpn/easy-rsa/easyrsa3/

        • cd /etc/openvpn/easy-rsa/easyrsa3/
          
      • 导入req

        • ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/hywx.req hywx
          
      • 签约证书

        • ./easyrsa sign client hywx
          
        • 在这里插入图片描述

          • 注:这里生成client所以必须为client,hywx要与之前导入名字一致
      • 这步很重要,现在说一下我们上面都生成了什么东西(如果文件不全重新执行以上步骤)

        • 服务端:(etc/openvpn/easy-rsa/文件夹)

          • /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
            /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
            /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/hywx.req
            /etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key
            /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key
            /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt
            /etc/openvpn/easy-rsa/easyrsa3/pki/issued/hywx.crt
            /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
            
        • 客户端:(root/client/easy-rsa文件夹)

          • /root/client/easy-rsa/easyrsa3/pki/private/hywx.key
            /root/client/easy-rsa/easyrsa3/pki/reqs/hywx.req //这个文件被我们导入到了服务端文件所以那里也有
            
        • 拷贝这些文件放入到相应位置。将下列文件放到/etc/openvpn/ 目录执行命令

          • cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn
            cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn
            cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn
            cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn
            
        • 将下列文件放到/root/client 目录下执行命令

          • cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client
            cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/hywx.crt /root/client
            cp /root/client/easy-rsa/easyrsa3/pki/private/hywx.key /root/client
            
  • 为服务端编写配置文件

    • 当你安装好了openvpn时候,他会提供一个server配置的文件例子,在/usr/share/doc/openvpn-2.4.6/sample/sample-config-files下会有一个server.conf文件,我们将这个文件复制到/etc/openvpn

      cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn
      

      然后修改配置vi server.conf如下

      #保留以下内容,其他均注释即可
      local 10.81.22.184  #本机ip
      port 1194
      proto tcp
      dev tun
      ca /etc/openvpn/ca.crt
      cert /etc/openvpn/server.crt
      key /etc/openvpn/server.key  # This file should be kept secret
      dh /etc/openvpn/dh.pem
      server 10.8.0.0 255.255.255.0
      ifconfig-pool-persist ipp.txt
      push "redirect-gateway def1 bypass-dhcp"
      push "dhcp-option DNS 8.8.8.8"
      keepalive 10 120
      comp-lzo
      max-clients 100
      persist-key
      persist-tun
      status openvpn-status.log
      verb 3
      
      • 注:每个项目都会有一大堆介绍,上述修改,openvpn提供的server.conf已经全部提供,我们只需要去掉前面的注释#,然后修改我们自己的有关配置。
  • 下载openvpn客户端,并进行配置

    • 用sftp将我们在vps生成的客户端证书和key下载到客户端电脑

      • ca.crt hywx.crt hywx.key //这三个文件
        
    • 去官网下载openvpn客户端进行安装,然后安装目录找到simple-config

      • D:\develop\OpenVPN\sample-config\sample.ovpn
        
      • 将client.ovpn 复制到D:\develop\OpenVPN\config下,当然我把客户端装在了D盘你根据自己情况选择.

      • 将下载到的三个文件放入D:\develop\OpenVPN\config下然后如下

      • 在这里插入图片描述

      • 编辑client.ovpn(可以自行创建该文件将下列内容放进文件中,或只保留下列文件也可以)

        • client
          dev tun
          proto tcp
          remote 101.254.175.100 18494  #对应openvpn的外网ip以及开放端口
          resolv-retry infinite
          nobind
          persist-key
          persist-tun
          ca ca.crt 
          cert hywx.crt
          key hywx.key
          comp-lzo
          ns-cert-type server
          route 10.81.22.0 255.255.0.0
          verb 3
          
  • 启动

    • 服务端
      • systemctl start openvpn@server.service(启动)
        
      • systemctl status openvpn@server.service (查看状态)
        
      • systemctl restart openvpn@server.service (重启)
        
      • lsof -i:1194(查看启动是否成功)
        
    • 客户端
      • 打开openvpn gui启动,注意在启动后需要输入创建hywx.key时候的密码!我前面让你记住过的。然后进入如下界面
        • 在这里插入图片描述
      • 鉴于以上操作,你的openvpn已经应该可以争取运行了如下:
      • 在这里插入图片描述
  • 设置使用password登录详解

    • 修改服务器端配置

      • vim /etc/openvpn/server/server.conf
        
        在配置文件最后面添加如下几行数据
        script-security 3      #允许通过环境变量将密码传递给脚本   
        auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env   #提供一个用户名密码对
        client-cert-not-required             #不使用客户端证书,使用密码对
        username-as-common-name              #使用认证用户名,不使用证书的common name
        
    • 创建checkpsw.sh脚本,放在/etc/openvpn/路径下

      • #!/bin/sh
        ###########################################################
        # checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>
        #
        # This script will authenticate OpenVPN users against
        # a plain text file. The passfile should simply contain
        # one row per user with the username first followed by
        # one or more space(s) or tab(s) and then the password.
          
        PASSFILE="/etc/openvpn/psw-file"
        LOG_FILE="/var/log/openvpn/openvpn-password.log"
        TIME_STAMP=`date "+%Y-%m-%d %T"`
          
        ###########################################################
          
        if [ ! -r "${PASSFILE}" ]; then
          echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
          exit 1
        fi
          
        CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
          
        if [ "${CORRECT_PASSWORD}" = "" ]; then
          echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
          exit 1
        fi
          
        if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
          echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
          exit 0
        fi
          
        echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
        exit 1
        
    • 创建psw-file文件

      • cd /etc/openvpn
        echo "shenzhen  password%1" > psw-file        #创建账号密码,可以多行,每行一组
        
    • 重启服务

    • 客户端配置

      • client
        dev tun
        proto tcp
        remote 101.254.175.100 18494(对应你的openvpn服务端ip+端口)
        resolv-retry infinite
        nobind
        persist-key
        persist-tun
        ca ca.crt 
        ;cert hywx.crt
        ;key hywx.key
        comp-lzo
        ns-cert-type server
        route 10.81.22.0 255.255.0.0
        verb 3
        auth-user-pass             #客户端使用账号密码登录
        reneg-sec 360000
        
  • 连接成功

标签:openvpn2.4,rsa,easyrsa3,etc,client,easy,openvpn,安装,centos7.5
来源: https://blog.csdn.net/LXYuuuuu/article/details/90671832

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有