yum -y install easy-rsa
mkdir /etc/openvpn
mkdir /etc/openvpn/easy-rsa
拷贝easy-rsa的文件到/etc/openvpn下
cp -r /usr/share/easy-rsa/3.0.6 /etc/openvpn/easy-rsa
cp /usr/share/doc/easy-rsa-3.0.6/vars.example /etc/openvpn/easy-rsa/vars
vim /etc/openvpn/easy-rsa/vars
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Shanghai"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "lucifer"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_NS_SUPPORT "yes"
cd /etc/openvpn/easy-rsa
创建PKI
./easyrsa init-pki
创建CA
./easyrsa build-ca nopass
创建DH证书 秘钥交换时的Diffie-Hellman算法
./easyrsa gen-dh
创建ta.key
openvpn --genkey --secret /etc/openvpn/easy-rsa/pki/ta.key
安装 openvpn
yum install -y openvpn
安装 iptables
yum install iptables-services
自行创建配置文件/etc/openvpn/server.conf
# 监听地址
#local 0.0.0.0
# 监听端口
port 51194
# 通信协议
proto tcp
# TUN模式还是TAP模式
dev tap
# 证书
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/openvpn-server.crt
key /etc/openvpn/easy-rsa/pki/private/openvpn-server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
# crl-verify /etc/openvpn/easy-rsa/pki/crl.pem
# 禁用OpenVPN自定义缓冲区大小,由操作系统控制
sndbuf 0
rcvbuf 0
# TLS rules “client” | “server”
#remote-cert-tls "client"
# TLS认证
tls-auth /etc/openvpn/easy-rsa/pki/ta.key
# TLS最小版本
#tls-version-min "1.2"
# 重新协商数据交换的key,默认3600
#reneg-sec 3600
# 在此文件中维护客户端与虚拟IP地址之间的关联记录
# 如果OpenVPN重启,重新连接的客户端可以被分配到先前分配的虚拟IP地址
ifconfig-pool-persist /etc/openvpn/ipp.txt
# 配置client配置文件
client-config-dir /etc/openvpn/client/config
# 该网段为 open VPN 虚拟网卡网段,不要和内网网段冲突即可。
server 10.8.0.0 255.255.255.0
# 配置网桥模式,需要在OpenVPN服务添加启动关闭脚本,将tap设备桥接到物理网口
# 假定内网地址为192.168.0.0/24,内网网关是192.168.0.1
# 分配192.168.0.200-250给VPN使用
#server-bridge 192.168.0.1 255.255.255.0 192.168.0.200 192.168.0.250
# 给客户端推送自定义路由
#push "route 192.168.0.0 255.255.255.0"
# 所有客户端的默认网关都将重定向到VPN
#push "redirect-gateway def1 bypass-dhcp"
# 向客户端推送DNS配置
#push "dhcp-option DNS 223.5.5.5"
#push "dhcp-option DNS 223.6.6.6"
# 允许客户端之间互相访问
client-to-client
# 限制最大客户端数量
#max-clients 10
# 客户端连接时运行脚本
#client-connect ovpns.script
# 客户端断开连接时运行脚本
#client-disconnect ovpns.script
# 保持连接时间
keepalive 20 120
# 开启vpn压缩
comp-lzo
# 允许多人使用同一个证书连接VPN,不建议使用,注释状态
#duplicate-cn
# 运行用户
user openvpn
#运行组
group openvpn
# 持久化选项可以尽量避免访问那些在重启之后由于用户权限降低而无法访问的某些资源
persist-key
persist-tun
# 显示当前的连接状态
# status /var/log/openvpn/openvpn-status.log
# 日志路径,不指定文件路径时输出到控制台
# log代表每次启动时清空日志文件
#log /var/log/openvpn/openvpn.log
# log-append代表追加写入到日志文件
#log-append /var/log/openvpn/openvpn.log
# 日志级别
verb 4
# 忽略过多的重复信息,相同类别的信息只有前20条会输出到日志文件中
mute 20
配置目录 srv.conf 不能放置 配置文件放置到/etc/openvpn/server目录下
要放在
vim /etc/openvpn/easy-rsa/vars
server外层
vim /etc/openvpn/easy-rsa/vars
sudo systemctl start [email protected]
sudo systemctl status [email protected] -l
netstat -ano | grep 5634
journalctl -xe
新增客户端,只需要执行下面的生成客户端密钥就可以了
./easyrsa build-client-full client1 nopass
./easyrsa build-client-full client2 nopass
错误
static_key_parse_error https://www.reddit.com/r/OpenVPN/comments/cdkeph/unable_to_import_ovpn_to_android_static_key_parse/
key不完整
客户端 .ovpn配置
client
dev tun
proto tcp
remote x.x.x.x port
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
comp-lzo
verb 3
在线关闭客户端连接
openvpn支持在线断开client用户,前提在server.conf配置中添加 management localhost port
#!/bin/bash
##Date: 2018-10-23
##Author: Browser
##Description: turnoff the online users
##Version: 1.0
vpnuser=$1
(sleep 1
echo kill $vpnuser
sleep 1) | telnet localhost 1194
关闭在线用户:bash openvpn_close_client.sh vpnuser
配置证书注销验证 客户端使用证书登入,在注销时,可以使用easy-rsa revoke $vpnuser 进行注销证书,并在index.txt下进行日志记录,但是在实践过程中发现,仅仅在服务端注销证书后,客户端仍然可以登入,原因是openvpn没有调用注销客户端信息的资料,需要在server.conf配置文件中引用crl.pem注销文件。V为可用,R为注销 创建crl.pem更新文件
/etc/openvpn/easy-rsa/3/easyrsa gen-crl
chmod 666 /etc/openvpn/easy-rsa/3/pki/crl.pem
--config # 配置文件名称
--auth-user-pass # 指定账号密码文件