OpenVPN概述
OpenVPN是一个基于OpenSSL库的应用层实现。和传统VPN相比,它的优点是简单易用。
什么是Open-vpn?
直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。该软件最早由James Yonan编写
OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议
OpenVPN能在Linux、xBSD、Mac OS X与Windows2000/XP上运行。它并不是一个基于Web的×××软件,也不与IPsec及其他×××软件包兼容。
实验环境
系统版本:centos7x3.10.0-514.el7.x86_64
关闭防火墙并禁止开机自启
systemctl stop firewalld.service systemctl disable firewalld
关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
重启 reboot
安装软件包
1、更新源
yum upgrade
2、装epel库
yum -y install epel-release
3、安装依赖包
yum -y install open openssh-server lzo openssl openssl-devel NetworkManager-open open-auth-ldap
4、下载easy-rsa
链接:https://pan.baidu.com/s/11v9xwlLnjJH2H0E_YEiMZA
提取码:sde7
1)下载easy-rsa-release-2.x.zip

5、拷贝配置文件
cp /usr/share/doc/open×××-2.4.4/sample/sample-config-files/server.conf /etc/open×××

6、备份配置文件
cp /etc/open×××/server.conf /etc/open×××/server.conf.back

7、编辑配置文件
cat /etc/open×××/server.conf
注:这里使用的是udp协议(tcp协议在网络较弱时容易断线)
配置证书
1、递归创建目录
mkdir -p /etc/open×××/easy-rsa/2.0/

2、保留原文件属性复制文件
cp -a /usr/local/open×××/easy-rsa-release-2.x/easy-rsa/2.0/ /etc/open×××/easy-rsa/2.0
注:这里以后就是各种证书和密钥的根据地了!

3、编辑vars文件
vi /etc/open×××/easy-rsa/2.0/vars

4、制作证书
1)备份证书配置文件
cp /etc/open×××/easy-rsa/2.0/openssl-1.0.0.cnf /etc/open×××/easy-rsa/2.0/openssl.cnf

2)切换目录让配置文件生效(根据截图提示按步骤操作)
当执行完 ./build-ca后按回车键,一直到结束。

3)创建服务端证书
执行命令./build-key-server server 按回车键进行,在提示输入密码的地方,设置一个密码如feiyu,在An optional company name处输入xingyoucai.com,最后输入两次“y”回车。

4)创建客户端证书
执行命令生成迪菲•赫尔曼交换密钥./build-dh 创建秘钥文件,等待命令执行完。

5)查看目录中创建好的证书文件
ls /etc/open×××/easy-rsa/keys/

6)创建客户端证书文件(在/etc/open×××/easy-rsa/2.0/下执行)
执行命令./build-key client1创建客户端证书文件,按回车进行,提示输入密码的地方,输入之前设置的证书密码feiyu,An optional company name处输入先前设置的公司名字(xingyoucai.com)。【一定要和先前输入的一样,其他参数如果前面设置了,也要保持一致噢】 #另外注意:有多少个客户端就需要./build-key client 多少次,当然client名字需不同。

7)查看证书
ls /etc/open×××/easy-rsa/keys/

设置iptables、路由转发
1、安装iptables
yum -y install iptables-services
2、关闭Centos7默认的 firewall防火墙
systemctl stop firewalld systemctl disable firewalld
3、启动并设置iptables开机自启
systemctl start iptables systemctl enable iptables
4、清空iptables默认规则
iptables -F
iptables -X
iptables -Z
5、设置iptables NAT转发规则
iptables -t nat -A POSTROUTING -s 10.0.100.0/24 -j MASQUERADE
注:保存防火墙规则service iptables save(防止重启规则丢失)

6、开启路由转发
cat /etc/sysctl.conf

验证: sysctl -p

设置open×××
1、创建日志存放目录
mkdir /var/log/open×××/
2、设置启动文件
systemctl -f enable open×××@server.service

3、启动open×××
systemctl start open×××@server.service

//查看状态信息解决报错
systemctl status open×××@server.service
//解决完报错重启open×××
systemctl start open×××@server.service
注:以上报错问题已解决,解决办法为注释以下这两行重启就好了!
#tls-auth ta.key 1 #explicit-exit-notify 1
4、打开iptables防火墙的1194端口
iptables -A INPUT -p udp --destination-port 1194 -j ACCEPT

5、查看open×××服务
netstat -antulp

6、open×××客户端(电脑、手机)连接×××使用telnet命令连接×××1194端口
配置客户端实现连接
1、把服务器上的三个客户端证书文件,下载到本地电脑配置×××客户端。
/etc/open×××/easy-rsa/keys/ca.crt
/etc/open×××/easy-rsa/keys/client.crt
/etc/open×××/easy-rsa/keys/client.key
2、安装好open×××客户端软件后,把证书文件,存放到open×××安装目录的config文件夹下。 从sample-config文件夹下,拷贝客户端的配置文件client到config文件夹下。

3、编辑config文件夹下的配置文件client,修改remote my-server-1 1194 这行配置,指定open×××服务器的ip地址,默认为你服务器的外IP然后修改协议。需要注意的是:在服务器端的配置需要和客户端的配置参数一致

4、客户端连接,右击软件生成的运行图标,点击连接。

















