如何在 Rocky Linux 8 上设置 Pritunl VPN 服务器
在此页
- 先决条件
- 第 1 步 - 配置防火墙
- 第 2 步 - 安装 MongoDB
- 第 3 步 - 安装 Pritunl 服务器
- 增加打开文件的限制
- 在防火墙中启用端口
- 修复数据库
- 重置凭据
- 更改 Web 控制台端口
Pritunl 是一款开源 VPN 和 IPsec 服务器,具有适用于小型和大型组织的用户管理和横向扩展功能。它让用户可以选择使用 OpenVPN 和 Wireguard 协议。它带有易于使用的 GUI 界面,并支持大多数设备和平台上的客户端。客户端和服务器之间的所有流量都是加密的。 Pritunl 建立在 MongoDB 之上,MongoDB 是一个可靠且可扩展的数据库,可以快速部署并内置对复制的支持,使部署 Pritunl 集群变得容易。
本教程将教您如何在 Rocky Linux 8 上安装 Pritunl VPN 服务器。我们还将探讨如何使用 Linux 客户端连接到 VPN。
先决条件
-
A system running Rocky Linux 8 for hosting Pritunl server.
-
A non-root user with sudo privileges.
-
A domain name pointed to the server.
-
A system running Rocky Linux 8 as a client.
-
Make sure everything is updated.
$ sudo dnf update
-
Install any prerequisites.
$ sudo dnf install nano
第 1 步 - 配置防火墙
Rocky Linux 使用 Firewalld 防火墙。检查防火墙状态。
$ sudo firewall-cmd --state running
这表明它已成功启动并运行。
防火墙适用于不同的区域,公共区域是我们将使用的默认区域。列出防火墙上所有活动的服务和端口。
$ sudo firewall-cmd --permanent --list-services
它应该显示以下输出。
dhcpv6-client mdns ssh
允许 HTTP 和 HTTPS 端口。
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
重新检查防火墙的状态。
$ sudo firewall-cmd --permanent --list-all
您应该会看到类似的输出。
public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http https ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
重新加载防火墙以启用更改。
$ sudo firewall-cmd --reload
第 2 步 - 安装 MongoDB
Pritunl 建立在 MongoDB 数据库之上,所以首先,我们需要安装它。 Rocky Linux 不附带 MongoDB,因此我们需要使用 MongoDB 的官方存储库。
注意:MongoDB 5.0 仅适用于较新的处理器。如果您的服务器在较旧的硬件上运行,您应该选择较旧版本的 MongoDB 或切换到较新的服务器。
创建并打开文件
/etc/yum.repos.d/mongodb-org-5.0.repo
进行编辑。$ sudo nano /etc/yum.repos.d/mongodb-org-5.0.repo
将以下代码粘贴到其中。
[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
安装 MongoDB。
$ sudo dnf install mongodb-org
启用并启动 MongoDB 服务。
$ sudo systemctl enable mongod --now
第 3 步 - 安装 Pritunl 服务器
第一步是为 Pritunl 创建官方存储库。创建并打开文件
/etc/yum.repos.d/pritunl.repo
进行编辑。$ sudo nano /etc/yum.repos.d/pritunl.repo
将以下代码粘贴到其中。
[pritunl] name=Pritunl Repository baseurl=https://repo.pritunl.com/stable/yum/centos/8/ gpgcheck=1 enabled=1
完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
首先安装 Pritunl 所需的 Epel 存储库。
$ sudo dnf install epel-release
添加并导入 Pritunl 所需的 GPG 密钥。
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A $ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
安装 Pritunl。
$ sudo dnf install pritunl
检查 Pritunl 版本。
$ pritunl version pritunl v1.30.2960.4
启用并启动 Pritunl 服务。
$ sudo systemctl enable pritunl --now
增加打开文件限制
运行以下命令以增加服务器上的打开文件限制。这将防止在高负载情况下出现任何连接问题。如果您在单独的服务器上安装了 MongoDB,则需要在该服务器上运行这些命令。
$ sudo sh -c 'echo "* hard nofile 64000" >> /etc/security/limits.conf' $ sudo sh -c 'echo "* soft nofile 64000" >> /etc/security/limits.conf' $ sudo sh -c 'echo "root hard nofile 64000" >> /etc/security/limits.conf' $ sudo sh -c 'echo "root soft nofile 64000" >> /etc/security/limits.conf'
第 4 步 - 访问和配置 Pritunl
您可以通过在浏览器中输入
http://
来启动 Pritunl。现代浏览器尝试访问每个站点的 HTTPS 版本,因此您需要绕过浏览器抛出的隐私错误。/ 首次启动 URL 时,您将看到以下屏幕。
它会自动获取 MongoDB URI。对于设置密钥,运行以下命令。
$ sudo pritunl setup-key eacbd641982048fd9a60cdf09f7ebaa3
在网站上输入生成的密钥,然后单击“保存”按钮。它将升级数据库并打开登录屏幕。
运行以下命令以生成默认登录信息。
$ sudo pritunl default-password [undefined][2021-11-08 22:34:55,255][INFO] Getting default administrator password Administrator default password: username: "pritunl" password: "krZQLlH9U7P1"
输入登录信息并登录。您将看到以下设置屏幕。
输入强密码以替换默认密码。在“让加密域”字段下输入一个域。 Pritunl 将自动为域生成和设置 SSL 证书。
您现在可以通过在浏览器中键入
https://pritunl.example.com
使用域名启动服务器。第 5 步 - 添加组织、服务器和用户
下一步是为您的 VPN 添加一个组织。单击“用户”选项卡,然后单击“添加组织”按钮。
单击添加按钮继续。
下一步是添加用户。有两种选择。您可以逐个添加用户,也可以批量添加。我们现在要添加一个用户。单击添加用户按钮。
PIN 字段是可选的,如果您要使用双因素身份验证,则会使用它。 PIN 仅由数字组成。
设置组织和用户后,转到“服务器”选项卡并单击“添加服务器”按钮。
端口:您可以添加服务器将使用的任何端口。确保您指定的端口对安全组中的所有入站流量开放。
DNS:您可以添加 Google DNS 或 OpenDNS。
虚拟网络:您可以在此字段中添加私有 IP,但请确保任何其他资源不使用它。客户端将被分配到该范围内的 IP 地址。
虚拟 WG 网络:将分配给 WireGuard 客户端的专用网络的 WireGuard 网络地址。它应该具有与虚拟网络相同的 CIDR 块。
启用 WireGuard:如果选中,它将使用 WireGuard 而不是 OpenVPN。但是,我们将在我们的教程中使用 OpenVPN,所以不要选中它。
WG 端口:此端口将用于 WireGuard 连接。它仅在我们启用 WireGuard 选项时使用。
启用 Google 身份验证器:要使用两步验证,请启用此选项。如果服务器上启用了此选项,则该服务器下的所有客户端都需要在每次连接到 VPN 之前验证 OTP。
启用 IPv6:启用 IPv6 DNS 服务器。客户端被赋予私有 IPv6 地址。
单击添加按钮完成。
单击“添加组织”按钮以将组织与新创建的服务器链接起来。
单击启动服务器按钮启动 VPN。
在防火墙中启用端口
要通过 VPN 端口接受来自客户端的连接,我们需要通过防火墙启用它。
$ sudo firewall-cmd --permanent --add-port=18412/udp $ sudo firewall-cmd --reload
第 6 步 - 安装 Pritunl 客户端
现在我们的服务器已启动并运行,是时候安装客户端并连接到 VPN 了。 Pritunl 提供两种类型的客户端——命令行和 GUI 客户端。
对于我们的教程,我们将使用命令行客户端。您只能在一个系统上安装一种类型的客户端。
安装 Pritunl 客户端所需的 EPEL 存储库。
$ sudo dnf install epel-release
将官方 Pritunl 存储库添加到您的 Rocky Linux 系统。
$ sudo tee -a /etc/yum.repos.d/pritunl.repo << EOF [pritunl] name=Pritunl Stable Repository baseurl=https://repo.pritunl.com/stable/yum/centos/8/ gpgcheck=1 enabled=1 EOF
添加并导入 GPG 密钥。
$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A $ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
安装命令行客户端。
$ sudo dnf install pritunl-client
第 7 步 - 从客户端连接到服务器
从 Pritunl 服务器站点的用户选项卡中,获取临时配置文件链接以连接到客户端。
从最后一个条目复制临时 URI 链接。
在客户端输入以下命令添加配置文件。
$ pritunl-client add pritunl://example.com/ku/2hd6S6Ug
确保在命令中的
add
之后添加之前复制的配置文件链接。检查添加的配置文件列表。
$ pritunl-client list +----------------------------------+-------------------------+--------------+----------------+----------------+ | ID | NAME | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS | +----------------------------------+-------------------------+--------------+----------------+----------------+ | wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | Disconnected | - | - | +----------------------------------+-------------------------+--------------+----------------+----------------+
运行以下命令以连接到配置文件。您不需要在命令中使用完整的配置文件 ID。只需使用配置文件 ID 的前 3 个字母来引用它。
$ pritunl-client start wki --mode=ovpn --password=PINOTP
- 要指定 OPVN 模式,请在命令中添加标志
--mode=ovpn
。 - 如果您启用了 Google Authenticator 选项,则需要使用 Google Authenticator 或 Authy 客户端对其进行配置。
- 要指定 pin 和双因素身份验证代码,请在命令中使用标志
--password=PINOTP
。例如,如果 pin 为 54321,OTP 代码为 456789,则在上面的命令中使用标志--password=54321456789
。如果您只使用 PIN,则使用标志--password=PIN
。
再次运行
list
命令检查连接是否正常。$ pritunl-client list +----------------------------------+-------------------------+------------+----------------+----------------+ | ID | NAME | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS | +----------------------------------+-------------------------+------------+----------------+----------------+ | wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | 6 secs | 178.62.233.196 | 192.168.238.2 | +----------------------------------+-------------------------+------------+----------------+----------------+
您已成功连接到 Pritunl VPN。
Pritunl 命令行
Pritunl 服务器附带一个命令行工具,您可以使用它来执行一些基本操作。
修复数据库
您可以使用 Pritunl 修复数据库并允许恢复损坏或不一致的数据库。
首先,停止 Pritunl 服务器。
$ sudo systemctl stop pritunl
修复数据库。
$ sudo pritunl repair-database
重新启动 Pritunl 服务。
$ sudo systemctl start pritunl
repair-database
命令将清除所有日志,重置所有用户静态虚拟 IP 地址,并将所有服务器置于停止状态。重置凭据
以下命令会将管理员用户名和密码重置为
pritunl
。如果启用,它还将删除管理员用户的任何单点登录和两步身份验证设置。$ sudo pritunl reset-password
更改 Web 控制台端口
默认情况下,Pritunl 在端口 443 上运行。如果要更改它,请使用以下命令。
$ sudo pritunl set app.server_port 8443
Pritunl 在 80 端口上运行一个 Web 服务器,用于 Lets Encrypt 验证并将 HTTP 请求重定向到 HTTPS。您可以使用以下命令关闭重定向。这也将阻止使用 Lets Encrypt 证书。
$ sudo pritunl set app.redirect_server false
结论
我们关于在 Rocky Linux 8 服务器上设置和使用 Pritunl VPN 服务器的教程到此结束。如果你想了解更多关于 Pritunl 的信息,可以关注它的官方文档。如果您有任何问题,请在下面的评论中发表。