1. 机器环境
1. openvpn-server服务器eth0:10.0.0.81/24 NAT模式,模拟公网IPeth1:172.25.0.1/24 仅主机模式,模拟公司内网网关2. 公司内网主机eth0:172.25.0.100/24 仅主机模式,公司内网IP3. windows10 客户端模拟在外出差员工机器
2. 安装 OpenVPN 和证书生成工具
easy-rsa 是一个实现快速简单部署 CA 和证书的软件包,也可以使用 openssl 命令来实现。
[root@vpnserver ~] yum -y install openvpn easy-rsa
3. 准备证书
3.1 easy-rsa证书工具准备
#拷贝整个easy-rsa工具包到openvpn目录下[root@vpnserver ~] cp -r /usr/share/easy-rsa/ /etc/openvpn/Cert#拷贝vars模板文件到/etc/openvpn/Cert/3目录下并命名为vars[root@vpnserver ~] cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/Cert/3/vars#修改vars文件,设置CA证书有效期,服务器有效期参数,其他如证书国家,地区,组织,加密长度等参数可按需修改,这里就不修改其他参数了#set_var EASYRSA_CA_EXPIRE 3650set_var EASYRSA_CA_EXPIRE 365000#set_var EASYRSA_CERT_EXPIRE 825set_var EASYRSA_CERT_EXPIRE 3650
3.2 搭建CA
#切换目录[root@vpnserver 3] cd /etc/openvpn/Cert/3/#初始化PKI相关目录和文件[root@vpnserver 3] ./easyrsa init-pki#创建CA[root@vpnserver 3] ./easyrsa build-ca nopass #nopass 不加密
3.3 创建服务端证书申请
[root@vpnserver 3] ./easyrsa gen-req vpnServer nopass #vpnServer 服务器申请证书名
#需要输入Common Name,直接回车使用默认名就好
3.4 签发服务端证书
[root@vpnserver 3] ./easyrsa sign server vpnServer #server 证书类型
#需要确认申请信息,输入yes
3.5 创建Diffie-Hellman密钥
[root@vpnserver 3] ./easyrsa gen-dh
#生成随机数,需要等待一会
3.6 创建客户端证书申请
[root@vpnserver 3] ./easyrsa gen-req wuvikr nopass
3.7 签发客户端证书
[root@vpnserver 3] ./easyrsa sign client wuvikr #client 证书类型
#建议在执行这一步之前修改下vars文件里的参数,将客户端的证书有效期适当调短一些,例如90天
#set_var EASYRSA_CERT_EXPIRE 90
3.8 将需要用到的服务端,客户端证书文件分别各自复制一份放到server,client/wuvikr文件夹中,方便后续使用
#复制服务端密钥,证书
[root@vpnserver 3] cp pki/ca.crt pki/issued/vpnServer.crt pki/private/vpnServer.key pki/dh.pem /etc/openvpn/server/
#复制客户端密钥,证书
[root@vpnserver 3] mkdir /etc/openvpn/client/wuvikr
[root@vpnserver 3] cp pki/ca.crt pki/issued/wuvikr.crt pki/private/wuvikr.key /etc/openvpn/client/wuvikr
4. 配置VPN服务
4.1 准备服务端配置文件server.conf
[root@vpnserver 3] vim /etc/openvpn/server.conf
port 1194
proto tcp
;proto udp
;explicit-exit-notify 1
dev tun
;dev tap
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpnServer.crt
key /etc/openvpn/server/vpnServer.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "route 172.25.0.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
max-clients 2048
user openvpn
group openvpn
# OpenVPN Log
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
#Enable multiple client to connect with same Certificate key
;duplicate-cn
4.2 准备日志相关目录
[root@vpnserver 3] mkdir /var/log/openvpn
[root@vpnserver 3] chown openvpn.openvpn /var/log/openvpn
[root@vpnserver 3] ll -d /var/log/openvpn
drwxr-xr-x 2 openvpn openvpn 6 Sep 27 17:35 /var/log/openvpn
4.3 准备iptables的SNAT规则和启用转发功能
[root@vpnserver openvpn] echo 'iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE' >> /etc/rc.d/rc.local
[root@vpnserver openvpn] chmod +x /etc/rc.d/rc.local
[root@vpnserver openvpn] /etc/rc.d/rc.local
[root@vpnserver openvpn] echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@vpnserver openvpn] sysctl -p
4.4 启动OpenVpn服务
[root@vpnserver openvpn] systemctl enable --now openvpn@server
4.5 准备客户端配置文件
[root@vpnserver openvpn] vim /etc/openvpn/client/wuvikr/wuvikr.ovpn
client
dev tun #必须和服务端一致
proto tcp #必须和服务端一致
remote 10.0.0.71 1194 #生产环境为OpenVpn服务器公网IP
resolv-retry infinite
nobind
ca ca.crt
cert wuvikr.crt
key wuvikr.key
remote-cert-tls server
cipher AES-256-CBC
verb 3
compress lz4-v2 #需要和服务端一致,不指定默认为comp-lzo
5. 客户端测试
- 将
/etc/openvpn/client/wuvikr下的所有文件打包下载到 windows 机器
2. 在 windows 机器安装 OpenVPN 客服端软件
3. 将复制下来的打包文件复制软件安装目录下的config目录下并解压
4. 启动客户端软件,连接模拟内网的机器 172.25.0.100,测试是否链接成功
