如何在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服务器,并开始使用它安全私密地连接到互联网。