Open Vpn
前言
本文档由陈德2020年4月25日星期六开始整理而成。
这里部署的环境基于OpenVPN 2.4.X等后续版本。
第一部分:OpenVPN 3.X的安装和制作证书
- OpenVPN的安装
安装很简单,zypper in opevpn 即可
还要找到证书制作的工具包:easy-rsa,可以去官网下载,有2.X和3.X的版本,制作证书的过程差异比较大。我们这里采用最新的3.0.8版本制作证书。
用zypper或者yum安装easy-rsa的包,或者到官网下载:
https://github.com/OpenVPN/easy-rsa/releases
- 证书制作
这里记录下OpenVPN证书的生成配置过程,我们先将程序copy到两个不同的目录,一个当做server,另一个当做client。
总结:实际就是按照下面这个顺序,依次执行脚本即可。
|
|
参考:
https://blog.rj-bai.com/post/136.html
先到server端:
到 client 端执行:
上面开始手工添加很多个客户端。
之后回到 server:
第二部分:OpenVPN网络互通配置关键技巧
- 路由转发的设置(这是很常见的服务)
#记住,一定要在OpenVPN Server上面加入下面的转发设置,
#否则客户端无法访问服务器内网其它机器。
#echo 1 > /proc/sys/net/ipv4/ip_forward
同时服务器一定要加:/etc/sysctl.conf net.ipv4.ip_forward = 1
- 一个典型的配置
这里截图是一个典型的服务器端配置:
一般不要开启,duplicate-cn,这样一个证书就不能同时登录了。
如果客户端想要固定IP地址,可以在ccd文件夹中创建客户端名称对应的文件,里面加入对固定IP的设置,ipp.txt的方式可能过时了,有时候不起作用。ccd文件夹中的IP配置如下:
对应客户端的配置文件:
这里客户端的IP地址可以配置多个,客户端会自动检测一个可用的连接上。这样可以实现VPN的高可用功能。
- 更复杂的互联互通
参考:
http://www.linuxfly.org/post/86/ https://www.bbsmax.com/A/GBJrl93qd0/ https://www.ilanni.com/?p=9847 http://blog.chinaunix.net/uid-31139844-id-5757034.html
A. 给所有客户端加路由:
在server.conf中加入上面的语句,所有客户端都可以访问服务器内网段10.10.200.xxx和10.10.11.xxx的服务器了。
B. 只给特定的客户端加特定的路由:
如果把server.conf中的路由去掉,而在ccd配置文件中给某个单独的客户端证书加入路由,这样可以实现只有具体的客户端能通服务器的内网网段。比如下面client001的证书:
注意:这个不能作为安全控制方式,client001没有自动添加路由信息的话,客户端使用者可以在自己的pc上手工加入路由信息,一样能通服务器内网段机器。如果想要控制访问,最好的办法可能还是利用防火墙。
C. 如果客户端是windows系统,固定IP只能指定对应的值:
为了兼容Windows的TAP驱动,所以每对tun都必须在/30子网中,如下列表:
|
|
第三部分:常见问题
如何吊销其中一个证书
新版的openvpn比较简单,比如我们吊销掉client004的证书:
|
|
上面进入server端的证书安装目录,执行2条语句就行了。
将生成的crl.pem文件copy出来,放在openvpn服务器端的相应目录,之后修改配置文件,重启openvpn即可。
|
|
错误CRL has expired
有一次周末突然所有VPN都连接不上了,吓出一身冷汗,上Server端查看日志出现如下提示:
VERIFY ERROR: depth=0, error=CRL has expired
上网查询发现是server端引入了吊销的机制,加入了crl-verify /etc/openvpn/ccd/crl.pem
这个一行配置文件;这里的crl.pem默认是有有效期的,系统默认是180天。大家可以查看vars
和easyrsa
这两个文件,搜索CRL_DAYS
关键字就可以看到配置的默认是180天了。
解决办法两个:
|
|
参考:
https://developer.aliyun.com/article/808039
(完)
- 原文作者: 闪电侠
- 原文链接:https://chende.ren/2020/11/22182852-open-vpn.html
- 版权声明:本作品采用 开放的「署名 4.0 国际 (CC BY 4.0)」创作共享协议 进行许可