如何在Cent OS 7上设置和配置OpenVPN服务器

这篇具有很好参考价值的文章主要介绍了如何在Cent OS 7上设置和配置OpenVPN服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

虚拟专用网络(VPN)允许您像在专用网络上一样穿越不受信任的网络。当您的智能手机或笔记本电脑连接到不受信任的网络(如酒店或咖啡店的WiFi)时,它可以让您自由安全地访问互联网。当与HTTPS连接结合使用时,此设置允许您保护您的无线登录和交易。您可以规避地理限制和审查,保护您的位置和任何未加密的HTTP流量不受不可信网络的影响。OpenVPN是一个全功能、开源的安全套接字层(SSL) VPN解决方案,支持多种配置。在本教程中,您将在CentOS 7服务器上设置OpenVPN,然后将其配置为可从客户端机器访问。

前提

要学习本教程,您需要:

一台CentOS 7服务器,一个sudo非root用户,一个用firewalld设置的防火墙,您可以通过我们的CentOS 7服务器初始设置指南和新CentOS 7服务器的其他建议步骤来实现。

解析到您的服务器并可用于证书的域或子域。要进行设置,您首先需要注册一个域名,然后通过DigitalOcean控制面板添加一个DNS记录。注意,只要添加一条A记录就可以满足本教程的要求。

您将用来连接到OpenVPN服务器的客户机。出于本教程的目的,建议您使用本地机器作为OpenVPN客户端。

步骤1 —安装OpenVPN

首先,我们将在服务器上安装OpenVPN。我们还将安装Easy RSA,这是一个公钥基础设施管理工具,它将帮助我们建立一个内部证书颁发机构(CA ),用于我们的VPN。稍后,我们还将使用Easy RSA来生成SSL密钥对,以保护VPN连接。

以非根sudo用户的身份登录到服务器,并更新包列表以确保您拥有所有最新版本。

sudo yum update -y

Enterprise Linux (EPEL)存储库的额外软件包是由Fedora项目管理的一个额外的存储库,包含非标准但流行的软件包。OpenVPN在默认的CentOS存储库中不可用,但在EPEL可用,所以安装EPEL:

sudo yum install epel-release -y

然后再次更新您的套餐列表:

sudo yum update -y

接下来,安装OpenVPN和wget,我们将使用它们来安装Easy RSA:

sudo yum install -y openvpn wget

使用wget,下载简易RSA。出于本教程的目的,我们建议使用easy-rsa-2,因为这个版本有更多可用的文档。您可以在项目的发布页面上找到easy-rsa-2最新版本的下载链接:

wget -O /tmp/easyrsa https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.gz

接下来,用tar提取压缩文件:

tar xfz /tmp/easyrsa

这将在您的服务器上创建一个名为easy-rsa-old-2.3.3的新目录。在/etc/openvpn下新建一个子目录,命名为easy-rsa:

sudo mkdir /etc/openvpn/easy-rsa

将提取的Easy RSA文件复制到新目录:

sudo cp -rf easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa

 然后将目录的所有者更改为您的非根sudo用户:

sudo chown sammy /etc/openvpn/easy-rsa/

一旦安装了这些程序并将其移动到系统上的正确位置,下一步就是定制OpenVPN的服务器端配置。

步骤2 —配置OpenVPN

像许多其他广泛使用的开源工具一样,有许多配置选项可供您选择。在本节中,我们将提供如何设置基本OpenVPN服务器配置的说明。

OpenVPN的文档目录中有几个示例配置文件。首先,复制示例server.conf文件作为您自己的配置文件的起点。

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

使用您选择的文本编辑器打开新文件进行编辑。我们将在我们的示例中使用nano,如果您的服务器上还没有它,您可以使用yum install nano命令下载它:

sudo nano /etc/openvpn/server.conf

这个文件中有几行我们需要修改,其中大部分只需要通过删除分号来取消注释;,在行首。这些行的功能,以及本教程中没有提到的其他行,在每一行上面的注释中有深入的解释。

首先,找到并取消注释包含push“redirect-gateway de f1 bypass-DHCP”的行。这样做将告诉您的客户端通过您的OpenVPN服务器重定向其所有流量。请注意,启用此功能可能会导致与其他网络服务(如SSH)的连接问题:

