一、环境准备
开始之前:将所有的0penv替换为openv。你懂的
-
模拟环境软件:
- VMware® Workstation 15 Pro
-
网卡准备:
- vmnet1:192.168.0.0/24 <-----> 企业内网
- vmnet8:172.16.0.0/16 <-----> Internet外网
-
机器准备
- 服务端:
- IP:内网:192.168.0.66 外网:172.16.0.66
-
系统:CentOS 7
image-20210629161819331.png
- 服务端:
-
远程主机:
- vmnet8:172.16.10.10 <-----> 能ping通服务器172.16.0.66网卡接口
-
系统:Windows 7
image-20210629161910362.png
客户端:
- vmnet1:192.168.0.100 <-----> 能ping通服务器192.168.0.66网卡接口
- 系统:Windows 7
二、服务端搭建
01.0penVPN证书制作
easyrsa软件下载地址:
https://github.com/0penVPN/easy-rsa/archive/refs/heads/master.zip
步骤:
(1)下载:
wget https://github.com/0penVPN/easy-rsa/archive/refs/heads/master.zip
(2)解压:
下载下来之后会得到一个`master.zip`的压缩包,使用`unzip`命令进行解压,解压之后会得到一个名为`easy-rsa-master`的文件夹
# 没有unzip命令的话,需要下载
yum -y install zip unzip.x86_64
# 解压
unzip master.zip
# 查看解压后生成的文件
ls
easy-rsa-master
(3)配置文件:
vars
文件是为制作证书时所使用到的配置文件。里面主要是定义了在配置证书的时候需要填写的变量。
cd easy-rsa-master/easyrsa3/
# 默认是没有vars文件的,可以拷贝vars.example模板文件
cp vars.example vars
# 编辑文件,打开注释,修改一下信息
vim vars
...
set_var EASYRSA_DN "org"
set_var EASYRSA_REQ_COUNTRY "cn"
set_var EASYRSA_REQ_PROVINCE "Guangdong"
set_var EASYRSA_REQ_CITY "Guangzhou"
set_var EASYRSA_REQ_ORG "xxx"
set_var EASYRSA_REQ_EMAIL "10242048@qq.com"
...
注意:如果open client的配置文件中使用了ns-cert-type server则要打开此选项,制作server证书时会将一些信息写入证书,
如不打开此选项,则open client会提示server certificate verify fail
set_var EASYRSA_NS_SUPPORT "yes"
02.生成根证书和密钥
先初始化,会在当前目录创建PKI目录,用于存储一些中间变量及最终生成的证书。
每条命令执行之后都有些信息输出,如出错,会提示相关错误信息
pwd
/root/easy-rsa-master/easyrsa3
./easyrsa init-pki
# 创建根证书,首先会提示设置密码,用于ca对之后生成的server和client证书签名时使用,
# 会提示设置一些信息,因为我们已经在vars配置好了,我们一路回车,使用默认值就好了
./easyrsa build-ca
# 此时会在pki目录里看到新生成几个目录和文件,我们重点关注ca.crt文件
# 这个文件是ca证书,也是根证书,跟密钥会被保存在private目录下
03.生成服务端证书和密钥
创建server端证书和private key,nopass表示不加密private key,提示设置信息时,一路回车就行
./easyrsa gen-req server nopass
给server端证书做签名,首先是对一些信息的确认,可以输入yes,然后输入build-ca时设置的那个密码
./easyrsa sign server server
04.生成客户端证书和密钥
创建client端证书,需要单独把easyrsa3文件夹拷贝出来一份,删除里面的PKI目录,然后进入到此目录
pwd
/root/easy-rsa-master
mkdir easyrsa3_client
cp easyrsa3/* easyrsa3_client/
cd easyrsa3_client/
rm -rf pki/*
初始化,会在当前目录创建PKI目录,用于存储一些中间变量及最终生成的证书
./easyrsa init-pki
创建client端证书和private key,nopass表示不加密private key,提示设置信息时,一路回车就行
./easyrsa gen-req client nopass
回到制作server证书时的那个easyrsa3目录,导入client端证书,准备签名
./easyrsa import-req client.req所在路径 client
client.req应该在刚才制作client端证书的easyrsa3_client/pki/reqs/下面
pwd
cd easyrsa3
./easyrsa import-req ../easyrsa3_client/pki/reqs/client.req client
给client端证书做签名,首先是对一些信息的确认,可以输入yes,然后输入build-ca时设置的那个密码
./easyrsa sign client client
05.生成密钥交换文件
创建Diffie-Hellman,时间会有点长,耐心等待
./easyrsa gen-dh
至此,server和client端证书已制作完毕
open server端需要的是:
easyrsa3/pki/ca.crt <制作server证书的文件夹>
easyrsa3/pki/private/server.key <制作server证书的文件夹>
easyrsa3/pki/issued/server.crt <制作server证书的文件夹>
easyrsa3/pki/dh.pem
open client端需要的是:
easy-rsa/easyrsa3/pki/ca.crt <制作server证书的文件夹>
easy-rsa/easyrsa3/pki/issued/client.crt <制作server证书的文件夹>
easy-rsa/easyrsa3/pki/private/client.key <制作client证书的文件夹>
06.安装0penVPN
因为0penVPN依赖于epel
源,所以需要准备好epel
源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
使用yum
命令安装
yum -y install 0penvpn
# 查看配置文件信息
rpm -ql 0penvpn
修改配置文件
cd /etc/0penvpn/
cp /usr/share/doc/0penvpn-2.4.11/sample/sample-config-files/server.conf /etc/0penvpn/
cat server.conf
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
dh keys/dh.pem
server 10.0.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.0.1.0 255.255.255.0"
push "route 192.168.0.0 255.255.255.0"
keepalive 10 120
cipher AES-256-GCM
persist-key
persist-tun
status 0penvpn-status.log
verb 3
explicit-exit-notify 1
复制一份需要的证书文件到keys
目录下
mkdir /etc/0penvpn/keys
cd /root/easy-rsa-master/easyrsa3/pki/
cp ca.crt dh.pem issued/server.crt private/server.key /etc/0penvpn/keys/
建立生成拒绝服务攻击的证书文件
/etc/0penvpn/keys
0penvpn --genkey --secret ta.key
[root@vpn keys]# ls
ca.crt dh.pem server.crt server.key ta.key
启动路由转发功能
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
启动0penVPN服务
0penvpn --daemon --config /etc/0penvpn/server.conf
[root@vpn 0penvpn]# netstat -tlunp|grep 1194
udp 0 0 0.0.0.0:1194 0.0.0.0:* 1362/0penvpn
三、客户端(远程主机)配置
在进行客户端配置之前,确保主机能ping通服务器的外网卡接口,也就是
ping 172.16.0.66
但是并不能ping通内网卡接口。
客户端下载:
https://swupdate.0penvpn.org/community/releases/0penvpn-install-2.4.5-I601.exe
准备配置文件和证书文件
cd
mdkir client
cd client
cp /usr/share/doc/0penvpn-2.4.11/sample/sample-config-files/client.conf .
[root@vpn client-pki]# cat client.conf
client
dev tun
proto udp
remote my-server-1 1194
remote 172.16.0.66 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
verb 3
mv client.conf client.ovpn
cp /root/easy-rsa-master/easyrsa3/pki/ca.crt /root/client
cp /root/easy-rsa-master/easyrsa3_client/pki/private/client.key /root/client
cp /root/easy-rsa-master/easyrsa3/pki/issued/server.crt /root/client
cp /etc/0penvpn/keys/ta.key /root/client/
[root@vpn client]# ls
ca.crt client.crt client.key client.ovpn ta.key
打包并传到客户端上
zip client.zip client/*
将压缩包和0penVPN的安装程序都传到客户端去
image-20210629161552929.png
安装软件,如果在安装软件的过程中提示需要安装Microsoft .NET Framework时,需要联网安装,可以配置网络的网关和DNS,让客户机联网自动下载安装。
解压压缩文件,将里面的证书和配置文件一起拷贝到0penVPN的安装目录下。
image-20210629162249867.png
在安装好0penVPN之后,双击程序快捷方式,以管理员的身份运行,并修改默认的配置文件和日志文件路径。
image-20210629162434666.png
配置好之后,可以点击图标的,建立连接,正常连接的话,会在弹出连接对话框之后自动关闭。
此时,查看电脑的IP地址之后,就会发现会多出一个地址,这个地址就是使用0penVPN拨号之后分配到的地址。
image-20210629163610570.png
简单测试:
可以在客户端终端输入
ping 192.168.0.66
可以发现能正常ping通,说明客户端可以连接到服务器的内网网卡,可以尝试一下能否ping通局域网主机,输入
ping 192.168.0.100
意外发现竟然连接超时,但是我们能正常ping通内网接口,说明不是0penVPN配置问题。
造成这个问题的原因可能是局域网主机没有配置网关,无法响应我们的请求。
想要解决这个问题,有两种方法:
1.给内网机器配置网关,通过网关相应远程的请求。但是一般我们内网服务器为了安全,不建议上配置网关,连接外网。
2.配置iptables
服务,通过修改nat
表将地址转化。
步骤:
在服务器端配置iptables
服务
iptables -t nat -L
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
iptables -t nat -L
# 配置好之后会发现多出一条规则
四、内网服务器配置
内网服务器配置简单,按照要求配置好IP地址,此时的电脑无法连接外网,只能与服务器的内网卡通信,确保的内网主机的安全。
测试局域网主机与服务内网网卡的连通性:
ping 192.168.0.66
能正常连通。
重要的步骤:
在配置好之后,一定要关闭电脑的防火墙配置,因为到时远程客户机是以10.0.1.0网段进行访问,会被拒绝。
五、连接测试
所有的连接测试都在远程客户端进行
01.先测试客户端是否获取0penVPN分配的内网地址:
02.测试客户端是否能ping通服务器外网卡接口地址
03.测试客户端是否能ping通服务器内网卡接口地址
04.测试客户端是否能ping通服务器局域网主机
网友评论