如何在CentOS 8/7上安装和配置OpenVPN服务器?


OpenVPN是一个流行的开源VPN协议,允许在互联网上进行安全和私密的通信。使用OpenVPN,您可以创建一个虚拟专用网络,可以从任何地方访问,为远程用户提供安全和加密的连接。

在本文中,我们将讨论如何在CentOS 8/7(一个流行的Linux发行版)上安装和配置OpenVPN。

前提条件

在继续安装之前,我们需要确保我们具备以下前提条件:

  • 具有root访问权限的CentOS 8/7服务器。

  • 一个静态的公网IP地址。

  • 在您的本地机器上安装了SSH客户端。

步骤1:安装OpenVPN服务器

第一步是在您的CentOS 8/7服务器上安装OpenVPN服务器。为此,请以root用户身份登录到您的服务器并运行以下命令:

CentOS 8

dnf install -y openvpn

CentOS 7

yum install -y epel-release
yum install -y openvpn

这将安装OpenVPN服务器和所有必要的依赖项。

步骤2:配置OpenVPN服务器

安装OpenVPN后,下一步是配置它。OpenVPN的配置文件位于/etc/openvpn目录中。

步骤2.1:生成服务器证书和密钥

在开始配置之前,我们需要生成服务器证书和密钥。为此,我们将使用EasyRSA工具。

首先,通过运行以下命令在您的CentOS 8/7服务器上安装EasyRSA:

dnf install -y easy-rsa

接下来,我们需要创建一个目录来存储我们的EasyRSA文件。为此,请运行以下命令:

mkdir /etc/openvpn/easy-rsa

现在,我们需要将EasyRSA文件从软件包复制到我们新创建的目录。为此,请运行以下命令:

cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

接下来,我们需要编辑vars文件以设置证书的默认值。为此,请运行以下命令:

nano /etc/openvpn/easy-rsa/vars

在这个文件中,您会找到一些可以根据您的需要修改的变量。例如,您可以更改默认国家/地区、组织和电子邮件地址。

编辑完vars文件后,保存并退出。

现在,我们需要为EasyRSA初始化PKI(公共密钥基础设施)。为此,请运行以下命令:

cd /etc/openvpn/easy-rsa/
./easyrsa init-pki

接下来,我们需要生成CA(证书颁发机构)证书和密钥。为此,请运行以下命令:

./easyrsa build-ca nopass

这将生成没有密码的CA证书和密钥。

接下来,我们需要生成服务器证书和密钥。为此,请运行以下命令:

./easyrsa build-server-full server nopass

这将生成没有密码的服务器证书和密钥。

步骤2.2:配置OpenVPN服务器

现在我们已经生成了必要的证书和密钥,下一步是配置OpenVPN服务器。

为此,我们需要为OpenVPN服务器创建一个配置文件。为简化起见,我们将在/etc/openvpn目录中创建一个名为server.conf的文件。为此,请运行以下命令:

nano /etc/openvpn/server.conf

在这个文件中,粘贴以下配置:

# OpenVPN server configuration file

# Set port number
port 1194

# Set protocol
proto udp

# Set server mode and network
dev tun
server 10.8.0.0 255.255.255.0

# Set server certificates and keys
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem

# Set DNS server(s)
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

# Set cipher and HMAC digest
cipher AES-256-CBC
auth SHA256

# Set keepalive time
keepalive 10 120

# Set logging level
verb 3

让我们仔细看看这些选项:

  • port − 此选项设置OpenVPN将监听的端口号。默认值为1194。

  • proto − 此选项设置OpenVPN使用的协议。我们将使用UDP,它比TCP更快更有效。

  • dev − 此选项设置OpenVPN使用的网络设备。我们将使用tun。

  • server − 此选项设置OpenVPN客户端将使用的网络。我们将使用10.8.0.0/24。

  • ca, cert, key, dh − 这些选项设置我们之前生成的服务器证书和密钥。

  • push "dhcp-option DNS" − 此选项设置OpenVPN客户端将使用的DNS服务器。

  • cipher, auth − 这些选项设置OpenVPN将用于加密的密码和HMAC摘要。

  • keepalive − 此选项设置OpenVPN连接的保持活动时间。

  • verb − 此选项设置OpenVPN的日志记录级别。

保存并退出文件。

接下来,我们需要创建一个目录来存储客户端证书和密钥。为此,请运行以下命令:

mkdir /etc/openvpn/client