centos7配置vpn,服务器,运维,linux,centos

因为您的客户端将无法使用ISP提供的默认DNS服务器(因为它的流量将被重新路由),所以您需要告诉它可以使用哪些DNS服务器连接到OpenVPN。你可以选择不同的DNS服务器,但这里我们将使用谷歌的公共DNS服务器,它们拥有8.8.8.8和8.8.4.4的IP地址。

通过取消对“dhcp-option DNS ...”的注释来进行设置线路和更新IP地址: centos7配置vpn,服务器,运维,linux,centos

我们希望OpenVPN在启动后运行时没有特权,所以我们需要告诉它使用一个用户和一组nobody来运行。为此,取消对user nobody和group nobody行的注释:

centos7配置vpn,服务器,运维,linux,centos

接下来,取消对拓扑子网行的注释。这与它下面的server 10.8.0.0 255.255.255.0行一起,将您的OpenVPN安装配置为作为子网运行,并告诉客户机应该使用哪个IP地址。在这种情况下,服务器将变成10.8.0.1,第一个客户机将变成10.8.0.2:

centos7配置vpn,服务器,运维,linux,centos

还建议您将下面一行添加到服务器配置文件中。这双重检查任何传入的客户端证书是否确实来自客户端,强化了我们将在后面的步骤中建立的安全参数:

centos7配置vpn,服务器,运维,linux,centos

最后,OpenVPN强烈建议用户启用TLS认证,这是一种确保计算机网络安全通信的加密协议。为此,您将需要生成一个静态加密密钥(在我们的示例中命名为myvpn.tlsauth,尽管您可以选择自己喜欢的任何名称)。在创建此密钥之前,通过在包含tls-auth ta.key 0的配置文件中添加分号来注释该行。然后,将tls-crypt myvpn.tlsauth添加到它下面的行中:

centos7配置vpn,服务器,运维,linux,centos

保存并退出OpenVPN服务器配置文件(在nano中,按CTRL - X,Y,然后按ENTER键执行此操作),然后使用以下命令生成静态加密密钥:

sudo openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth

现在您的服务器已经配置好了,您可以继续设置安全连接到VPN连接所需的SSL密钥和证书。

步骤3 —生成密钥和证书

Easy RSA使用一组随程序安装的脚本来生成密钥和证书。为了避免每次需要生成证书时都要重新配置,您可以修改Easy RSA的配置,以定义它将用于证书字段的默认值,包括您的国家、城市和首选电子邮件地址。

我们将通过创建一个目录来开始生成密钥和证书的过程,Easy RSA将在该目录中存储您生成的任何密钥和证书:

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

默认证书变量是在/etc/openvpn/easy-rsa中的vars文件中设置的,因此打开该文件进行编辑:

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

 滚动到文件底部,并更改以export KEY_开头的值以匹配您的信息。最重要的是:

 KEY_CN:在这里,输入解析到您的服务器的域或子域。

 KEY_NAME:您应该在这里输入服务器。如果输入其他内容,还必须更新引用server.key和server.crt的配置
 文件。

该文件中您可能希望更改的其他变量有:

KEY_COUNTRY:对于该变量,输入您居住的国家的两个字母的缩写。

KEY_PROVINCE:这应该是您居住的州的名称或缩写。

KEY_CITY:在这里,输入您居住的城市名称。

KEY_ORG:这应该是您的组织或公司的名称。

KEY_EMAIL:输入您希望连接到安全证书的电子邮件地址。

KEY_OU:这应该是您所属的“组织单位”的名称,通常是您的部门或团队的名称。

除了特定的用例之外,其余的变量可以安全地忽略。完成更改后,文件应该如下所示:

centos7配置vpn,服务器,运维,linux,centos

保存并关闭文件。

要开始生成密钥和证书,请转到easy-rsa目录,并在vars文件中设置新变量:

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

运行Easy RSA的全部清除脚本,删除文件夹中已有的任何密钥和证书,并生成证书颁发机构:

./clean-all

