如何在 CentOS 8/7 中安装和配置 OpenVPN 服务器?
OpenVPN 是一种流行的开源 VPN 协议,允许通过互联网进行安全且私密的通信。借助 OpenVPN,您可以创建可从任何地方访问的虚拟专用网络,为远程用户提供安全且加密的连接。
在本文中,我们将讨论如何在流行的 Linux 发行版 CentOS 8/7 上安装和配置 OpenVPN。
先决条件
在继续安装之前,我们需要确保满足以下先决条件 -
具有 root 访问权限的 CentOS 8/7 服务器。
静态公共 IP 地址。
安装在本地计算机上的 SSH 客户端。
第1步:安装OpenVPN服务器
第一步是在 CentOS 8/7 服务器上安装 OpenVPN 服务器。为此,请以 root 用户身份登录到服务器并运行以下命令 -
CentOS 8
dnf install -y openvpn
操作系统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。
服务器 - 此选项设置 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 工具生成客户端证书和密钥,然后创建客户端配置文件 (.ovpn),其中包含客户端连接到 OpenVPN 服务器所需的配置。
配置文件包含以下选项 -
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 服务器,并开始使用它安全、私密地连接到互联网。