Ubuntu 20.04 企业级部署 Pritunl VPN 教程(含外部 MongoDB 副本集与 FRP 穿透方案)

Pritunl 是一款极简的企业级开源 OpenVPN 图形化管理软件。它不仅免去了手写 OpenVPN 配置的痛苦,还原生支持用户管理、组织架构划分以及可视化的路由管理(分割隧道)。

网上的老教程大多基于 CentOS 7 和单机版 MongoDB。在真实的企业生产环境中,通常会将前端 VPN 网关与后端数据库解耦,并接入已有的 MongoDB 副本集。本笔记记录了在 Ubuntu 20.04 系统下,部署 Pritunl 并连接外部 MongoDB 集群的全过程。

1. 配置 Pritunl 官方 APT 源并处理 GPG 密钥

在 Ubuntu 20.04 下,首先需要添加 Pritunl 的官方源。

# 写入 apt 源
sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb https://repo.pritunl.com/stable/apt focal main
EOF

⚠️ 踩坑提示: 官方文档给的 GPG 导入命令直接去外网的 keyserver.ubuntu.com 获取,在国内网络环境下极容易超时失败。如果你遇到 timeout,可以使用以下备用方案手动下载并导入密钥:

# 从公钥服务器通过 hkp 协议导入 Pritunl 密钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A

2. 安装 Pritunl 服务

更新缓存并安装 Pritunl(因为我们使用外部统一的 MongoDB 集群,所以不需要在本机安装 mongodb-server)。

sudo apt update
sudo apt install pritunl -y

# 启动并设置开机自启
sudo systemctl start pritunl
sudo systemctl enable pritunl

3. 核心步骤:对接外部 MongoDB 副本集

企业环境中,为了数据高可用,通常会有专门的 DB 集群。千万别去浏览器那个初始 Setup 页面里直接填 MongoDB 副本集连接串(带逗号和问号的 URL),极容易触发 Web 解析报错(提示 Unknown server error occurred)。

image

最稳妥的方式是直接把配置写进 /etc/pritunl.conf

首先,在 MongoDB 主库里建好专属的权限账号:

use pritunl
db.createUser({
  user: "pritunl_user",
  pwd: "你的高强度密码", 
  roles: [ { role: "dbOwner", db: "pritunl" } ]
})

接着,在跑 Pritunl 的机器上直接覆盖配置文件:

sudo cat > /etc/pritunl.conf << 'EOF'
{
    "mongodb_uri": "mongodb://pritunl_user:你的高强度密码@10.20.30.73:27017,10.20.30.74:27017,10.20.30.75:27017/pritunl?replicaSet=你的副本集名称&authSource=pritunl",
    "server_key_path": "/var/lib/pritunl/pritunl.key",
    "server_cert_path": "/var/lib/pritunl/pritunl.crt",
    "log_path": "/var/log/pritunl.log",
    "temp_path": "/tmp/pritunl_%r",
    "bind_addr": "0.0.0.0",
    "debug": false,
    "www_path": "/usr/share/pritunl/www",
    "local_address_interface": "auto",
    "port": 443
}
EOF

写入后,重启服务让底层直接加载正确的数据库配置:

sudo systemctl restart pritunl

4. 获取初始密钥与登录密码

获取进入 Web 界面所需的 Setup Key:

sudo pritunl setup-key

获取系统自动生成的管理员默认密码:

sudo pritunl default-password

浏览器访问 https://<你的服务器IP>,填入上面的 Setup Key 即可秒过初始化。随后输入账号 pritunl 和获取到的默认密码进行登录,并立刻修改密码。

image

5. 网络架构核心配置:添加路由(Split Tunneling)

在 Web 后台创建好 Organization(部门)、User(员工)和 Server(VPN 节点网关)后,最核心的一步是配置网关路由(Routes)

image

  • 不推荐: 默认自带 0.0.0.0/0 路由。这叫“全局代理/Full Tunnel”,员工上网看视频的流量全走公司网络,会瞬间跑崩公司出口带宽。
  • 企业最佳实践(分割隧道/Split Tunnel): 删除 0.0.0.0/0,点击 Add Route 精准添加内网网段(如 10.20.30.0/24),确保勾选 NAT。 这样员工访问内网服务走 VPN,访问外网(百度、B站)依然走自己家宽带,既保证内网安全,又极大节省了公司出口带宽。

image

6. 进阶场景:内网部署无公网 IP 时的 FRP 穿透

如果你的 Pritunl 部署在纯内网虚拟机(如 10.20.30.x),需要用 FRP 映射出去给外部员工使用。

FRP 客户端 (frpc) 配置参考:

[common]
server_addr = <云服务器公网IP>
server_port = 7000
token = your_token

# 管理面板穿透
[pritunl_web]
type = tcp
local_ip = 127.0.0.1
local_port = 443
remote_port = 8443

# VPN 核心隧道穿透
[pritunl_vpn]
type = udp
local_ip = 127.0.0.1
local_port = 1194
remote_port = 1194

⚠️ 致命踩坑点: 穿透后,切记登录 Pritunl Web 面板,点击你创建的 Server 名字,在设置里找到 Public Address(公网地址),填入你的 <云服务器公网IP> 并保存重启 Server。 如果不填,Pritunl 给员工下发的 .ovpn 文件里就会包含 10.20.30.x 的内网 IP,员工在外网永远拨不通!

完成上述所有配置后,在 Users 页面点击下载按钮拿到 .ovpn.tar 文件,发给员工,使用任意标准的 OpenVPN 客户端导入即可瞬间连接。

image

评论