CentOS 6/7 安装配置 OpenVPN Server

发布时间: 更新时间: 总字数:1223 阅读时间:3m 作者:IP:上海 网址
专栏文章
  1. alpine 部署 v2ray 服务
  2. Clash 使用
  3. Hysteria 2 介绍
  4. Mitmproxy HTTPS 代理工具
  5. WireGuard VPN 安装和使用
  6. Inode VPN 使用
  7. V2ray 介绍
  8. Shadowsocks Python版一键安装脚本
  9. OpenVPN client 使用问题
  10. OpenVPN server 配置文件详细说明
  11. CentOS 6/7 安装配置 OpenVPN Server(当前)
  12. CentOS 架设PPTP VPN服务教程

本文章描述了如何在阿里云 CentOS release 6.7/7 (Final)服务器上安装与配置 OpenVPN 服务器,以及如何编写客户端连接到新建立的 OpenVPN 服务器上所需的配置文件。

添加 EPEL 源

由于 OpenVPN Server 不在默认源中,所以需要安装 Extra Packages for Enterprise Linux (EPEL) 仓库,其中包含有 OpenVPN 的包。

wget ftp://rpmfind.net/linux/centos/6.8/extras/x86_64/Packages/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

安装 OpenVPN

首先安装 OpenVPN:

yum install openvpn -y

从示例配置文件复制一份配置文件到/etc/openvpn

cp /usr/share/doc/openvpn-2.3.12/sample/sample-config-files/server.conf /etc/openvpn/

打开 /etc/openvpn/server.conf 编辑:

vim /etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nobody

使用 easy-rsa 生成证书及密钥

  1. 安装 easy-rsa

完成了对于配置文件的修改之后,我们接下来生成 keys 和 certificates。由于 OpenVPN-2.3.12 中没有了示例的 easy-rsa 相关文件,我们首先需要安装它:

yum install easy-rsa -y

将相关文件复制到 OpenVPN 的配置目录:

cp -R /usr/share/easy-rsa/ /etc/openvpn

现在有关的文件都在 /etc/openvpn/easy-rsa/2.0/ 这个目录中。

  1. 调整 easy-rsa 密钥生成配置

首先需要修改的是 vars 文件

vim /etc/openvpn/easy-rsa/2.0/vars

将以下这些值修改成你自己的值:

export KEY_COUNTRY="CN"
export KEY_PROVINCE="ZZ"
export KEY_CITY="Zheng Zhou"
export KEY_ORG="xiexianbin.cn"
export KEY_EMAIL="me@xiexianbin.cn"
export KEY_CN=vpn.xiexianbin.cn
export KEY_NAME=EasyRSA
export KEY_OU=vpn.xiexianbin.cn

另外这中间还有 KEY_SIZE,可以自己修改,不过需要与之后的配置文件对应,默认为 1024

export KEY_SIZE=2048

修改完成之后,执行 source ./vars, 清空目录并生成 Certificate Authority(CA):

cd /etc/openvpn/easy-rsa/2.0
source ./vars
  1. 生成密钥

3.1 生成 CA, 服务器证书及密钥

在/etc/openvpn/easy-rsa/2.0 目录中执行:

./clean-all
./build-ca

[root@xiexianbin_cn 2.0]# cd keys/
[root@xiexianbin_cn keys]# ll
total 12
-rw-r--r-- 1 root root 1797 Nov  2 21:32 ca.crt
-rw------- 1 root root 1704 Nov  2 21:32 ca.key
-rw-r--r-- 1 root root    0 Nov  2 21:32 index.txt
-rw-r--r-- 1 root root    3 Nov  2 21:32 serial
[root@xiexianbin_cn keys]#

执行完成之后在/etc/openvpn/easy-rsa/2.0/keys 目录中产生了 CA,接下来为服务器生成密钥:

./build-key-server server

有了服务器密钥,再生成 Diffie Hellman key exchange 文件,这里生成的长度由之前的 KEY_SIZE 决定:

./build-dh

执行完成会产生 dh2048.pem (如果你的 KEY_SIZE = 1024,这里产生的文件是 dh1024.pem)

将四个所需文件复制到 OpenVPN 配置目录中去:

cd /etc/openvpn/easy-rsa/2.0/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

3.2 生成客户端证书和密钥

在/etc/openvpn/easy-rsa/2.0/目录中执行:

./build-key client

会在目录中产生客户端所需的证书和密钥 client.crt client.key ca.crt

配置路由并启动 OpenVPN Server

  1. 防火墙配置

在 CentOS 6.7 中,

iptables -I INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
service iptables save || iptables-save > /etc/sysconfig/iptables
service openvpn start

在 CentOS 7 中,iptables 防火墙已经被 firewalld 所取代,需要使用如下方法:

首先启动 firewalld

systemctl status firewalld.service

查看有哪些服务已经在列表中允许通过:

# firewall-cmd --list-services
dhcpv6-client http https ssh

可以看到已经有了 dhcpv6-client, http, https, ssh 四项,接下来添加 openvpn:

# firewall-cmd --add-service openvpn
success
# firewall-cmd --permanent --add-service openvpn
success

检查一下:

# firewall-cmd --list-services
dhcpv6-client http https openvpn ssh

最后添加 masquerade:

# firewall-cmd --add-masquerade
success
# firewall-cmd --permanent --add-masquerade
success

以下命令用于确认 masquerade 是否添加成功:

# firewall-cmd --query-masquerade
yes
  1. 允许 IP 转发

在 sysctl 中开启 IP 转发

vim /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

生效:

sysctl -p
  1. 启动 OpenVPN 服务

centos6.7 启动 OpenVPN 服务器并添加自动启动项:

service openvpn start

centos7 启动 OpenVPN 服务器并添加自动启动项:

systemctl start openvpn@server
systemctl enable openvpn@server

至此服务端搭建完成。

  1. 客户端配置文件

取回之前生成的位于/etc/openvpn/easy-rsa/2.0/keys 中的三个文件:

ca.crt
client.crt
client.key

在你的客户端创建一个文件 xiexianbin.ovpn, 将这三个文件与其放在同一目录中,编辑 xiexianbin.ovpn 内容如下:

client
dev tun
proto udp
remote vpn.xiexianbin.cn 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key

将其中的 vpn.xiexianbin.cn 替换为你的服务器地址,如果端口、证书、密钥不同的话修改相应的项即可

Android

直接使用 OpenVPN 官方的 OpenVPN Connect 即可,选择 import 导入配置文件。

Mac OS X

使用第三方的 Tunnelblick 连接,注意根据你的操作系统版本选择合适的版本。