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