背景
项目实施过程中,远程访问服务器方式有windows远程桌面、VNC、盗版teamviewer,向日葵、anydesk,甚至还有qq远程桌面的,错综复杂,杂乱无章,项目上没有购置硬件vpn的预算,为了结束这一尴尬的局面,决定使用开源软件openvpn自建vpn环境。
系统环境
OS:CentOS Linux release 7.4.1708 (Core)
SELinux:disabled
firewalld:active
openvpn:2.4.7
easy-rsa:3.0.3
部署openvpn软件
安装openvpn & easy-rsa 软件
yum install epel-release
yum install openvpn easy-rsa
cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa/3.0.3
cp /usr/share/doc/easy-rsa-3.0.3/vars.example vars
创建证书
创建ca证书
编辑vars文件,根据自己的环境配置
ps:这一步不是必须滴,不填写也可以
1 | set_var EASYRSA_REQ_COUNTRY "CN" |
source /vars
进入*/etc/openvpn/easy-rsa/3.0.3*目录
目录初始化./easyrsa init-pki
创建ca证书./easyrsa build-ca nopass
创建服务器证书和key
./easyrsa gen-req server nopass
#生成下列两个文件
1 | req: /etc/openvpn/easy-rsa/3.0.3/pki/reqs/server.req |
签约服务端证书
生成服务器证书文件./easyrsa sign server server
1 | /etc/openvpn/easy-rsa/3.0.3/pki/issued/server.crt |
生成vpn密钥协议交换文件
./easyrsa gen-dh
#可以看到我们生成的是2048位的加密文件
1 | /etc/openvpn/easy-rsa/3.0.3/pki/dh.pem |
创建客户端证书
拷贝easy-rsa到client目录下cp -r /usr/share/easy-rsa/ /etc/openvpn/client/
初始化目录./easyrsa init-pki
1 | /etc/openvpn/client/easy-rsa/3.0.3/pki |
新建用户,创建客户端证书./easyrsa gen-req ths nopass
1 | req: /etc/openvpn/client/easy-rsa/3.0.3/pki/reqs/ths.req |
签约客户端证书
注意:返回到服务器目录下操作!!!cd /etc/openvpn/easy-rsa/3.0.3
./easyrsa import-req /etc/openvpn/client/easy-rsa/3.0.3/pki/reqs/ths.req ths
./easyrsa sign client ths
1 | /etc/openvpn/easy-rsa/3.0.3/pki/issued/ths.crt |
整理一下所有证书
服务器端证书
mkdir /etc/openvpn/certs
cd /etc/openvpn/certs
cp /etc/openvpn/easy-rsa/3.0.3/pki/ca.crt .
cp /etc/openvpn/easy-rsa/3.0.3/pki/dh.pem .
cp /etc/openvpn/easy-rsa/3.0.3/pki/issued/server.crt .
cp /etc/openvpn/easy-rsa/3.0.3/pki/private/server.key .
客户端证书
mkdir /etc/openvpn/client/ths
cd /etc/openvpn/client/ths
cp /etc/openvpn/easy-rsa/3.0.3/pki/ca.crt .
cp /etc/openvpn/easy-rsa/3.0.3/pki/issued/ths.crt .
cp /etc/openvpn/client/easy-rsa/3.0.3/pki/private/ths.key .
服务器端配置文件
cat /etc/openvpn/server.conf
1 | local 192.168.6.23 #填写自己的openvpn服务器ip地址,默认侦听服务器上所有的ip |
启动openvpn服务
systemctl start openvpn@server
启动服务器后,我们可以监控/etc/openvpn/openvpn.log日志,如果有异常,可根据日志排查。
我们查看一下ip地址,可以看到tun0获取到的是10.66.66.1
设置开机自启动服务
systemctl enable openvpn@server
防火墙策略
开启内核路由转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
开放vpn监听端口
firewall-cmd --zone=public --add-port=11094/tcp --permanent
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.66.66.0/24 masquerade'
firewall-cmd --reload
客户端测试
安装Windows客户端
https://build.openvpn.net/downloads/releases/openvpn-install-2.4.7-I607-Win7.exe
https://build.openvpn.net/downloads/releases/openvpn-install-2.4.7-I607-Win10.exe
将/etc/openvpn/client/ths目录下的ca.crt、ths.crt、ths.key复制到“C:\Program Files\OpenVPN\config”目录下
在此目录下新建一个client.ovpn文件
1 | client |
使用管理员权限启动“OpenVPN GUI”
参考链接:
https://build.openvpn.net/downloads/releases/
https://www.cnblogs.com/irockcode/p/7587421.html
https://www.cnblogs.com/tielemao/p/9603696.html