传统 VPN 已过时?更灵活、可扩展的现代化替代利器来了!

传统 VPN(Virtual Private Network,虚拟专用网络)是一种通过公共网络(如互联网)建立安全、加密连接的技术,旨在实现远程用户或分支机构与内部网络之间的安全通信。

这项技术使得远程办公变的更加的便利。

随着应用场景需求多样化的到来,传统的 VPN 技术也面临着很大的挑战。

性能瓶颈是首个大问题,由于企业宽带网络波动会导致连接不稳定,加密解密过程增加网络延迟,使得特定场景(如视频会议)影响实时应用。

在云原生、大规模分布式环境中,其性能瓶颈和扩展性问题也逐渐凸显。

一种新的、更灵活、可扩展的新选择随之而生:Pritunl。

667

Pritunl 简介

Pritunl 是一款开源的企业级虚拟专用网络(VPN)软件,专为构建安全、可扩展的远程访问和站点间连接而设计。它通过加密隧道技术,帮助企业在多个网络之间安全传输数据,支持远程办公、分支机构互联及多云环境部署,是传统VPN的现代化替代方案。

核心功能与特性

多协议支持

  • OpenVPN:基于成熟的OpenVPN协议,提供高安全性,兼容大多数客户端设备。
  • WireGuard:可选的WireGuard服务器配置,以更轻量、更快的性能优化移动端和低带宽场景。
  • 混合部署:同时支持两种协议,灵活适应不同用户需求。

安全性更高

  • 端到端加密:所有流量通过AES-256加密,防止数据泄露。
  • 双因素认证(2FA):集成Google Authenticator,增强身份验证安全性。
  • 细粒度访问控制:基于用户角色和策略管理权限,限制资源访问范围。

多云与分布式架构

  • VPC对等连接:支持AWS、Google Cloud、Azure、Oracle Cloud等主流云平台,实现跨云站点互联。
  • 高可用性集群:可部署多台服务器形成集群,自动故障转移,确保服务连续性。

易用性与扩展性

  • Web管理界面:直观的图形化界面简化配置流程,无需命令行操作。
  • RESTful API:支持与其他系统(如CI/CD工具、监控平台)集成,实现自动化运维。
  • 跨平台客户端:提供Windows、Linux、macOS、Chromebook原生客户端,以及Android/iOS的OpenVPN兼容应用。

开源

  • 免费开源:无隐藏费用,适合预算有限的企业或开发者。
  • 轻量级部署:基于MongoDB数据库,无需昂贵硬件,可快速扩展至大规模用户。

应用场景

企业远程办公

  • 员工通过Pritunl安全访问内部系统(如ERP、CRM),数据传输全程加密,防止泄露。

图片

分支机构互联

  • 连锁企业或跨国公司通过站点到站点VPN连接各地办公室,实现内网资源共享。

3270

多云环境管理

  • 在AWS、Azure等云平台间建立安全通道,统一管理混合云资源。

1737

开发测试环境隔离

  • 为开发团队提供独立的虚拟网络,隔离测试环境与生产环境,避免冲突。

Pritunl 安装

Pritunl 支持在多种操作系统和云平台上部署,包括 Linux 服务器(如 Ubuntu、CentOS)、主流云平台(如 AWS、Azure、Google Cloud)以及 Docker 容器环境。

用户应根据自身需求和技术栈选择合适的部署方式。例如,对于物理服务器或虚拟机环境,推荐使用 Linux 发行版;对于云原生环境,可选择云平台提供的镜像或 Docker 部署。

Pritunl 服务端

从源代码安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# 如果运行单主机配置,请安装MongoDB
sudo tee /etc/yum.repos.d/mongodb-org.repo << EOF
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/8.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-8.0.asc
EOF

sudo dnf -y install mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