现在,我们需要创建一个脚本,该脚本将生成客户端证书和密钥。为此,请运行以下命令:

nano /etc/openvpn/easy-rsa/gen-client.sh

在这个文件中,粘贴以下脚本:

#!/bin/bash

# Generate a client certificate and key
if [ $# -ne 1 ]; then
   echo "Usage: $0 <client_name>"
   exit 1
fi

CLIENT_NAME=$1

cd /etc/openvpn/easy-rsa/
./easyrsa build-client-full $CLIENT_NAME nopass

# Generate client configuration file
cat > /etc/openvpn/client/$CLIENT_NAME.ovpn << EOF
client
dev tun
proto udp
remote `curl -s https://ipinfo.io/ip` 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
<ca>
   $(cat /etc/openvpn/easy-rsa/pki/ca.crt)
</ca>
<cert>
   $(cat /etc/openvpn/easy-rsa/pki/issued/$CLIENT_NAME.crt)
</cert>
<key>
   $(cat /etc/openvpn/easy-rsa/pki/private/$CLIENT_NAME.key)
</key>
EOF

# Set permissions on client configuration file
chmod 600 /etc/openvpn/client/$CLIENT_NAME.ovpn

此脚本使用EasyRSA工具生成客户端证书和密钥,然后创建一个包含客户端连接到OpenVPN服务器所需配置的客户端配置文件(.ovpn)。

配置文件包含以下选项:

  • client − 此选项设置OpenVPN客户端模式。

  • dev − 此选项设置OpenVPN使用的网络设备。我们将使用tun。

  • proto − 此选项设置OpenVPN使用的协议。我们将使用UDP。

  • remote − 此选项设置OpenVPN服务器的IP地址或域名和端口号。

  • resolv-retry − 此选项设置OpenVPN将重试解析服务器地址的次数。

  • nobind − 此选项阻止OpenVPN绑定到特定的本地IP地址和端口号。

  • persist-key, persist-tun − 这些选项在连接之间保持密钥和隧道设备处于活动状态。

  • comp-lzo − 此选项启用LZO压缩,这会减小通过VPN发送的数据大小。

  • verb − 此选项设置OpenVPN的日志记录级别。

  • ca, cert, key − 这些选项设置我们之前生成的客户端证书和密钥。

保存并退出文件。

接下来,我们需要使gen-client.sh脚本可执行。为此,请运行以下命令:

chmod +x /etc/openvpn/easy-rsa/gen-client.sh

步骤3:启动和启用OpenVPN服务器

现在我们已经配置了OpenVPN服务器,下一步是启动和启用它。为此,请运行以下命令:

  • 启动OpenVPN服务

systemctl start openvpn@server
  • 启用OpenVPN服务以便在启动时启动

systemctl enable openvpn@server

这将启动OpenVPN服务并使其在启动时自动启动。

步骤4:生成客户端证书和密钥

要生成客户端证书和密钥,请运行我们之前创建的gen-client.sh脚本。为此,请运行以下命令:

/etc/openvpn/easy-rsa/gen-client.sh client1

这将为名为“client1”的客户端生成客户端证书和密钥。您可以将“client1”替换为您想要用于客户端的任何名称。

该脚本还将创建一个客户端配置文件(/etc/openvpn/client/client1.ovpn),您可以使用它来连接到OpenVPN服务器。

步骤5:连接到OpenVPN服务器

要从客户端机器连接到OpenVPN服务器,您需要安装OpenVPN客户端。有很多OpenVPN客户端可用于不同的平台,例如OpenVPN Connect、Tunnelblick和OpenVPN GUI。

安装OpenVPN客户端后,您需要导入我们之前创建的客户端配置文件(/etc/openvpn/client/client1.ovpn)。导入配置文件的确切过程将取决于您使用的OpenVPN客户端。

导入配置文件后,您可以单击“连接”按钮连接到OpenVPN服务器。如果一切配置正确,您应该能够建立到OpenVPN服务器的安全加密连接。

结论

在本文中,我们讨论了如何在CentOS 8/7上安装和配置OpenVPN服务器。我们还讨论了如何生成服务器和客户端证书和密钥,以及如何从客户端机器连接到OpenVPN服务器。

OpenVPN是一个功能强大且灵活的VPN协议,可以提供在互联网上安全和私密的通信。通过本文中概述的步骤,您应该能够在CentOS 8/7服务器上设置OpenVPN服务器,并开始使用它安全私密地连接到互联网。

更新于:2023年5月12日

769 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告