接下来,用build-ca脚本构建证书颁发机构。系统会提示您为证书字段输入值,但是如果您之前在vars文件中设置了变量,那么您的所有选项都将被设置为默认值。您可以按ENTER键接受每个选项的默认值:

./build-ca

此脚本生成一个名为ca.key的文件。这是用于签署服务器和客户端证书的私钥。如果该文件丢失,您就不能再信任来自该证书颁发机构的任何证书,如果任何人能够访问该文件,他们就可以签署新的证书并在您不知情的情况下访问您的VPN。为此,OpenVPN建议将ca.key存储在一个尽可能可以脱机的位置,只有在创建新证书时才应激活它。

接下来,使用build-key-server脚本为服务器创建一个密钥和证书:

./build-key-server server

与构建CA一样,您将看到您设置为默认值的值,因此您可以在这些提示下按ENTER键。此外,系统会提示您输入挑战密码和可选的公司名称。如果您输入一个挑战密码,当从您的客户端连接到VPN时,您将被要求输入。如果您不想设置挑战密码,只需将此行留空并按ENTER键。最后,输入Y提交更改。

创建服务器密钥和证书的最后一部分是生成Diffie-Hellman密钥交换文件。使用build-dh脚本来完成此操作:

./build-dh

这可能需要几分钟才能完成。

一旦您的服务器完成生成密钥交换文件,将服务器密钥和证书从keys目录复制到openvpn目录:

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

每个客户端还需要一个证书,以便OpenVPN服务器对其进行认证。这些密钥和证书将在服务器上创建,然后您必须将它们复制到您的客户端,这将在后面的步骤中完成。建议您为打算连接到VPN的每个客户端生成单独的密钥和证书。

因为我们在这里只设置一个客户端,所以我们称它为客户端,但是如果您愿意,您可以将其更改为更具描述性的名称:

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

最后,将版本化的openssl配置文件openssl-1.0.0.cnf复制到无版本名称openssl.cnf。否则可能会导致错误,即OpenSSL无法加载配置,因为它无法检测其版本:

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

现在已经为您的服务器和客户机生成了所有必需的密钥和证书,您可以继续设置两台机器之间的路由。

第4步—路由

到目前为止,您已经在服务器上安装了OpenVPN,对其进行了配置,并生成了客户端访问VPN所需的密钥和证书。但是,您还没有向OpenVPN提供任何关于将来自客户端的输入web流量发送到哪里的指令。您可以通过建立一些防火墙规则和路由配置来规定服务器应该如何处理客户端流量。

假设您遵循了本教程开始时的先决条件,那么您应该已经在您的服务器上安装并运行了firewalld。要允许OpenVPN通过防火墙,您需要知道您的活动防火墙区域是什么。使用以下命令找到它:

sudo firewall-cmd --get-active-zones

centos7配置vpn,服务器,运维,linux,centos

接下来,将openvpn服务添加到活动区域内firewalld允许的服务列表中,然后通过再次运行该命令并添加- permanent选项来使该设置永久化:

sudo firewall-cmd --zone=trusted --add-service openvpn
sudo firewall-cmd --zone=trusted --add-service openvpn --permanent

您可以使用以下命令检查服务是否已正确添加:

sudo firewall-cmd --list-services --zone=trusted

centos7配置vpn,服务器,运维,linux,centos

接下来,将伪装添加到当前运行时实例,然后使用- permanent选项再次添加它,以将伪装添加到所有未来的实例:

sudo firewall-cmd --add-masquerade
sudo firewall-cmd --permanent --add-masquerade

您可以使用以下命令检查伪装是否已正确添加:

sudo firewall-cmd --query-masquerade

centos7配置vpn,服务器,运维,linux,centos

接下来,将路由转发到您的OpenVPN子网。为此,您可以首先创建一个变量(在我们的示例中为SHARK ),它将代表您的服务器使用的主网络接口,然后使用该变量永久添加路由规则:

SHARK=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $SHARK -j MASQUERADE

请务必通过重新加载firewalld来实现对防火墙规则的这些更改:

sudo firewall-cmd --reload

接下来,启用IP转发。这将把所有的网络流量从你的客户端路由到你的服务器的IP地址,你的客户端的公共IP地址将被有效地隐藏。

