如何设置和配置在CentOS 7的OpenVPN服务器

介绍

我们将在CentOS 7服务器上安装和配置OpenVPN。 我们还将讨论如何在Windows,OS X和Linux上将客户端连接到服务器。

OpenVPN是一个开源VPN应用程序,它允许您通过公共Internet安全地创建和加入专用网络。

先决条件

您应该完成这些先决条件:

  • CentOS 7Droplet
  • 访问服务器(几个步骤,不能只用sudo访问完成)
  • 解析到您可用于证书的服务器的域或子域

在我们开始之前,我们需要安装Enterprise Packages for Enterprise Linux(EPEL)存储库。 这是因为OpenVPN在默认的CentOS存储库中不可用。 EPEL存储库是由Fedora项目管理的附加存储库,包含非标准但受欢迎的软件包。

yum install epel-release

第1步 - 安装OpenVPN

首先我们需要安装OpenVPN。 我们还将安装Easy RSA来生成我们的SSL密钥对,这将保护我们的VPN连接。

yum install openvpn easy-rsa -y

第2步 - 配置OpenVPN

OpenVPN在其文档目录中有示例配置文件。 我们将样本复制server.conf文件作为起点为我们自己的配置文件。

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

让我们打开文件进行编辑。

vi /etc/openvpn/server.conf

我们需要在这个文件中更改几行。 大部分线路只需要注释去掉(去除)。 其他的变化被标记为红色

当我们后来产生我们的钥匙,以方便RSA默认的Diffie-Hellman加密长度为2048字节,所以我们需要改变dh文件名dh2048.pem

dh dh2048.pem

我们需要取消对push "redirect-gateway def1 bypass-dhcp"线,告诉客户通过我们的OpenVPN重定向所有流量。

push "redirect-gateway def1 bypass-dhcp"

接下来,我们需要向客户端提供DNS服务器,因为它将无法使用您的Internet服务提供商提供的默认DNS服务器。 我们将使用谷歌的公共DNS服务器8.8.8.88.8.4.4

通过取消注释做到这一点push "dhcp-option DNS线路并更新IP地址。

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

我们希望OpenVPN的与没有特权一旦开始运行,所以我们需要告诉它用的用户和组运行nobody 要启用此功能,您需要取消注释以下行:

user nobody
group nobody

保存并退出OpenVPN服务器配置文件。

第3步 - 生成密钥和证书

现在服务器已配置,我们将需要生成我们的密钥和证书。 Easy RSA安装一些脚本来生成这些密钥和证书。

让我们创建一个目录,让键进入。

mkdir -p /etc/openvpn/easy-rsa/keys

我们还需要将密钥和证书生成脚本复制到目录中。

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

为了让自己更容易生活,我们将编辑脚本的默认值
因此我们不必在每次都输入我们的信息。 此信息被存储
vars文件,以便让我们打开这个编辑。

vi /etc/openvpn/easy-rsa/vars

我们要有所改变,与启动值KEY_ 更新以下值以使您的组织准确。

最重要的是:

  • KEY_NAME :你应该输入server位置; 您可以输入别的东西,但你也必须更新引用配置文件server.keyserver.crt
  • KEY_CN :输入解析到服务器的域或子域

对于其他值,您可以根据变量名称输入组织的信息。


. . .

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="sammy@example.com"
export KEY_OU="Community"

# X509 Subject Field
export KEY_NAME="server"

. . .

export KEY_CN=openvpn.example.com

. . .


我们还将删除我们的OpenSSL配置由于版本不可检测而无法加载的机会。 我们将通过复制所需的配置文件并删除版本号来完成此操作。

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

开始产生我们的密钥和证书,我们需要进入我们的easy-rsa目录和在我们的新的变量。

cd /etc/openvpn/easy-rsa
source ./vars

然后我们将清除可能已经在此文件夹中的任何密钥和证书,并生成我们的证书颁发机构。

./clean-all

