centos7搭建openvpn服务器
随风飘扬 学习 2017年06月12日21:20 2617
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 客户端软件。下载页面
参考链接:
Oświadczenie: wszystkie artykuły / rysunki zamieszczone na tej stronie mają na celu przekazywanie więcej informacji i ułatwienie dyskusji, co nie oznacza, że strona internetowa, gospodarz i organizator zgadzają się z ich opiniami lub potwierdzają autentyczność ich treści. Zawartość tych artykułów jest tylko do odwołania. W przypadku naruszenia praw pierwotnego autora prosimy o kontakt z administratorem strony internetowej.
Lista komentarzy
-
Brak danych