Centos上搭建Openvpn 服务器

Posted 樱乃呢龙马

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos上搭建Openvpn 服务器相关的知识,希望对你有一定的参考价值。

一、安装Openvpn

  • (a)安装epel扩展库

    yum install -y epel-release

  • (b)安装Openvpn软件

    yum install -y lzo-devel pam pam-devel automake pkgconfig openvpn easy-rsa openssl openssl-devel lzo

  • (c)看OpenVPN版本

    `openvpn —version |head -n1```

  • (d)复制服务端配置文件到/etc/openvpn

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

二、CA证书制作

  • (a)建立/etc/openvpn/easy-rsa文件夹,将/usr/share/easy-rsa/3.0.3/ 中的文件复制到此文件夹

    mkdir /etc/openvpn/easy-rsa
    cp -r /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/

  • (b)进入easy-rsa文件夹,复制vars模板文件,重命名未vars

    cd /etc/openvpn/easy-rsa```cp /usr/share/doc/easy-rsa-3.0.3/vars.example ./vars`

  • (c)修改vars 文件,找到下面的部分修改,这一步可以跳过

    vim vars

    set_var EASYRSA_REQ_COUNTRY     “US”          #国家→CN
    set_var EASYRSA_REQ_PROVINCE    “California”    #省→Beijing
    set_var EASYRSA_REQ_CITY        “Shanghai”       #城市→beijing
    set_var EASYRSA_REQ_ORG “Copyleft Certificate Co”    #组织→Killbill
    set_var EASYRSA_REQ_EMAIL       “test@example.net”     #邮箱→killbill@163.com
    set_var EASYRSA_REQ_OU          “My Organizational Unit”    #公司、组织→Killbill

  • (d)初始化pki,生成目录文件结构,创建ca证书

    ./easyrsa init-pki
    ./easyrsa build-ca

    【注】在这里会提示输入ca密码,Enter PEM pass phrase: 这个密码是ca证书的密码,必须记住哈,使用ca证书生成服务端和客户端证书的时候需要输入这个密码,之后会提示输入Common Name,这个是ca证书的名字,回车默认名字是CA就行了,最后就会打印出ca证书存放的路径

三、服务端证书制作

  • (a)nopass表示设置免证书密码,如果要设置密码可以去掉此参数,服务端运行时需要输入这个密码,Common Name名称直接回车默认server就行了

    ./easyrsa gen-req server nopass  或者直接运行./easyrsa gen-req server

  • (b)对生成的服务端证书签名,第二个server是指a步骤的Common Name名称,也就是server

    ./easyrsa sign server server

    【注】在这一步需要输入CA证书生成时候的密码,回车生成之后后会打印出服务端证书的路径

  • (c)生成DH证书,创建Diffie-Hellman,时间有点长,默认回车就行

    ./easyrsa gen-dh

  • (d)生成ta秘钥

    cd /etc/openvpn
    openvpn --genkey --secret ta.key

四、客户端证书制作

进入 /etc/openvpn/client 目录,没有就创建这个目录

  • (a)复制easy-rsa的相关文件到 /etc/openvpn/client

    cd /etc/openvpn/client
    cp -r /usr/share/easy-rsa/3.0.3/* /etc/openvpn/client
    cp /usr/share/doc/easy-rsa-3.0.3/vars.example ./vars

  • (b)初始化pki,然后生成客户端证书,nopass表示设置免证书密码,如果要设置密码可以去掉此参数,客户端连接时需要输入这个密码,Common Name可以自己命名,这里我设置为client

    ./easyrsa init-pki
    ./easyrsa gen-req client nopass

  • (c)对客户端签约,切换到/etc/openvpn/easy-rsa,导入客户端req,签名时第一个client是固定的参数表示客户端,第二个client指上面导入的客户端证书名

    cd /etc/openvpn/easy-rsa
    ./easyrsa import-req /etc/openvpn/client/pki/reqs/client.req client
    ./easyrsa sign client client

五、移动服务端和客户端秘钥证书

  • (a) 服务端所需证书都移动到统一的地方,方便配置管理

    cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/
    cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/
    cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/
    cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/

  • 客户端所需证书都移动到统一的地方,方便配置管理

    /etc/openvpn/easy-rsa/pki/issued/client.crt #在服务端证书生成目录下
    /etc/openvpn/client/pki/private/client.key #上面的客户端生成目录下
    /etc/openvpn/easy-rsa/pki/ca.crt #ca证书
    /etc/openvpn/ta.key

六、配置文件修改

  • 配置文件里面只要将相应文件的路径修改为对应的路径就行了,ipp.txt可以根据客户端名称指定其内网ip地址

    client,10.8.0.5
    hoendo,10.8.0.8
    保存后需要重启openvpn服务.查看状态 systemctl status openvpn@server.service 然后重启服务systemctl restart openvpn@server.service

服务端配置文件

local 0.0.0.0                                  
port 1194                                      
proto tcp                                      
dev tap                                        
ca ca.crt                                      
cert server.crt                                
dh dh.pem                                      
server 10.8.0.0 255.255.255.0                  
ifconfig-pool-persist ipp.txt                  
push "route 10.10.0.0 255.255.255.0"           
push "route 10.8.0.0 255.255.255.0"            
push "route 10.10.0.0 255.255.255.0 10.8.0.8 1"
push "route 10.10.0.0 255.255.255.0 10.8.0.8 1"
push "route 10.10.0.0 255.255.255.0 10.8.0.8 1"
push "route 10.10.0.0 255.255.255.0 10.8.0.8 1"
push "route 10.10.0.0 255.255.255.0 10.8.0.8 1"
client-to-client                               
keepalive 10 120                               
cipher AES-128-CBC                             
comp-lzo                                       
persist-key                                    
persist-tun                                    
status openvpn-status.log                      
verb 3  
verb 3

客户端配置文件

client
dev tun
proto udp
remote 10.10.10.10 1194 #远程openvpn服务器地址和端口
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
cipher AES-128-CBC
verb 3