部署openvpn服务器

作者: oldboy 分类: Openstack 发布时间: 2023-05-06 17:16

目标:

为实现集群内网环境能和办公室内网通信

模拟环境:

双网口centos7系统,网口1为公网IP地址:61.160.212.111;网口2为内网地址:192.168.59.111

部署流程:

0、同步时间(不然生成的证书不能用)参考:open*** gui 启动报错 VERIFY ERROR: depth=1, error=cert_LIVE_FOR的技术博客_51CTO博客

ntpdate 61.160.213.184

1、开启路由转发功能

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

2、创建证书

#安装证书创建工具
yum install -y openvpn easy-rsa
#创建CA证书(根证书)
mkdir -p /opt/easy-ras
cd /opt/easy-ras
cp -a /usr/share/easy-rsa/3.0.8/* /opt/easy-ras/
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example /opt/easy-ras/
egrep -v '^$|#' vars.example >vars
cat >>vars<<EOF
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Jiangsu"
set_var EASYRSA_REQ_CITY "Changzhou"
set_var EASYRSA_REQ_ORG "oldni.cn"
set_var EASYRSA_REQ_EMAIL "oldni@qq.com"
set_var EASYRSA_NS_SUPPORT "yes"
EOF
#初始化,在当前目录创建pki目录,用于存储证书
./easyrsa init-pki
#创建证书,要设置密码(www.123.nyc),用于CA对之后生成的server和client证书签名时使用,其它默认,要交互的
./easyrsa build-ca

同时在/opt/easy-ras/pki/private/目录下生成了CA的私钥文件

#创建server证书和私钥(回车即可,不需要输入内容),需要交互
#创建请求文件及服务端私钥,nopass表示不加密私钥文件
./easyrsa gen-req server nopass
#签约服务端证书,需要交互
#输入yes确认
#输入 之前设置的ca密码www.123.nyc
./easyrsa sign server server

服务端两个文件就创建好了:

Certificate created at: /opt/easy-ras/pki/issued/server.crt

key: /opt/easy-ras/pki/private/server.key

#创建客户端证书,交互
./easyrsa gen-req client nopass
#签约客户端证书,交互
#输入yes确认
#输入 之前设置的ca密码www.123.nyc
./easyrsa sign client client

客户端的两个文件就创建好了:

Certificate created at: /opt/easy-ras/pki/issued/client.crt

key: /opt/easy-ras/pki/private/client.key

3、创建dh-pem(diffie-hellman)算法文件

#有点慢
./easyrsa gen-dh

加密算法文件存放在:

/opt/easy-ras/pki/dh.pem

4、配置服务端

#创建服务端的配置文件
cat >/etc/openvpn/server/server.conf<<EOF
port 1194
proto udp
dev tun
ca server/ca.crt
cert server/server.crt
key server/server.key
dh server/dh.pem
server 10.8.0.0 255.255.255.0

#注意网络的修改
push "route 192.168.59.0 255.255.255.0"
keepalive 10 120
max-clients 100
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
client-to-client
persist-key
persist-tun
duplicate-cn
EOF
#拷贝证书和私钥
cp /opt/easy-ras/pki/ca.crt /etc/openvpn/server/
cp /opt/easy-ras/pki/dh.pem /etc/openvpn/server/
cp /opt/easy-ras/pki/issued/server.crt /etc/openvpn/server/
cp /opt/easy-ras/pki/private/server.key /etc/openvpn/server/

5、修改systemctl配置文件,启动服务

sed -i 's#%i#&/%i#g' /usr/lib/systemd/system/openvpn@.service
systemctl daemon-reload
systemctl enable --now openvpn@server

此时就多了个tun0网卡

查看端口:

openvpn客户端配置windows

本地下载:

http://61.160.213.184/dl/winsoft/OpenVPN-2.5.3-I601-amd64.msi

安装并记录安装路径

创建目录并下载client证书和私钥

安装完会提示没有配置文件,没关系,我们一步一步配置。
记住软件的安装路径!!C:\Program Files\OpenVPN\
当客户要连接多个VPN环境时,我们要在C:\Program Files\OpenVPN\config创建以域名为名字的目录,方便存放对应的文件:openstack目录

ca.crt        #ca证书
client.crt    #客户端证书
client.key    #客户端私钥
client.ovpn   #客户端配置文件,类型与Linux里的client.conf

从openvpn服务器上下载证书和私钥到客户机上

sz /opt/easy-ras/pki/ca.crt
sz /opt/easy-ras/pki/issued/client.crt
sz /opt/easy-ras/pki/private/client.key

client.ovpn配置文件最终内容:

client
dev tun
proto udp
#注意IP地址的修改
remote 61.160.212.111 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
remote-cert-tls server

最终openstack目录下的内容

也可以在服务端一起准备好再下载到客户端(推荐)

cd ~
mkdir client && cd client
cp /opt/easy-ras/pki/ca.crt .
cp /opt/easy-ras/pki/issued/client.crt .
cp /opt/easy-ras/pki/private/client.key .
cat >client.ovpn<<EOF
client
dev tun
proto udp
#注意IP地址的修改
remote 61.160.212.111 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
remote-cert-tls server
EOF
cd ~
yum install -y zip
zip -r client.zip client
sz client.zip

注意修改配置:

连接成功:

此时的客户端就会生成一个openvpn的需要网卡:

解决外部网络无法访问内网服务器的问题

此时客户端ping 服务端(openvpn服务器)的内网是通的,但ping内网里的其它服务器是不通的

解决方法:参考:第三十讲:OpenVPN服务器搭建完整过程(客户端配置)_哔哩哔哩_bilibili

在openvpn服务器上添加一条iptables规则

#清空已有的规则(确认没用)
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

此时再去ping内网服务器的地址

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

标签云