centos7搭建openvpn服务器
随风飘扬 学习 2017年06月12日21:20 2620
OpenVPN 服务端安装配置由于不同环境及软件版本命令使用略有差异,特别是 easy-rsa 的使
OpenVPN 服务端安装配置
由于不同环境及软件版本命令使用略有差异,特别是 easy-rsa 的使用在 2.0 和 3.0 的差别有点大,所以在此先说明下安装环境及相关软件版本:
- 系统平台:Centos7
- OpenVPN 版本:2.4.9
- easy-rsa 版本:3.0.7
尽管不同环境及软件版本命令使用略有所差异,但是整个搭建过程都是一致的:
安装相关软件—>生成相关证书:CA 根证书、服务器证书—>配置 open VPN 服务端—>添加防火墙规则:snat—>启动 open VPN 服务端—>创建一个用户测试连接:创建客户端 CA 证书、生成 .ovpn 配置文件、打包相关文件供客户端使用。
安装 openvpn、easy-rsa、iptables-services
1 | yum -y install epel-release |
使用 easy-rsa 生成需要的证书及相关文件,在这个阶段会产生一些 key 和证书:
- CA 根证书
- OpenVPN 服务器 ssl 证书
- Diffie-Hellman 算法用到的 key
将 easy-rsa 脚本复制到/etc/openvpn/
,该脚本主要用来方便地生成 CA 证书和各种 key
1 | cp -r /usr/share/easy-rsa/ /etc/openvpn/ |
进入 easy-rsa 目录并编辑 vars 文件,添加一些生成证书时用到的变量
1 | cd /etc/openvpn/easy-rsa/3.0.7/ |
生成 CA 根证书
1 | ./easyrsa init-pki #初始化 pki 相关目录 |
生成 OpenVPN 服务器证书和密钥
第一个参数 server 为证书名称,可以随便起,比如 ./easyrsa build-server-full openvpn nopass
1 | ./easyrsa build-server-full server nopass |
生成 Diffie-Hellman 算法需要的密钥文件
1 | ./easyrsa gen-dh #创建Diffie-Hellman,这可能得等一小会儿 |
生成 tls-auth key,这个 key 主要用于防止 DoS 和 TLS 攻击,这一步其实是可选的,但为了安全还是生成一下,该文件在后面配置 open VPN 时会用到。
1 | openvpn --genkey --secret ta.key |
将上面生成的相关证书文件整理到/etc/openvpn/server/certs
(这一步完全是为了维护方便)
1 | mkdir /etc/openvpn/server/certs && cd /etc/openvpn/server/certs/ |
创建 open VPN 日志目录
1 | mkdir -p /var/log/openvpn/ |
配置 OpenVPN
创建一个新的配置文件cd /etc/openvpn/
vi server.conf
填入如下内容(很多配置项不需要特别了解,重要的配置这里注释出来了,其他相关配置项想了解的话见 这里):
server.conf:
1 | port 1194 # 监听的端口号 |
防火墙相关配置(使用 iptables 添加 snat 规则)
禁用 Centos7 默认的 firewalld,使用经典的 iptables 防火墙管理软件:
1 | systemctl stop firewalld |
禁用 SELinux
1 | setenforce 0 |
启用iptables
1 | systemctl enable iptables |
添加防火墙规则,将 openvpn 的网络流量转发到公网:snat 规则
1 | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE |
Linux 服务器启用地址转发
1 | echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf |
启动 open VPN
1 | systemctl start openvpn@server # 启动 |
添加一个 OpenVPN 用户
其实创建用户的过程就是生成客户端 SSL 证书的过程,然后将其他相关的证书文件、key、.ovpn 文件(客户端配置文件)打包到一起供客户端使用。由于创建一个用户的过程比较繁琐,所以在此将整个过程写成了一个脚本 ovpn_user.sh,脚本内容比较简单,一看就懂:
首先创建一个客户端配置模板文件 sample.ovpn,该文件在脚本中会用到,放到/etc/openvpn/client/
目录,内容如下:
sample.ovpn:
1 | client |
下面为创建 open VPN 用户脚本:
./ovpn_user.sh:
1 | ! /bin/bash |
执行上面脚本创建一个用户:sh ovpn_user.sh
,会在/etc/openvpn/client/keys
目录下生成以用户名命名的 zip 打包文件压缩包里面文件有如下,示例:
1 | . |
删除一个 OpenVPN 用户
上面我们知道了如何添加一个用户,那么如果公司员工离职了或者其他原因,想删除对应用户 OpenVPN 的使用权,该如何操作呢?其实很简单,OpenVPN 的客户端和服务端的认证主要通过 SSL 证书进行双向认证,所以只要吊销对应用户的 SSL 证书即可。
为了方便,也将上面步骤整理成了一个脚本,可以一键删除用户:
del_ovpn_user.sh
1 | ! /bin/bash |
使用
OpenVPN Windows客户端。下载页面
Mac 下推荐使用 Tunnelblick。Tunnelblick 是一个开源、免费的 Mac 版 open VPN 客户端软件。下载页面
参考链接:
Statement: all articles / drawings reproduced on this website are for the purpose of transmitting more information and facilitating discussion, which does not mean that the website, the host and the organizer agree with their opinions or confirm the authenticity of their contents. The contents of the articles are for reference only. If the rights of the original author are violated, please contact the website administrator.
Comment list
-
No data