当你建立了证书颁发机构,您会被要求输入我们所投入的信息vars文件,但你会看到你的选项已经被设置为默认值。 所以,你可以只按ENTER键。

./build-ca

我们需要生成的下一步是服务器的密钥和证书。 再次,你可以只是通过问题,并按ENTER键为每个使用默认值。 最后,回答Y(是)提交更改。

./build-key-server server

我们还需要生成一个Diffie-Hellman密钥交换文件。 此命令需要一两分钟时间完成:

./build-dh

这是我们的服务器密钥和证书。 将它们全部复制到我们的OpenVPN目录中。

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

我们所有的客户也需要证书才能进行身份验证。 这些密钥和证书将与您的客户端共享,最好为您打算连接的每个客户端生成单独的密钥和证书。

确保,如果你这样做,你给他们描述性的名称,但现在我们将有一个客户,所以我们只是把它client

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

这是钥匙和证书。

第4步 - 路由

为了保持简单,我们将直接使用iptables而不是新的firewalld来进行路由。

首先,确保iptables服务已安装并启用。

yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush

接下来,我们将向iptables添加一条规则,将我们的路由转发到我们的OpenVPN子网,并保存此规则。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

然后,我们必须启用IP转发sysctl 打开sysctl.conf编辑。

vi /etc/sysctl.conf

在文件的顶部添加以下行:

net.ipv4.ip_forward = 1

然后重新启动网络服务,使IP转发生效。

systemctl restart network.service

第5步 - 启动OpenVPN

现在我们准备好运行我们的OpenVPN服务。 因此让我们将它添加到systemctl

systemctl -f enable openvpn@server.service

启动OpenVPN:

systemctl start openvpn@server.service

做得好; 这是为OpenVPN所做的所有服务器端配置。

接下来,我们将讨论如何将客户端连接到服务器。

第6步 - 配置客户端

无论您的客户端计算机的操作系统,您肯定需要从服务器的ca证书的副本,以及客户端密钥和证书。

找到服务器上的以下文件。 如果您生成具有唯一描述性名称的多个客户端密钥,则密钥和证书名称将不同。 在这篇文章中,我们使用client

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

这三个文件复制到客户机上 您可以使用SFTP或您的首选方法。 您甚至可以打开文本编辑器中的文件,并将内容复制并粘贴到客户端计算机上的新文件中。

只要确保你记下你保存他们的地方。

我们将创建一个名为client.ovpn 这是OpenVPN客户端的配置文件,告诉它如何连接到服务器。

  • 您需要更改第一行,以反映您在密钥和证书中为客户提供的名称; 在我们的例子,这仅仅是client
  • 您还需要更新和IP地址your_server_ip到你的服务器的IP地址; 端口1194可保持不变
  • 确保密钥和证书文件的路径正确
client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key

此文件现在可由任何OpenVPN客户端用于连接到您的服务器。

视窗:

在Windows上,则需要官方的OpenVPN的社区版二进制它配备了一个图形用户界面。 然后,你把.ovpn配置文件到正确的目录, C:\Program Files\OpenVPN\config ,然后单击连接在GUI中。 必须使用管理权限执行Windows上的OpenVPN GUI。

OS X:

在Mac OS X中,开源应用的Tunnelblick提供了类似于OpenVPN的图形用户界面在Windows界面,并配备了OpenVPN的和必要的TUN / TAP驱动程序。 与Windows,唯一需要的步骤是你的地方.ovpn配置文件到~/Library/Application
Support/Tunnelblick/Configurations
~/Library/Application
Support/Tunnelblick/Configurations
~/Library/Application
Support/Tunnelblick/Configurations
目录。
或者,你可以在你双击.ovpn文件。

Linux:

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

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

结论

恭喜! 您现在应该具有在OpenVPN服务器上运行的完全可操作的虚拟专用网络。

您建立一个成功的客户端连接后,你可以验证你的流量正在通过VPN路由通过检查谷歌透露自己的公网IP

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