1 安装OpenVPN
开启epel源,并采用yum的方式安装openvpn:
$ yum install -y epel-release
$ yum update -y
$ yum install -y openssl lzo pam openssl-devel lzo-devel pam-devel
$ yum install -y easy-rsa
$ yum install -y openvpn
2 配置OpenVPN服务器
2.1 创建配置过程中需要使用的目录
- 创建日志存放目录:
mkdir -p /var/log/openvpn/ - 创建用户管理目录:
mkdir -p /etc/openvpn/server/user - 配置目录权限:
chown openvpn:openvpn /var/log/openvpn
2.2 生成证书
通过yum方式安装的easy-rsa是3.x版本,可直接从安装目录中拷贝一份工具到/etc/openvpn中
$ cp -rf /usr/share/easy-rsa/3.0.8 /etc/openvpn/server/easy-rsa
2.2.1 为服务器端创建证书
- 切换至
/etc/openvpn/server/easy-rsa目录 - 使用命令
./easyrsa init-pki进行初始化,会在当前目录创建PKI目录,用来存储一些中间变量和最终生成的证书 - 使用命令
./easyrsa build-ca nopass创建证书 - 生成服务器端证书:
./easyrsa build-server-full server nopass - 创建
Diffie-Hellman:./easyrsa gen-dh,确保key可以穿越不安全网络的命令 - 整理服务器端证书:
$ mkdir -p /etc/openvpn/server
$ cp -a pki/ca.crt /etc/openvpn/server/
$ cp -a pki/private/server.key /etc/openvpn/server
$ cp -a pki/issued/server.crt /etc/openvpn/server
$ cp -a pki/dh.pem /etc/openvpn/server
$ cp -a ta.key /etc/openvpn/server
2.2.2 为客户端创建证书
- 生成无密码的客户端证书:
./easyrsa build-client-full client nopass - 生成带密码的客户端证书:
./easyrsa build-client-full jiaoxn,会提示让你输入密码,记住设置的密码,在连接OpenVPN服务端时会使用,可多次操作该步骤为多个用户创建证书
2.2.3 创建ta.key
为了提高OpenVPN的安全性,可以创建ta.key:openvpn --genkey --secret ta.key,能够加强认证方式,防止攻击。
2.3 编辑配置文件
-
拷贝
sample.conf到/etc/openvpn作为起始配置文件:cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/server -
使用
vi /etc/openvpn/server.conf命令编辑配置文件- 将25行修改为:
local 0.0.0.0 - 取消35行注释,修改效果:
proto tcp - 注释36行,修改效果:
; proto udp - 修改78行,设置
ca.crt的路径:ca /etc/openvpn/server/ca.crt - 修改79行,设置
server.crt的路径:ca /etc/openvpn/server/server.crt - 修改80行,设置
server.key的路径:ca /etc/openvpn/server/server.key - 修改85行,设置
dh的路径:dh /etc/openvpn/server/dh.pem - 修改141行:
push "route 10.10.10.0 255.255.255.0" - 修改244行:
tls-auth /etc/openvpn/server/ta.key 0 - 取消257行注释:
compress lz4-v2 - 取消258行注释:
push "compress lz4-v2" - 取消274、275行注释
- 取消296行注释,并修改日志文件地址:
log /var/log/openvpn.log - 注释315行
- 其他配置内容保持默认即可
- 将25行修改为:
3 启动OpenVPN并配置开机启动
- 使用命令
vi /usr/lib/systemd/system/openvpn-server\@.service编辑服务文件,修改ExecStart的值为ExecStart=/usr/sbin/openvpn --status %t/openvpn-server/status-%i.log --status-version 2 --suppress-timestamps --config server.conf - 修改服务文件的名称
cp /usr/lib/systemd/system/openvpn-server\@.service /usr/lib/systemd/system/openvpn-service - 启动
OpenVPN:systemctl start openvpn-service - 配置
OpenVPN开机启动:sysemctl enable openvpn-service
4 配置防火墙
配置防火墙,开启1194端口:
$ firewall-cmd --permanent --add-masquerade
$ firewall-cmd --permanent --add-service=openvpn
$ firewall-cmd --permanent --add-port=1194/tcp
$ firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$ firewall-cmd --reload
5 Windows客户端配置
- 从
/etc/openvpn/server/easy-rsa拷贝ta.key文件 - 从
/etc/openvpn/server/easy-rsa/pki/private拷贝客户端的.key文件,例如:jiaoxn.key - 从
/etc/openvpn/server/easy-rsa/pki/issued拷贝客户端的.crt文件,例如:jiaoxn.crt - 从
/etc/openvpn/server/easy-rsa/pki拷贝客户端的ca.crt文件 Windows系统安装OpenVPN客户端后,打开配置文件夹(默认是:C:\Program Files\OpenVPN\config),新建文件夹(例如:client),拷贝前面4个文件到新建的文件夹- 在第5步新建的文件夹中,创建
client.ovpn文件(文件名和文件夹名称一致),配置内容如下,其中jiaoxn.crt、jiaoxn.key替换成对应的文件名
client
dev tun
proto tcp
remote 192.168.1.70 1194
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
ca ca.crt
cert jiaoxn.crt
key jiaoxn.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
compress lz4-v2
verb 3
;mute 20
- 右键
VPN图标,选择刚刚配置的文件夹名称,点击“连接”,密码为姓名缩写+"@123",例如:``jiaoxn@123