安装OpenVPN

安装epel 仓库源

1
2
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

安装openvpn

1
yum install openvpn

在github 上,下载最新的easy-rsa


1
2
3
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.7.tar.gz
tar -xzvf v3.0.7.tar.gz
mv easy-rsa-3.0.7 easy-rsa

配置/etc/openvpn/ 目录

创建目录,并复制easy-rsa 目录

1
2
mkdir -p /etc/openvpn/
cp -a easy-rsa /etc/openvpn/

配置,编辑vars文件,根据自己环境配置

1
2
3
cd /etc/openvpn/easy-rsa/easyrsa3
cp vars.example vars
vim vars

创建服务端证书及key

  1. 初始化
    1
    2
    cd /etc/openvpn/easy-rsa/easyrsa3/
    ./easyrsa init-pki
  2. 创建根证书
    1
    ./easyrsa build-ca

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

    该过程中需要输入common name,随意但是不要跟之前的根证书的一样
  4. 签约服务端证书
    1
    ./easyrsa sign server server

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

创建客户端证书

  1. 进入root目录新建client文件夹,文件夹可随意命名,然后拷贝前面解压得到的easy-ras文件夹到client文件夹,进入下列目录
    1
    2
    3
    4
    cd ~
    mkdir client
    cp -r /etc/openvpn/easy-rsa client/
    cd client/easy-rsa/easyrsa3/
  2. 初始化
    1
    ./easyrsa init-pki
    输入yes确定
  3. 创建客户端key及生成证书(记住生成是自己客户端登录输入的密码)
    1
    ./easyrsa gen-req 名称
  4. 将得到的qingliu.req导入然后签约证书
    ①进入到/etc/openvpn/easy-rsa/easyrsa3/
    1
    cd /etc/openvpn/easy-rsa/easyrsa3/
    ②导入req
    1
    ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/名称.req 名称

    ③签约证书
    1
    ./easyrsa sign client 名称

    同上 输入yes然后输入CA的密码(即服务端的密码)
  5. 把服务器端必要文件放到etc/openvpn/ 目录下
    CA的证书、服务端的证书、秘钥
    1
    2
    3
    4
    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/
  6. 把客户端必要文件放到root/openvpn/目录下
    客户端的证书、秘钥
    1
    2
    3
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /root/client/
    cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/名称.crt /root/client/
    cp /root/client/easy-rsa/easyrsa3/pki/private/名称.key /root/client/
  7. 为服务端编写配置文件
    (1)当你安装好了openvpn时候,他会提供一个server配置的文件例子,在/usr/share/doc/openvpn-2.4.9/sample/sample-config-files 下会有一个server.conf文件,我们将这个文件复制到/etc/openvpn
    1
    2
    rpm -ql openvpn |grep server.conf
    cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn

    (2)修改配置文件
    1
    2
    vim /etc/openvpn/server.conf
    grep '^[^#|;]' /etc/openvpn/server.conf
    修改内容如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    local 0.0.0.0     #监听地址
    port 1194 #监听端口
    proto tcp #监听协议
    dev tun #采用路由隧道模式
    ca /etc/openvpn/ca.crt #ca证书路径
    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 #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp" #给网关
    push "dhcp-option DNS 8.8.8.8" #dhcp分配dns
    client-to-client #客户端之间互相通信
    keepalive 10 120 #存活时间,10秒ping一次,120 如未收到响应则视为断线
    comp-lzo #传输数据压缩
    max-clients 100 #最多允许 100 客户端连接
    user openvpn #用户
    group openvpn #用户组
    persist-key
    persist-tun
    status /var/log/openvpn/openvpn-status.log
    log /var/log/openvpn/openvpn.log
    verb 3
    每个项目都会由一大堆介绍,上述修改,openvpn提供的server.conf已经全部提供,我们只需要去掉前面的注释#;,然后修改我们自己的有关配置
    (3)配置后的设置
    1
    2
    3
    mkdir /var/log/openvpn
    chown -R openvpn.openvpn /var/log/openvpn/
    chown -R openvpn.openvpn /etc/openvpn/*
  8. iptables设置nat规则和打开路由转发
    1
    2
    3
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
    iptables -vnL -t nat
    vim /etc/sysctl.conf
    内容添加如下
    1
    net.ipv4.ip_forward = 1
    1
    sysctl -p
  9. 开启openvpn服务
    1
    2
    openvpn /etc/openvpn/server.conf
    ss -nutl |grep 1194

    如果开启后没有打开1194 端口,说明开启服务失败,可能是配置文件有错,也有可能是权限不够,自己查询日志解决。