如何在CentOS6上设置和配置OpenVPN服务器

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。

原因: CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) and no longer receives security patches or updates. For this reason, this guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您正在使用的 CentOS 版本编写的指南。

以下 DigitalOcean 教程可能会立即引起人们的兴趣,因为它概述了在 CentOS 7 服务器上安装和配置 OpenVPN:




介绍

本文将指导您在 CentOS 6 云服务器上设置和配置 OpenVPN 服务器。 我们还将介绍如何配置您的 Windows、OS X 或 Linux 客户端以连接到您新安装的 OpenVPN 服务器。

在开始之前,您需要在云服务器上启用 Extra Packages for Enterprise Linux (EPEL) Repository。 这是 Fedora 项目提供的第三方存储库,它将提供 OpenVPN 包。

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

初始 OpenVPN 配置

首先,从 EPEL 安装 OpenVPN 包:

yum install openvpn -y

OpenVPN 仅附带一个示例配置,因此我们将配置文件复制到其目标位置:

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

现在我们将文件放在正确的位置,打开它进行编辑:

nano -w /etc/openvpn/server.conf

我们的第一个更改是取消注释“push”参数,该参数会导致我们客户端系统上的流量通过 OpenVPN 路由。

push "redirect-gateway def1 bypass-dhcp"

我们还希望更改紧随将 DNS 查询路由到 Google 的公共 DNS 服务器的部分。

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

此外,为了增强安全性,请确保 OpenVPN 在启动后放弃权限。 取消注释相关的“用户”和“组”行。

user nobody
group nobody

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

现在我们已经完成了配置文件的修改,我们将生成所需的密钥和证书。 与配置文件一样,OpenVPN 默认将所需的脚本放在文档文件夹中。 创建所需的文件夹并将文件复制过来。

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa

使用所需位置的文件,我们将编辑“vars”文件,该文件为 easy-rsa 脚本提供所需的信息。

nano -w /etc/openvpn/easy-rsa/vars

我们正在寻找修改位于文件底部的“KEY_”变量。 变量名称具有相当的描述性,应填写适用的信息。

完成后,“vars”文件的底部应类似于以下内容:

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="Organization Name"
export KEY_EMAIL="administrator@example.com"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server

OpenVPN 可能无法正确检测 CentOS 6 上的 OpenSSL 版本。 作为预防措施,请手动复制所需的 OpenSSL 配置文件。

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

我们现在将切换到我们的工作目录并根据上面提供的信息构建我们的证书颁发机构或 CA。

cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca

现在我们有了 CA,我们将为 OpenVPN 服务器创建证书。 当 build-key-server 询问时,回答是提交。

./build-key-server server

我们还需要使用 build-dh 脚本生成我们的 Diffie Hellman 密钥交换文件,并将我们所有的文件复制到 /etc/openvpn 中,如下所示:

./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

为了允许客户端进行身份验证,我们需要创建客户端证书。 您可以根据需要重复此操作,为每个客户端或设备生成唯一的证书和密钥。 如果您计划拥有多个证书对,请务必使用描述性文件名。

cd /etc/openvpn/easy-rsa
./build-key client

路由配置和启动 OpenVPN 服务器

创建一个 iptables 规则以允许正确路由我们的 VPN 子网。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save

然后,在 sysctl 中启用 IP 转发:

nano -w /etc/sysctl.conf

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

最后,应用我们的新 sysctl 设置。 启动服务器并确保它在引导时自动启动:

sysctl -p
service openvpn start
chkconfig openvpn on

您现在拥有一个正常工作的 OpenVPN 服务器。 在以下步骤中,我们将讨论如何正确配置您的客户端。

配置 OpenVPN 客户端

现在您的 OpenVPN 服务器已在线,让我们配置您的客户端进行连接。 无论您使用什么操作系统,这些步骤都基本相同。

为了继续,我们需要从远程服务器检索 ca.crt、client.crt 和 client.key 文件。 只需使用您最喜欢的 SFTP/SCP(安全文件传输协议/安全复制)客户端并将它们移动到本地目录。 您也可以在 nano 中打开文件并手动将内容复制到本地文件。 请注意,client.crt 和 client.key 文件将根据之前与“./build-key”一起使用的参数自动命名。 所有必要的文件都位于 /etc/openvpn/easy-rsa/keys

nano -w /etc/openvpn/easy-rsa/keys/ca.crt
nano -w /etc/openvpn/easy-rsa/keys/client.crt
nano -w /etc/openvpn/easy-rsa/keys/client.key

现在我们的证书在我们的客户端系统上,我们将创建另一个名为 client.ovpn 的新文件,其中“client”应与正在部署的客户端的名称匹配(来自 build-key),内容应如下所示,替换为“ xxxx" 与您的云服务器 IP 地址,并将适当的文件粘贴到指定区域。 仅包括从“BEGIN”标题行到“END”行的内容,如下所示。 请确保将这些文件与任何身份验证令牌一样保密。

client
dev tun
proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
<ca>
Contents of ca.crt
</ca>
<cert>
Contents of client.crt
</cert>
<key>
Contents of client.key
</key>

由于建立连接所需的所有信息现在都集中在 .ovpn 文件中,我们现在可以将其部署在我们的客户端系统上。

在 Windows 上,无论版本如何,您都需要官方的 OpenVPN 社区版二进制文件,它与 GUI 一起预先打包。 安装后唯一需要的步骤是将您的 .ovpn 配置文件放入正确的目录 (C:\Program Files\OpenVPN\config) 并单击 GUI 中的连接。 Windows 上的 OpenVPN GUI 必须以管理权限执行。

在 Mac OS X 上,开源应用程序 "Tunnelblick" 提供了类似于 Windows 上的 OpenVPN GUI 的界面,并预装了 OpenVPN 和所需的 TUN/TAP 驱动程序。 与 Windows 一样,唯一需要的步骤是将 .ovpn 配置文件放入 ~/Library/Application Support/Tunnelblick/Configurations 目录。

在 Linux 上,您应该从您的发行版官方存储库安装 OpenVPN。 然后,您只需执行以下命令即可调用 OpenVPN:

sudo openvpn --config ~/path/to/client.ovpn

恭喜! 如果你做到了这一步,你现在应该在你的云服务器上运行一个完全可操作的 VPN。 您可以通过 检查 Google 以显示您的公共 IP 来验证您的流量是否通过 VPN 路由。