声明
- OpenVpn版本: 2.4.3
- Centos版本: 6.8
- 本机IP: 192.168.5.3
- 实现功能:
用户 | 获得网段 | 可访问网段 |
---|---|---|
普通用户 | 10.0.2.0/24 | 192.168.3.0/24 192.168.4.0/24 192.168.5.0/24 |
特殊用户 | 10.0.1.0/24 | 192.168.0.0/24 192.168.1.0/24 192.168.5.0/24 |
管理员 | 10.0.0.0/24 | 192.168.0.0/16 |
安装
安装epel库
|
|
安装openvpn
|
|
安装easy-rs
该包用来制作ca证书,服务端证书,客户端证书。最新的为easy-rsa3
编辑vars文件
先进入/etc/openvpn/easy-rsa/easyrsa3目录
1cd /etc/openvpn/easy-rsa/easyrsa3/复制vars.example 为vars
1cp vars.example vars修改vars文件的如下字段
123456set_var EASYRSA_REQ_COUNTRY “CN” //根据自己情况更改set_var EASYRSA_REQ_PROVINCE “ShangHai”set_var EASYRSA_REQ_CITY “ShangHai”set_var EASYRSA_REQ_ORG “Test”set_var EASYRSA_REQ_EMAIL “test@test.com”set_var EASYRSA_REQ_OU “TestOpenVpn”
初始化easyrsa
|
|
创建CA(根)证书
|
|
注意:在上述部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,
不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置个独一无二的。
创建服务器端证书
|
|
该过程中需要输入common name,随意但是不要跟之前的根证书的一样
签约服务端证书
|
|
该命令中.需要你确认生成,要输入yes,还需要你提供我们当时创建CA时候的密码。如果你忘记了密码,
那你就重头开始再来一次吧。
创建Diffie-Hellman
|
|
创建客户端证书
以下是为了实现证书登录而做的操作。
为了避免与服务器端证书冲突,因此另外复制一份easyrsa到另一个文件夹下操作。
进入root目录新建client文件夹(也可以是任意目录,只要有权限访问),文件夹可随意命名,
然后拷贝前面解压得到的easy-ras文件夹到client文件夹,进入下列目录,并初始化
创建客户端key及生成证书(记住生成是自己输入的密码)
1./easyrsa gen-req client (名字自定义)将的到的client.req导入然后签约证书
123cd /etc/openvpn/easy-rsa/easyrsa3/./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/client.req client./easyrsa sign client client(后面这个为客户端证书的名字,前面的为固定格式)
过程跟签约server类似,需要输入CA证书的密码
现在说一下我们上面都生成了什么东西
服务端:(/cetc/openvpn/easy-rsa/文件夹)
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
- /etc/openvpn/easy-rsa/easyrsa3/pki/reqs/client.req
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/ca.key
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key
- /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/issued/client.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem
客户端:(root/client/easy-rsa文件夹)
- /root/client/easy-rsa/easyrsa3/pki/private/client.key
- /root/client/easy-rsa/easyrsa3/pki/reqs/client.req //这个文件被我们导入到了服务端,
所以那里也有
将生成的证书拷贝到指定文件夹(/etc/openvpn/keys)
1234cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/keyscp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn/keyscp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn/keyscp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn/keys
生成ta.key文件并移动到/etc/openvpn/keys
|
|
编辑server的配置文件
当你安装好了openvpn时候,他会提供一个server配置的文件例子,在
/usr/share/doc/openvpn-2.4.3/sample/sample-config-files
下会有一个server.conf文件,我们将这个文件复制到/etc/openvpn
修改配置文件为如下内容
|
|
创建 /etc/openvpn/logs文件夹
创建 /etc/openvpn/ccd文件夹
配置特殊用户的个性化配置
文件名必须与客户端证书名或者与下面即将配置的用户名密码登录的用户名一致,
一个用户一个对应的文件,如果没有,则按默认配置
这里假设client为特殊用户,既获得的网段在192.168.1.0/24。
需要创建client对应的客户端证书(如果使用用户名密码登录,需要创建对应用户)
下载openvpn客户端,并进行配置
用sftp将我们在vpn服务器上生成的客户端证书和key下载到客户端电脑,包括如下四个文件
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/issued/client.crt
- /root/client/easy-rsa/easyrsa3/pki/private/client.key
- /etc/openvpn/keys/ta.key
去官网下载openvpn客户端进行安装,然后安装目录找到simple-config,
默认为C:\Program Files\OpenVPN\sample-config\client.ovpn。
将client.ovpn 复制到openvpn的config目录下,
默认为C:\Program Files\OpenVPN\config
将下载到的四个文件同样放入config目录下,
默认为C:\Program Files\OpenVPN\config
修改配置文件为如下内容:
经过以上配置,客户端就能连接上vpn服务器了(服务器端的1194端口要开放),但是并不能访问内网服务器,
因为vpn服务器没有配置虚拟ip的转发。
配置服务器端iptables
通过如下命令来达到将某个网段的IP转发到主网卡上,以达到与内网服务器通信的目的。
为了实现不同用户不同权限,需要做如下操作来限制不同网段的用户的访问权限
经过如此配置,即可访问内网
如果不能访问,使用如下命令检查服务器是否允许ip_forward
|
|
确保net.ipv4.ip_forward
的值为1,如果不为1,修改/etc/sysctl.conf
文件,内容如下:
|
|
使用sysctl -p
命令使修改生效
配置完成后,使用如下命令保存iptables 规则到文件
|
|
实现用户名密码登录
在经过以上配置后,再来实现用户名密码登录就简单多了,只需要改一些配置即可。
修改服务器端配置
编辑/etc/openvpn/server.conf,添加如下内容
编辑客户端配置文件,既C:\Program Files\OpenVPN\sample-config\client.ovpn
注释掉如下内容
添加如下内容
创建服务器用户,由于仅作为vpn用户登录,因此建议创建不带home目录,没有登录权限的用户