# 安装 OpenVPN
sudo tee /etc/yum.repos.d/pritunl.repo << EOF
[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/oraclelinux/9/
gpgcheck=1
enabled=1
gpgkey=https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc
EOF

sudo dnf --allowerasing -y install pritunl-openvpn

# [可选]为IPv6 NDP代理安装ndppd
sudo dnf -y install pritunl-ndppd

# 设置当前价格版本 X.XX.XXXX.XX
export VERSION="X.XX.XXXX.XX"

sudo dnf -y install gcc git-core wget rsync openssl-devel bzip2-devel libffi-devel sqlite-devel xz-devel zlib-devel selinux-policy selinux-policy-devel policycoreutils-python-utils python3 net-tools openssl iptables ipset ca-certificates psmisc

wget https://www.python.org/ftp/python/3.9.23/Python-3.9.23.tar.xz
echo "61a42919e13d539f7673cf11d1c404380e28e540510860b9d242196e165709c9 Python-3.9.23.tar.xz" | sha256sum -c - && tar xf Python-3.9.23.tar.xz
rm Python-3.9.23.tar.xz

cd "./Python-3.9.23"
gcc_major=$(gcc -dumpversion | cut -d. -f1)
base_cflags="-fstack-protector-strong -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Werror=format-security -mtune=generic -grecord-gcc-switches"
if [ "$gcc_major" -ge 7 ]; then
gcc7_flags="-fno-semantic-interposition"
cflags="$base_cflags $gcc7_flags"
ldflags="-fno-semantic-interposition"
else
cflags="$base_cflags"
ldflags=""
fi
if [ "$gcc_major" -ge 8 ]; then
gcc8_flags="-fstack-clash-protection -fcf-protection"
cflags="$cflags $gcc8_flags"
fi
if [ "$gcc_major" -ge 11 ]; then
arch_flags="-march=x86-64-v2"
cflags="$cflags $arch_flags"
fi
export CFLAGS_NODIST="$cflags"
export LDFLAGS_NODIST="$ldflags"
sudo rm -rf /usr/lib/pritunl
sudo mkdir /usr/lib/pritunl
./configure --prefix=/usr --libdir=/usr/lib --enable-optimizations --enable-ipv6 --enable-loadable-sqlite-extensions --disable-shared --with-lto --with-computed-gotos=yes --with-platlibdir=lib
sudo make DESTDIR="/usr/lib/pritunl" install
cd ../
sudo rm -rf ./Python-3.9.23
sudo /usr/lib/pritunl/usr/bin/python3 -m ensurepip
sudo /usr/lib/pritunl/usr/bin/python3 -m pip install pip==23.3.2

sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.25.1.linux-amd64.tar.gz
echo "7716a0d940a0f6ae8e1f3b3f4f36299dc53e31b16840dbd171254312c41ca12e go1.25.1.linux-amd64.tar.gz" | sha256sum -c - && sudo tar -C /usr/local -xf go1.25.1.linux-amd64.tar.gz
rm -f go1.25.1.linux-amd64.tar.gz

tee -a ~/.bashrc << 'EOF'
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=/usr/local/go/bin:$PATH
EOF
source ~/.bashrc

sudo systemctl stop pritunl || true

sudo mkdir -p /var/lib/pritunl

go install -v github.com/pritunl/pritunl-web@latest
go install -v github.com/pritunl/pritunl-dns@latest
sudo rm -f /usr/bin/pritunl-dns
sudo rm -f /usr/bin/pritunl-web
sudo cp -f ~/go/bin/pritunl-dns /usr/bin/pritunl-dns
sudo cp -f ~/go/bin/pritunl-web /usr/bin/pritunl-web

wget https://github.com/pritunl/pritunl/archive/refs/tags/$VERSION.tar.gz
tar xf $VERSION.tar.gz
rm $VERSION.tar.gz
cd ./pritunl-$VERSION
sudo /usr/lib/pritunl/usr/bin/pip3 install --require-hashes -r requirements.txt
/usr/lib/pritunl/usr/bin/python3 setup.py build
sudo /usr/lib/pritunl/usr/bin/python3 setup.py install
sudo ln -sf /usr/lib/pritunl/usr/bin/pritunl /usr/bin/pritunl

sudo groupadd -r pritunl-web || true
sudo useradd -r -g pritunl-web -s /sbin/nologin -c 'Pritunl web server' pritunl-web || true

# [可选]SELinux配置文件
cd selinux9
ln -s /usr/share/selinux/devel/Makefile
make
sudo make load
sudo cp pritunl.pp /usr/share/selinux/packages/pritunl.pp
sudo cp pritunl_dns.pp /usr/share/selinux/packages/pritunl_dns.pp
sudo cp pritunl_web.pp /usr/share/selinux/packages/pritunl_web.pp
sudo semodule -i /usr/share/selinux/packages/pritunl.pp /usr/share/selinux/packages/pritunl_dns.pp /usr/share/selinux/packages/pritunl_web.pp
sudo restorecon -v -R /tmp/pritunl* || true
sudo restorecon -v -R /run/pritunl* || true
sudo restorecon -v /etc/systemd/system/pritunl.service || true
sudo restorecon -v /usr/lib/systemd/system/pritunl.service || true
sudo restorecon -v /etc/systemd/system/pritunl-web.service || true
sudo restorecon -v /usr/lib/systemd/system/pritunl-web.service || true
sudo restorecon -v /usr/lib/pritunl/bin/pritunl || true
sudo restorecon -v /usr/lib/pritunl/bin/python || true
sudo restorecon -v /usr/lib/pritunl/bin/python3 || true
sudo restorecon -v /usr/lib/pritunl/bin/python3.6 || true
sudo restorecon -v /usr/lib/pritunl/bin/python3.9 || true
sudo restorecon -v /usr/lib/pritunl/usr/bin/pritunl || true
sudo restorecon -v /usr/lib/pritunl/usr/bin/python || true
sudo restorecon -v /usr/lib/pritunl/usr/bin/python3 || true
sudo restorecon -v /usr/lib/pritunl/usr/bin/python3.6 || true
sudo restorecon -v /usr/lib/pritunl/usr/bin/python3.9 || true
sudo restorecon -v /usr/bin/pritunl-web || true
sudo restorecon -v /usr/bin/pritunl-dns || true
sudo restorecon -v -R /var/lib/pritunl || true
sudo restorecon -v /var/log/pritunl* || true

cd ../../
sudo rm -rf ./pritunl-$VERSION

sudo systemctl daemon-reload
sudo systemctl start pritunl
sudo systemctl enable pritunl
云平台部署

在云平台市场搜索“Pritunl”,选择官方镜像或社区镜像。根据向导完成实例创建,配置安全组规则(开放 UDP 1194、TCP 443 等端口)。通过 SSH 登录实例,按 Linux 部署步骤初始化服务。

初始化配置

访问 Web 控制台

打开浏览器,输入 https://<服务器IP>(默认端口 443)。

500

这里会提示我们输入一个key参数,可以通过下面的命令来获取这个参数:

1
pritunl setup-key

点击save之后就进入登录界面。

图片

372

这里提示使用默认用户名与密码登录,可以使用下面的命令查看:

1
pritunl default-password
设置组织

在控制台创建组织(Organization),用于管理用户和服务器。

600

添加 VPN 服务器

进入“Servers”选项卡,点击“Add Server”。

600

配置服务器名称、IP 地址、端口(默认 UDP 1194)和 DNS 设置。启用“WireGuard”协议(可选,提升性能)。

配置用户和权限

在“Users”选项卡添加用户,分配至对应组织,设置双因素认证(2FA)增强安全性。

600

一切准备就绪之后就可以启动服务器了。

图片

客户端连接

注:客户端可以使用 Pritunl 客户端,也可以使用 openVPN 的客户端。

下载客户端:从 Pritunl 官网(https://client.pritunl.com/) 下载适用于 Windows、macOS、Linux、iOS 或 Android 的客户端。

导入配置文件:在 Web 控制台生成用户配置文件(.ovpn 或 .mobileconfig),客户端选择“Import Profile”,上传文件或扫描二维码。

1140Client Screenshot

连接测试:启动客户端,选择配置文件并连接,验证 IP 地址是否变更(可通过 IPinfo检查)。

总结

Pritunl 以其开源、高安全性和易用性,成为企业构建现代化VPN的优选方案。无论是支持远程办公、分支互联,还是多云管理,它均能提供可靠、灵活的解决方案。

对于寻求传统VPN替代品的企业,Pritunl 是一个值得考虑的开源选择。