前面有一篇记录了openvpn2.3.4的部署,这次在使用最新版本2.4.7时用的easy-rsa 3.0在配置上和2.*的版本有些不一样,特此做个记录……
一、编译安装OpenVPN
编译或是yum安装openvpn都可以
1.1 安装依赖包、yum源
1 | [root@localhost ~]# yum install openssl-devel lzo-devel pam-devel gcc |
1 | [root@localhost ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo |
1.2 下载OpenVPN源码
1 | [root@localhost ~]# wget https://swupdate.openvpn.org/community/releases/openvpn-2.4.7.tar.gz |
1.3 编译安装OpenVPN
1 | [root@localhost ~]# tar xf openvpn-2.4.7.tar.gz |
二、安装easy-rsa
1 | [root@localhost ~]# yum -y install easy-rsa |
三、配置服务端
3.1 复制文件
1 | [root@localhost ~]# cp -r /usr/share/easy-rsa /etc/openvpn/ |
3.2 生成证书
创建一个新的PKI和CA
1 | [root@localhost 3.0.3]# pwd |
3.3 创建服务端证书
1 | [root@localhost 3.0.3]# ./easyrsa gen-req server nopass |
3.4 签约服务端证书
给server端证书做签名,首先是对一些信息的确认,可以输入yes,然后输入build-ca时设置的那个密码
1 | [root@localhost 3.0.3]# ./easyrsa sign-req server server |
3.5 验证证书文件
使用OpenSSL
命令验证证书文件,并确保没有错误。出现下面的信息就代表你前面所做的操作是没问题的
1 | [root@localhost 3.0.3]# openssl verify -CAfile pki/ca.crt pki/issued/server.crt |
3.6 创建 Diffie-Hellman
时间会有点长,耐心等待
1 | [root@localhost 3.0.3]# ./easyrsa gen-dh |
3.7 服务端配置
1 | [root@localhost 3.0.3]# vim /etc/openvpn/server.conf |
这里client-config-dir /etc/openvpn/ccd 是客户端的ip范围配置文件
例如:
1 | [root@localhost openvpn]# cat ccd/xfyun-bj-qa1 |
这里的地址段是255.255.255.252格式的,实例只有两个可用ip,在写配置的时候一定要计算好,否则连接后访问不了该vpn客户端
3.8 拷贝服务器证书
1 | [root@localhost openvpn]# cp easy-rsa/3.0.3/pki/ca.crt /etc/openvpn/server/ |
3.9 创建运行用户
创建openvpn运行用户 openvpn
1 | [root@localhost openvpn]# useradd -s /sbin/nologin openvpn |
3.10 启动openvpn
1 | [root@localhost openvpn]# nohup /etc/openvpn/sbin/openvpn --config /etc/openvpn/server.conf & |
配置开机启动
1 | [root@localhost openvpn]# echo "nohup /usr/sbin/openvpn --config /etc/openvpn/server.conf" >> /etc/rc.d/rc.local |
或者:
1 | [root@localhost openvpn]# cat /usr/lib/systemd/system/openvpn.service |
四、创建客户端证书
4.1 创建证书
1 | [root@localhost 3.0.3]# cd /etc/openvpn/easy-rsa/3.0.3/ |
4.2 签约客户端证书
1 | [root@localhost 3.0.3]# ./easyrsa sign-req client haifly-bj-ops |
4.3 整理证书,把证书拷贝到客户端上
1 | [root@localhost 3.0.3]# cd /etc/openvpn/client/ |
五、配置客户端连接
5.1 配置linux客户端
安装客户端、配置
ca证书和密钥文件放在/etc/openvpn/key目录下
1 | [root@haifly-bj-tools1 ~]# yum install -y openvpn |
开启内核数据包转发功能
1 | [root@haifly-bj-tools1 openvpn]# echo 1 >/proc/sys/net/ipv4/ip_forward |
启动VPN
1 | [root@haifly-bj-tools1 openvpn]# /etc/init.d/openvpn start |
配置开机自启动
1 | [root@haifly-bj-tools1 openvpn]# echo "cd /etc/openvpn/" >> /etc/rc.d/rc.local |
如果使用了防火墙,需要配置iptables数据包转发
一般配置完成后客户端连接后和内网不通,因为没有配置iptables数据包NAT转发
一般先清空iptables策略,配置数据包转发后再添加其他策略(端口限制、IP限制等)
允许客户端ip 10.8.0.0/24网段的和内网通信
1 | iptables -t nat -A POSTROUTING -s 10.8.0.0``/24` `-o eth0 -j MASQUERADE |
限制指定客户端IP只能访问指定服务器或服务(上面那条不存在的情况下配置此条策略)
限制客户端IP 10.8.0.6 只能访问内网172.16.206.78服务器
1 | iptables -t nat -A POSTROUTING -s 10.8.0.6``/30` `-o eth0 -d 172.16.206.78 -j MASQUERADE |
允许VPN客户端的IP访问指定IP指定端口
1 | iptables -t nat -A POSTROUTING -s 192.168.60.204``/30` `-o eth0 -p tcp --dport 8080 -d 172.16.203.120 -j MASQUERADE``-s 指定客户端IP ccd文件配置的静态IP``-p 指定协议``--dport 指定访问目标端口``-d 指定访问IP地址 |
查看iptables规则以序号形式显示
1 | iptables -t nat -L -n --line-number |
删除序号为几的策略
1 | iptables -t nat -D POSTROUTING 1 |
5.2 配置windows客户端
客户端软件 openvpn-install-2.4.7-I603.exe
我这边是把客户端相关证书直接写到 client.ovpn 配置文件里,然后通过导入配置文件的方式加载进去
1 | client |
然后点击桌面图标OpenVPN GUI
连接
六、证书吊销
如果您的VPN服务器上有多个客户端证书,并且想撤消某些密钥,则只需使用easy-rsa命令撤消。
6.1 撤消客户端密钥
1 | ./easyrsa revoke xxxx |
6.2 生成CRL密钥
1 | ./easyrsa gen-crl |
在 pki 目录下会生成一个 crl.pem 文件
6.3 修改 server.conf 打开 crl-verify 选项
1 | vim server.conf |
6.4 重启 openvpn 服务
重启 openvpn 服务后再测试client端连接,已经连不上了,说明销户成功。
往后在吊销客户端证书只需要执行6.1 6.2 6.4步骤即可。