[Centos]openvpn服务端的安装(easy-rsa3)

时间:2016-05-25 来源:红黑联盟
VPN在办公和fan墙领域有着广泛的应用, 我们小办公网最近可能会用到,先学学来着
vpn的server需要有公网ip,客户端可以在多种环境下使用
概念
PKI:Public Key Infrastructure 公钥基础设施 CA: Certificate Authority pki的核心

实验环境

虚拟机环境下 centos6.6
网卡
eth0      Link encap:Ethernet  HWaddr 00:50:56:35:E7:EC  
          inet addr:192.168.37.129  Bcast:192.168.37.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe35:e7ec/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:108531 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89610 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:82324349 (78.5 MiB)  TX bytes:10389968 (9.9 MiB)

目的: openvpn服务搭建,并可以正常运行(这里没有对iptables设置)

安装依赖包

yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
yum install openvpn
#openvpn 版本是2.3.6  easy-rsa3

生成证书

#配置文件的目录一般都在类似的目录
cp /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/server.conf /etc/openvpn/

#2.3版本需要独立下载个easy-rsa,该包用来制作ca证书,服务端证书,客户端证书
wget -c https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip 
mv easy-rsa-master easy-rsa
cp -rf  easy-rsa /etc/openvpn

easy-rsa根据github上的文档来操作
cd /etc/openvpn/easy-rsa/easyrsa3

cp vars.example vars  #一般情况下,默认的配置可以满足需求,也可以根据需要修改
./easyrsa init-pki   #建立一个空的pki结构,生成一系列的文件和目录
./easyrsa build-ca   #创建ca  密码 和 cn那么需要记住
./easyrsa gen-req server nopass  #创建服务端证书  common name 最好不要跟前面的cn那么一样
./easyrsa sign server server   #签约服务端证书
./easyrsa gen-dh  #创建Diffie-Hellman

#下面是客户端的证书
#首先创建一个工作的目录
cd /home/
mkdir client && cd client
cp -R ~/easy-rsa/ ./   #这是解压过的easy-rsa 而不是生成了服务端证书的easy-rsa
cd easy-rsa/easyrsa3/
cp vars.example vars

#开始生成
./easyrsa init-pki
./easyrsa gen-req orangleliu #用自己的名字,需要创建一个密码  和 cn name,自己用的 需要记住

#现在客户端的证书要跟服务端的交互,也就是签约,这样这个用户才能使用此vpn
#切换到server证书目录下
cd /etc/openvpn/easy-rsa/easyrsa3/ 
./easyrsa import-req /home/client/easy-rsa/easyrsa3/pki/reqs/orangleliu.req orangleliu  #导入req
./easyrsa sign client orangleliu #用户签约,根据提示输入服务端的ca密码

看看 /etc/openvpn/easy-rsa/easyrsa3 生成的东西
[root@localhost easyrsa3]# tree pki
pki
├── ca.crt
├── certs_by_serial
│   ├── 01.pem
│   └── 02.pem
├── dh.pem
├── index.txt
├── index.txt.attr
├── index.txt.attr.old
├── index.txt.old
├── issued
│   ├── orangleliu.crt
│   └── server.crt
├── private
│   ├── ca.key
│   └── server.key
├── reqs
│   ├── orangleliu.req
│   └── server.req
├── serial
└── serial.old


再看看客户端 /home/client/easy-rsa/easyrsa3
pki
├── private
│   └── orangleliu.key
└── reqs
    └── orangleliu.req


把这些文件放到对应的一些目录下 服务端证书(放到配置文件一个目录,便于配置和查找)
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/

client证书(只是集中到一个文件夹下,给vpn用户使用)
mkdir /home/myclient
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /home/myclient/
cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/orangleliu.crt  /home/myclient/
cp /home/client/easy-rsa/easyrsa3/pki/private/orangleliu.key /home/myclient/

最难的部分已经过去了,下面就是配置服务,看看效果了

配置服务

vim /etc/openvpn/server.conf 具体每个配置的含义,配置文件中都有详细的解释

local 192.168.37.129
port 1194
proto udp
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 114.114.114.114"
comp-lzo
max-clients 100
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
verb 3


启动服务

[root@localhost easyrsa3]# service openvpn start
Starting openvpn:                                          [FAILED]


查看启动日志 Options error: Unrecognized option or missing parameter(s) in server.conf:35: kcomp-lzo (2.3.6)
配置中写错了。。 应该是 comp-lzo
重新启动
[root@localhost easyrsa3]# service openvpn start
Starting openvpn:                                          [  OK  ]


ok了。
ifconfig查看网卡信息
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

增加了一个10网段

【推荐】 ffmpeg常用基本命令
【推荐】 nginx+ffmpeg搭建流媒体服务器(直播流)
【推荐】 如何搭建一个属于自己的直播平台?
【推荐】 密码学在互联网业务中的点滴使用