一、模拟企业环境
- centos7.9(VPN服务器):vmnet1==>192.168.10.1 vmnet8==>192.168.8.31
- win7(VPN客户端):vmnet8==>192.168.8.32
- win7 (内网服务器):vmnet1==> 192.168.10.2
1.1设置VMware网络
1.2 设置主机网络适配器
查看客户端的ip然后添加iptables—nat
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
二、如何给客户端指定固定ip
2.1 在服务端server.conf,开启ccd
2.2 在/data/app/openvpn/创建“commonName”文件
方法一:如果server.conf的没启用subnet的话,如下图所示
则ccd/commonName文件内容如下:
https://openvpn.net/community-resources/configuring-client-specific-rules-and-access-policies/
但以上的配置,存在以下的bug。
1、ip地址不能随便选需要上图的1/5/9。
2、无法ping内网,只能访问外网
方法二: 如果server.conf的启用subnet的话,如下图所示
三、openvpn负载均衡
https://openvpn.net/community-resources/implementing-a-load-balancing-failover-configuration/
如何安装openvpn可以查阅本网站,这里就不提了。
准备两台openvpn的服务端。分别是192.168.8.31/192.168.8.39
客户端配置
- remote 192.168.8.39 1194
- remote 192.168.8.31 1194
- remote-random
- resolv-retry 60
配置完毕,启动服务端,然后客户端连接,此时会随机连接。连接成功后,断开某一个openvpn服务,60秒后会切换并重新分配ip
扩展:也可以直接在同一个服务器的server.conf设置两个server
然后设置两个client证书,放在不同的客户端分别指定IP
四、如何推送DNS
在server.conf定义推送
push "dhcp-option DNS 202.106.0.20"
push "dhcp-option DNS 8.8.8.8"
定义后,客户端截图
五、分流设置或全局流量设置
# 如果启用该行指令,所有客户端的默认网关都将重定向到VPN # 这将导致诸如web浏览器、DNS查询等所有客户端流量都经过VPN # (为确保能正常工作,OpenVPN服务器所在计算机可能需要在TUN/TAP接口与以太网之间使用NAT或桥接技术进行连接)
;push “redirect-gateway def1 bypass-dhcp”
六、 吊销证书
Open×××使用easy-rsa3吊销证书
shell>cd /etc/open***/easy-rsa/easyrsa3
shell>./easyrsa revoke targetkey(证书名)
shell>./easyrsa gen-crl
其中gen-crl会生成一份吊销证书的名单,放在/etc/open***/easy-rsa/easyrsa3/pki/crl.pem文件里
最后再server.conf文件中增加此项:
crl-verify /etc/open***/easy-rsa/easyrsa3/pki/crl.pem
七 自动生成证书脚本
#!/bin/bash
OVPNSERVER=/data/app/openvpn/server
OVPNCLIENT=/data/app/openvpn/client
EASYRSA=/data/app/openvpn/easyrsa
PKI=$EASYRSA/pki
read -p "input ovpnclient name: " USER
$EASYRSA/easyrsa build-client-full $USER nopass
mkdir -p $OVPNCLIENT/$USER
cp $PKI/ca.crt $OVPNCLIENT/$USER
cp $PKI/issued/$USER.crt $OVPNCLIENT/$USER
cp $PKI/private/$USER.key $OVPNCLIENT/$USER
cp $OVPNSERVER/client.conf $OVPNCLIENT/$USER/$USER.ovpn
cp $OVPNSERVER/ta.key $OVPNCLIENT/$USER/ta.key
zip $OVPNCLIENT/$USER.zip $OVPNCLIENT/$USER
exit 0