openvpn多客户端&文本式验证

  • 1.目标
    1.1使用使用openvpn穿透回某内网
    1.2各客户端自动获取ip且不重复
    1.3取缔cert和key验证,使用帐号密码方式的验证
  • 2.环境
    2.1某内网环境,centos,存在于内网的客户端
    2.2中转服务器,存在于外网的服务端,centos7
    2.3各使用者客户端,windows
  • 3.实现
    3.1客户端➡中转➡内网
    3.2中转➡内网,是一直存在的openvpn穿透,使用静态ip互通,这里不多讲述,可以参考文章末尾的其他文章
    3.3客户端静态路由到中转,中转再静态路由到内网
1
2
3
4
5
6
7
8
9
C:\WINDOWS\system32>TRACERT 10.110.220.1
通过最多 30 个跃点跟踪
到 WIN-RKOU3FVEG79 [10.110.220.1] 的路由:
 
  1    19 ms    14 ms    12 ms  192.168.21.1
  2    24 ms    23 ms    26 ms  192.168.20.14
  3    72 ms    22 ms    24 ms  10.110.2.254
  4     *        *        *     请求超时。
  5    24 ms    21 ms    24 ms  WIN-RKG79 [10.110.220.1]

openvpn多客户端&文本式验证

4.中转服务器配置openvpn
4.1由于我原来已有openvpn,却没easy-rsa,所以重新下载

1
2
3
4
5
wget https://openvpn.net/release/openvpn-2.1.3.tar.gz  
tar -xvzf openvpn-2.1.3.tar.gz  
cd openvpn-2.1.3  
cp -R easy-rsa/ /etc/openvpn #仅拷贝easy-rsa目录
cd /etc/openvpn/easy-rsa/2.0/  #进入目录

4.2然后开始一步步生成证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vim vars #配置vars文件
 
# 定义你所在的国家  
export KEY_COUNTRY="CN"  
# 你所在的省份  
export KEY_PROVINCE="BJ"  
# 你所在的城市  
export KEY_CITY="Beijing"  
# 你所在的组织  
export KEY_ORG="XXXX"  
# 你的单位  
export KEY_OU="XXXX"  
# 你的邮件地址  
export KEY_EMAIL="xxxxxx@qq.com"

4.3配置完成后bash执行

1
2
source ./vars 
./clean-all #执行./clean-all将删除/etc/openvpn/easy-rsa/2.0/keys/下的文件

4.4生成ca和key

1
2
./build-ca 
ls keys/  #可以查看到ca.crt等文件

4.5生成服务端证书

1
2
./build-key-server server #server是证书的名字,可以随意取
ls keys/  #可以查看到server.crt等文件

4.6生成客户端证书

1
2
./build-key client #client是证书的名字,可以随意取
ls keys/  #可以查看到client.crt等文件

4.7生成Diffie Hellman 文件

1
2
./build-dh  
ls keys/ #可以查看到一个dh(n).pem的文件,(n)是数字

4.8配置服务端配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
port 6667
proto udp
dev tap9
server 192.168.21.0 255.255.255.0 #ovpn的dhcp段,服务器默认是0.0.0.1
ca keys/ca.crt #证书
cert keys/server.crt #证书
key keys/server.key #证书
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
script-security 2
tun-mtu 1396
dh keys/dh1024.pem #dh文件
status /var/log/openvpn-status.log
push "route 10.110.220.1 255.255.255.255" #添加静态路由

4.9配置客户端配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
client  
proto udp
dev tap
remote 103.213.245.X 6667 服务点地址 端口
user nobody
group nobody
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
script-security 2
tun-mtu 1396
ca ca.crt #证书
cert client.crt #证书
key client.key #证书

4.10 到此为止,一对一的客户端和服务端已经配置完毕,如果要添加用户,需要再生成证书,但是这样非常的麻烦,所以我就改成了文本验证的方式

5.ovpn文本验证
5.1配置文件直接添加如下代码

1
2
3
script-security 3   
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env 
client-cert-not-required

5.2密码验证脚本配置

1
2
3
4
cd /etc/openvpn
wget --no-check-certificate https://github.com/isohybrid/linux-gateway/raw/1d5a2ad7554fdc025eded74a6f9757d8ebe58852/routing/checkpsw.sh
chmod u+x checkpsw.sh
chown nobody.nobody checkpsw.sh

5.3配置密码文件

1
2
3
4
vim psw-file
内容格式:用户名密码
user1 pass
user2 pass

5.4重启ovpn服务

5.5修改客户端文件,且将ca合并到配置文件内

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ca ca.crt #注释证书
#cert client.crt #注释证书
#key client.key #注释证书
auth-user-pass #使用自动验证模式
 
-----BEGIN CERTIFICATE-----
MIIDEzCCAnygAwIBAgIJAKE5KWT+K46iMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNV
BAYTAkNOMQswCQYDVQQIEwJHRDELMAkGA1UEBxMCR1oxCzAJBgNVBAoTAkxYMQ4w
DAYDVQQDEwVMWCBDQTEfMB0GCSqGSIb3DQEJARYQMzU3NzkxMTk1QHFxLmNvbTAe
Fw0xODA0MjYxMzUwMzFaFw0yODA0MjMxMzUwMzFaMGUxCzAJBgNVBAYTAkNOMQsw
CQYDVQQIEwJHRDELMAkGA1UEBxMCR1oxCzAJBgNVBAoTAkxYMQ4wDAYDVQQDEwVM
WCBDQTEfMB0GCSqGSIb3DQEJARYQMzU3NzkxMTk1QHFxLmNvbTCBnzANBgkqhkiG
9w0BAQEFAAOBjQAwgYkCgYEA0APEbdDktOeO/Lke6q1r5oUt4K03U7zLUglIjFOV
sVm+uKZRUE2XAqCx61t3oXpuREcBXWIgR+RIpxS/5Wa/1CivkWLeq/5WNvFcxM3a
bl4QIIMll+0Q+TFL9jdpAztTOARNYeEVTR89TqSKBqAp6o/eZSse1ape8lccDoSk
15MCAwEAAaOByjCBxzAdBgNVHQ4EFgQUjEZC5QA1LOe9zixJnbLPbeEIBagwgZcG
A1UdIwSBjzCBjIAUjEZC5QA1LOe9zixJnbLPbeEIBaihaaRnMGUxCzAJBgNVBAYT
AkNOMQswCQYDVQQIEwJHRDELMAkGA1UEBxMCR1oxCzAJBgNVBAoTAkxYMQ4wDAYD
VQQDEwVMWCBDQTEfMB0GCSqGSIb3DQEJARYQMzU3NzkxMTk1QHFxLmNvbYIJAKE5
KWT+K46iMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAaYL7ukkaHIeZ
+zkU+QA+j9ceGcu8NlK2CE3lgj641NBfMP+U68zzCO6CqvpEzmFP/UPMrUwYsf0e
8CeeIU1UJSreRXXjdhBe4BUFktvR5ew=
-----END CERTIFICATE-----
 
#ca文件合并到配置文件内

6.扩展阅读
openvpn windows客户端下载
centos7下openvpn配置与单独service管理
windows通过openvpn连通内网(一)——有公网ip

添加评论