文章目录
- 搭建步骤
- 安装OpenVPN服务端
- 使用命令在三台主机上安装openVPN
- 安装Easy RSA套件(用于生成服务端和客户端所需的证书和密钥)
- 下载Easy RSA源码包;
- 下载完后解压,在/etc/openvpn目录下创建目录easy-rsa,将刚才解压缩的所有文件复制到这个目录下
- 在服务端生成私钥和证书
- OpenVPN服务端配置
- 启动服务端服务
- OpenVPN客户端配置
- 启动客户端服务
- 在云服务器上配置安全组
- 测试能否互连
- 在Windows配置openVPN客户端
- 查看openVPN服务是否运行
- 结束openvpn服务
- 在Linux环境下设置openVPN开机自启动脚本
- 在服务端下配置CCD功能,限制客户端之间互相访问
- 目的
- 配置步骤
搭建步骤
安装OpenVPN服务端
测试环境介绍:
云服务器(Ubuntu20.04 64位)搭建服务端,公网IP:119.96.126.25
一台测试机搭建客户端(RedHat系),IP:10.10.111.24
另一台测试机搭建客户端(MOXA系统,Debian系),IP:10.10.112.63
最后目标是实现两台客户端之间能够互联
使用命令在三台主机上安装openVPN
RedHat系
yum install -y openvpn
Debian系
apt install openvpn
安装Easy RSA套件(用于生成服务端和客户端所需的证书和密钥)
下载Easy RSA源码包;
Easy RSA下载官网:https://github.com/OpenVPN/easy-rsa/releases
[root@localhost ~]wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz
下载完后解压,在/etc/openvpn目录下创建目录easy-rsa,将刚才解压缩的所有文件复制到这个目录下
[root@localhost ~]#tar -zxvf EasyRSA-3.1.2.tgz
[root@localhost ~]#mkdir /etc/openvpn/easy-rsa
[root@localhost ~]#cp -r EasyRSA-3.1.2/* /etc/openvpn/easy-rsa
在服务端生成私钥和证书
- 进入Easy RSA的安装目录,并配置参数;
[root@localhost ~]# cd /etc/openvpn/easy-rsa/
[root@localhost easy-rsa]# cp vars.example vars
[root@localhost easy-rsa]# vim vars
- 清理原有证书和私钥并初始化;
[root@localhost easy-rsa]# ./easyrsa clean-all
- 生成CA根证书;
[root@localhost easy-rsa]# ./easyrsa build-ca
CA根证书生成位置:/etc/openvpn/easy-rsa/pki/ca.crt
- 为OpenVPN服务端生成server证书和私钥;
备注:这里使用nopass参数设置不需要密码,那么在启动OpenVPN服务的时候就不提示输入密码。
[root@localhost easy-rsa]# ./easyrsa build-server-full server nopass
服务端证书路径:/etc/openvpn/easy-rsa/pki/issued/server.crt
服务端私钥路径:/etc/openvpn/easy-rsa/pki/private/server.key
- 生成Diffie-Hellman算法需要的密钥文件;
[root@localhost easy-rsa]# ./easyrsa gen-dh
等待一段时间即可生成成功
- 生成tls-auth Key用于防止DDOS和TLS攻击;
[root@localhost easy-rsa]# openvpn --genkey --secret ta.key
ta.key路径:/etc/openvpn/easy-rsa/ta.key
OpenVPN服务端配置
- 修改OpenVPN服务端配置文件vim /etc/openvpn/server/server.conf;
- 拷贝私钥、公钥和证书等文件到server.conf同级目录下;
备注:需要拷贝的文件包括ca.crt、ca.key、server.crt、server.key、dh.pem、ta.key。
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/ca.crt .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/private/ca.key .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/issued/server.crt .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/private/server.key .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/dh.pem .
[root@localhost server]# cp /etc/openvpn/easy-rsa/ta.key .
启动服务端服务
[root@uos server]# openvpn --config server.conf
OpenVPN客户端配置
##在服务端生成客户端的证书和私钥,每多一个客户端就要多生成一份
[root@localhost easy-rsa]# ./easyrsa build-client-full client nopass
客户端证书路径:/etc/openvpn/easy-rsa/pki/issued/client.crt
客户端私钥路径:/etc/openvpn/easy-rsa/pki/private/client.key
将生成的客户端证书(client.crt)、私钥(client.key),服务端根证书(ca.crt)、ta.key打包发送到客户端的/etc/openvpn/client
,可以用sz命令通过XSHEEL发送到Windows端,然后用rz命令从Windows端发送给客户端
- 修改OpenVPN客户端配置文件 vim /etc/openvpn/client/client.conf
启动客户端服务
[root@uos client]# openvpn --config client.conf
使用ifconfig
查看虚拟网卡的IP地址
另外一台客户端执行同样的操作
在云服务器上配置安全组
之前启动客户端怎么也没法连上服务器,折腾半天最后发现是服务器上的端口没有放行,这条非常重要!!!
测试能否互连
一台服务端和两台客户端启动openVPN服务后,互相ping测试能否互连
在Windows配置openVPN客户端
跟之前一样先在服务端生成一份客户端的证书和密钥,然后将必要的这5份文件拷贝到如图所示的目录下。注意:在windows系统下client.conf的需要改成client.ovpn
打开openVPN客户端连接,可以看到当前状态连接成功
查看openVPN服务是否运行
ps -ef | grep openvpn
结束openvpn服务
kill -9 pid
在Linux环境下设置openVPN开机自启动脚本
1.打开终端并使用root权限登录到系统
2.创建一个systemd服务来在Linux系统启动时自动启动OpenVPN客户端
vim /etc/systemd/system/openvpn-client.service
3.将以下内容复制并粘贴到文件中:
[Unit]Description=OpenVPN client serviceAfter=network.target[Service]Type=simpleExecStart=/usr/sbin/openvpn --cd /etc/openvpn/client --config /etc/openvpn/client/client.confRestart=always[Install]WantedBy=multi-user.target
4.保存关闭后,重新启动systemd
服务
sudo systemctl daemon-reloadsudo systemctl enable openvpn-client.service
5.现在,当系统启动时,OpenVPN客户端将自动启动并连接到服务器。
在服务端下配置CCD功能,限制客户端之间互相访问
目的
client-moxa(openVPN虚拟IP地址:10.8.1.18)客户端能通过服务端访问client-24(openVPN虚拟IP地址:10.8.1.6)客户端,而client-24客户端不能通过服务端访问client-moxa客户端
配置步骤
1.首先,在服务端开启CCD功能,在 OpenVPN 服务器的配置文件中,添加以下行:
client-config-dir /etc/openvpn/ccd
其中,ccd 是一个文件夹路径,用于存放客户端 CCD 配置文件,我这里CCD文件夹创建的路径在/etc/openvpn/
下。
2.在 ccd 文件夹中,为 client-24 客户端创建一个名为 client-24 的文件,文件内容为:
ifconfig-push 10.8.1.6 255.255.255.0
其中,这里的文件名一定要和客户端的文件名字一样
这将为 client-24 客户端分配一个固定的 IP 地址(例如 10.8.1.6)。
3.在 ccd 文件夹中,为 client-moxa 客户端创建一个名为 client-moxa 的文件,文件内容为:
iroute 10.8.1.6 255.255.255.255
这将告诉 OpenVPN 服务器将 client-moxa 客户端的请求路由到 10.8.1.6 这个 IP 地址(即 client-24 客户端的 IP 地址)。
4.最后,在服务器配置文件中,添加以下行:
push "route 10.8.1.0 255.255.255.0"
这将告诉客户端将流量路由到 10.8.1.0/24 子网,其中包括 client-moxa 客户端和 client-24 客户端的 IP 地址。
完成上述步骤后,即可完成配置