打开sysctl.conf进行编辑:

sudo nano /etc/sysctl.conf

然后在文件顶部添加以下行:

centos7配置vpn,服务器,运维,linux,centos

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

sudo systemctl restart network.service

有了路由和防火墙规则,我们就可以在服务器上启动OpenVPN服务了。

步骤5 —启动OpenVPN

使用systemctl将OpenVPN作为systemd服务进行管理。我们将配置OpenVPN在启动时启动,这样只要您的服务器在运行,您就可以随时连接到您的VPN。为此,通过将OpenVPN服务器添加到systemctl:

sudo systemctl -f enable openvpn@server.service

然后启动OpenVPN服务:

sudo systemctl start openvpn@server.service

使用以下命令仔细检查OpenVPN服务是否处于活动状态。您应该在输出中看到active(正在运行):

sudo systemctl status openvpn@server.service

centos7配置vpn,服务器,运维,linux,centos

我们现在已经完成了OpenVPN的服务器端配置。接下来,您将配置您的客户机并连接到OpenVPN服务器。

步骤6 —配置客户端

不管您的客户端机器的操作系统是什么,它都需要CA证书和在步骤3中生成的客户端密钥和证书的本地保存副本,以及您在步骤2结束时生成的静态加密密钥。

在您的服务器上找到下列文件。如果您生成了多个具有唯一的描述性名称的客户端密钥,那么密钥和证书名称将会不同。在本文中,我们使用客户端。

centos7配置vpn,服务器,运维,linux,centos

将这些文件复制到您的客户机上。你可以使用SFTP或你喜欢的方法。您甚至可以在文本编辑器中打开文件,将内容复制并粘贴到客户机上的新文件中。无论您使用哪种方法,请务必记下保存这些文件的位置。

接下来,在客户机上创建一个名为client.ovpn的文件。这是一个OpenVPN客户端的配置文件,告诉它如何连接到服务器:

sudo nano client.ovpn

然后将以下行添加到client.ovpn中。请注意,这些行中的许多行反映了我们取消注释或添加到server.conf文件中的行,或者默认情况下已经存在的行:

centos7配置vpn,服务器,运维,linux,centos

添加这些行时,请注意以下几点:

您需要更改第一行,以反映您在密钥和证书中提供给客户端的名称;在我们的例子中,这只是client

您还需要将ip地址从your_server_ip更新为您的服务器的IP地址;端口1194可以保持不变

确保您的密钥和证书文件的路径是正确的

现在,任何OpenVPN客户端都可以使用该文件连接到您的服务器。以下是有关如何连接客户端的特定于操作系统的说明:文章来源地址https://www.toymoban.com/news/detail-730409.html

Windows:
在Windows上,您将需要官方的OpenVPN社区版二进制文件,它带有一个GUI。把你的.ovpn配置文件放到正确的目录C:\Program Files\OpenVPN\config中,然后在GUI中单击Connect。Windows上的OpenVPN GUI必须以管理权限执行。

macOS:
在macOS上,开源应用Tunnelblick提供了一个类似于Windows上的OpenVPN GUI的界面,并附带了OpenVPN和所需的TUN/TAP驱动程序。与Windows一样,唯一需要的步骤是将您的.ovpn配置文件放到~/Library/Application Support/Tunnelblick/configuration s目录中。或者,您可以双击您的.ovpn文件。

Linux:
在Linux上,您应该从发行版的官方存储库中安装OpenVPN。然后,您可以通过执行以下命令来调用OpenVPN:
sudo openvpn --config ~/path/to/client.ovpn

在您成功建立客户端连接之后,您可以通过检查Google显示您的公共IP来验证您的流量是通过VPN路由的。

