CentOS7 搭建OpenVPN服务器

服务端

1
2
3
# 安装软件
yum install -y epel-release
yum install -y openvpn easy-rsa
1
2
3
4
# 证书配置,99年
mkdir /home/easy-rsa
cd /home/easy-rsa
cp -a /usr/share/easy-rsa/3.0.8/* .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat >> vars << EOF
if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA
'vars' file." >&2
echo "This is no longer necessary and is
disallowed. See the section called" >&2
echo "'How to use this file' near the top
comments for more details." >&2
return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "hqzg"
set_var EASYRSA_REQ_EMAIL "hqzg@qq.comm"
set_var EASYRSA_NS_SUPPORT "yes"
set_var EASYRSA_CA_EXPIRE 36135
set_var EASYRSA_KEY_EXPIRE 36135
EOF

生成证书

1
2
3
4
5
6
7
8
9
# 初始化 PKI
./easyrsa init-pki
# 创建 CA 证书, nopass配置无密码
./easyrsa build-ca nopass # 直接回车
# 生成服务器证书、密钥
./easyrsa gen-req server nopass # 直接回车
./easyrsa sign server server # 输入yes
# 生成Diffie-Hellman参数
./easyrsa gen-dh

生成客户端证书前修改easyrsa脚本中变量

1
2
3
# 这两处改为过期天数
set_var EASYRSA_CA_EXPIRE 36135
set_var EASYRSA_CERT_EXPIRE 36135 # new default of 36 months
1
2
3
4
5
6
7
8
9
# 生成第一个客户端证书
./easyrsa gen-req client nopass # 直接回车 #1
./easyrsa sign client client # 输入yes #1
# 生成第二个客户端证书
./easyrsa gen-req client2 nopass # 直接回车 #2
./easyrsa sign client client2 # 输入yes #2
# 吊销某一台客户端证书
./easyrsa revoke client2 # 输入yes
./easyrsa gen-crl

配置openvpn服务端

1
2
3
4
cp -a pki/ca.crt /etc/openvpn/
cp -a pki/issued/server.crt /etc/openvpn/
cp -a pki/private/server.key /etc/openvpn/
cp -a pki/dh.pem /etc/openvpn/

openvpn server配置文件

1
2
3
cd /etc/openvpn/
mkdir ccd
mkdir /home/logs/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cat >> server.conf << EOF
port 2876 # 服务的端口
proto tcp # TCP协议
dev tun # 以路由方式运行openvpn
# dev tap # 桥接模式
ca ca.crt # CA证书
cert server.crt # 服务端证书
key server.key # 证书密钥
dh dh.pem # 定义Diffie hellman文件
server 10.8.0.0 255.255.255.0 # 路由模式下分配给client的地址池
# push "route 10.8.0.0 255.255.255.0" # 向client推送路由信息
# ifconfig-pool-persist ipp.txt # 记录客户端和虚拟IP之间的关系,类似于路由器DHCP分配规

client-config-dir ccd # 此目录下面是以客户端证书名称 命名的文件
keepalive 10 120 # 活动链接保持期限
max-clients 100 # 客户端最大并发连接
status openvpn-status.log # openvpn状态日志
log /home/logs/openvpn.log # 记录日志,客户端注册信息
verb 3 # 日志级别0-9
client-to-client # 允许客户端之间访问
persist-key # 通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun # 通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup,否
则网络连接,会先linkdown然后再linkup。
# duplicate-cn # 同一个client证书可以多个客户端使用
comp-lzo # 允许数据压缩
crl-verify /home/easy-rsa/pki/crl.pem # 每次吊销证书此文件都会变化,所以指定文件生成路
径。
EOF

配置固定ip—wind机器不能填写

1
2
3
4
5
6
7
8
9
# 固定openvpn client客户端IP为10.8.0.5 #1
# 这里client是上面#1生成的,注意:文中所有标注的#1都是相关联的,#2同理
cat >> ccd/client << EOF
ifconfig-push 10.8.0.5 10.8.0.2
EOF
# 固定openvpn client2客户端IP为10.8.0.7 #2
cat >> ccd/client2 << EOF
ifconfig-push 10.8.0.3 10.8.0.2
EOF
1
2
3
# 启动openvpn server服务,开机自启
systemctl start openvpn@server
systemctl enable openvpn@server

取出客户端所需文件

1
2
3
4
5
6
7
8
9
yum -y install lrzsz
cd /home/easy-rsa
sz pki/ca.crt
sz pki/issued/client.crt
sz pki/private/client.key
# 第二个客户端 #3
sz pki/ca.crt
sz pki/issued/client2.crt
sz pki/private/client2.key

客户端

1
2
3
4
5
# 安装软件
yum install -y epel-release
yum install -y openvpn
cd /etc/openvpn/
rz # 将上面的3个文件上传到服务器

设置权限

1
2
chmod 400 c*
mkdir -p /home/logs/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# openvpn client配置文件
cat >> client.conf << EOF
client # 声明客户端
dev tun # tun路由模式
proto tcp # tcp连接
remote 152.136.130.229 2876 # openvpn server的公网IP和服务端口
resolv-retry infinite # 一直重新解析server端的IP地址,你可以在server端的ccd目录里面修
改客户端的地址,且不需要重启客户端
nobind # 不绑定本机端口
ca ca.crt # CA证书
cert client.crt # 客户端证书
key client.key # 客户端证书密钥
verb 3 # 日志级别0-9
persist-key # 通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun # 通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup,否
则网络连接,会先linkdown然后再linkup。
comp-lzo # 允许数据压缩
log /home/logs/openvpn.log
EOF
1
2
3
# 启动服务
systemctl start openvpn@client
systemctl enable openvpn@client

wind客户端

安装openvpn后找到config配置文件,把上面三个秘钥放到配置文件中
创建一个client.ovpn 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
client
dev tun
proto tcp # tcp连接
remote 39.105.131.21 2876 # openvpn server的公网IP和服务端口
resolv-retry infinite # 一直重新解析server端的IP地址,你可以在server端的ccd目录里面修改客户端的地址,且不需要重启客户端
nobind # 不绑定本机端口
ca ca.crt # CA证书
cert client.crt # 客户端证书
key client.key # 客户端证书密钥
verb 3 # 日志级别0-9
persist-key # 通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun # 通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup,否则网络连接,会先linkdown然后再linkup。
comp-lzo # 允许数据压缩
log /home/logs/openvpn.log

查看证书有效期

1
openssl  x509 -in pki/issued/sgsm_sdk.crt  -noout -enddate
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2023 XIN LONG
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信