到了这里,关于如何在Cent OS 7上设置和配置OpenVPN服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 龙蜥(Anolis)OS8.6安装配置 VNC 服务器

    安装VNC,需要anolis os安装图形化界面,即在安装os时候选择Server with GUI 项即可。要在您的系统中安装VNC Server,请确保您具有系统上可用的以下要求: GNOME桌面环境 root访问 NFDNF / YUM软件包存储库 一、使用 YUM 安装 tigervnc-server: 二、配置用户映射: 需要手动先执行一次 vncs

    2024年01月19日
    浏览(48)
  • Ubuntu 搭建OpenVPN服务器

    VPN直译译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。 OpenVPN通过使用公开密钥(非对称密钥,加密解密使用不同的Key,

    2024年02月05日
    浏览(51)
  • OpenVPN服务器,面试阿里巴巴

    四、OpenVPN****实验案例 说明: 实验需要三台设备,由于OpenVPN的服务端程序和客户端程序需要到网上下载,因此在此实验中VPN服务器和远程客户端需要具有上网功能。将虚拟交换机vmnet8改为nat模式,并设置网关为172.16.0.2。 VPN服务器: ens33连接企业内网vmnet1上 ip地址:192.168.

    2024年04月25日
    浏览(74)
  • Ubuntu 22.04网络配置指南:如何设置静态IP和自定义DNS服务器

    找到并打开Netplan配置文件 : 在Ubuntu终端中,输入以下命令来编辑Netplan的配置文件: 请确保文件名与您系统中实际的文件名匹配。 更新配置文件 : 使用以下内容替换文件中的内容(根据实际情况调整接口名称 enp0s3 、IP地址、网关和DNS服务器): 在这个配置中: enp0s3 是网

    2024年04月11日
    浏览(64)
  • 搭建frp+OpenVPN实现公网服务器对内网服务器的访问

    1.1实验需求 本实验需求一台公网服务器,两台内网服务器 公网服务器:作为frp服务端以及openvpn客户端 第一台内网服务器:作为frp客户端以及openvpn服务端 第二台内网服务器:需进行openvpn客户端配置(测试用) 1.2配置yum源 2.1服务端配置(公网服务器) 下载并解压frp数据包

    2024年02月04日
    浏览(51)
  • ubuntu 22.04搭建OpenVPN服务器

    为了公司与分公司之前的内部服务器和办公电脑之间能够相互访问,打算使用VPN,对于VPN,以前用得多的是PPTP; 但是PPTP相对于openvpn来说,没有openvpn安全,而且PPTP在linux下命令行支持不是很好,稳定性也不如openvpn。所以最后就选择openvpn来搭建VPN. 如上图所示,红线为VPN访问效

    2024年02月14日
    浏览(48)
  • 在Ubuntu上通过Docker部署OpenVPN服务器

    在这篇博客中,我们将探讨如何在Ubuntu服务器上通过Docker容器化技术来部署OpenVPN服务器。下面是逐步进行的指南,适用于初学者和中级用户。 前提条件 : 一个运行Ubuntu的服务器 Docker已安装在服务器上 步骤1: 安装Docker 首先,确保你的Ubuntu服务器上已经安装了Docker。 步骤2: 创

    2024年02月05日
    浏览(63)
  • Dell R710 iDRAC6 远程控制卡设置_服务器如何配置远程控制网卡(1)

    设置串口重定向 COM1就是服务器接显示器的串口,我们需要将 COM1 的输入重定向到 COM2 接口,观察控制台的输出。 重新启动服务器,按F2 进入 BIOS 设置菜单: 选择 “Serial Communication ”,按图示设置串口重定向参数: 注意:如果telnet/SSH连接时出现乱码,可以设置 Remote Termin

    2024年04月26日
    浏览(37)
  • Pritunl搭建OpenVPN服务器详细流程,快速实现公网远程连接!

    Pritunl是一款免费开源的 VPN 平台软件(但使用的不是标准的开源许可证,用户受到很多限制)。这是一种简单有效的VPN方式,一方面能有一个相对简单的途径,易于初级用户迅速搭建 VPN 服务;另一方面有能抵御墙的干扰,提供稳定有效的代理服务。Pritunl采用 OpenVPN 代理方式

    2024年02月08日
    浏览(53)
  • OpenVPN Connect使用连接公网VPN服务器实现内网穿透

    安装并运行OpenVPN Connect   点击AGREE  添加配置.OVPN文件  点击连接 连接成功 两个内网主机通过公网VPN穿透

    2024年02月03日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包