将树莓派 3B+ 变成 PriTunl VPN

PriTunl 是一款 VPN 解决方案,适用于希望私下访问其网络的小型企业和个人。
261 位读者喜欢这篇文章。
Raspberries with pi symbol overlay

Dwight Sipler 在 Flickr 上

PriTunl 是一款出色的 VPN 终端解决方案,非常适合希望快速、简单地私下访问其网络的小型企业和个人。它是开源的,基本的免费版本足以让你开始使用,并涵盖大多数简单的使用场景。还有一个付费的企业版,具有高级功能,如 Active Directory 集成。

关于树莓派 3B+ 的特殊注意事项

PriTunl 通常安装简单,但这个项目——将树莓派 3B+ 变成 PriTunl VPN 设备——增加了一些复杂性。首先,PriTunl 仅以 AMD64 和 i386 二进制文件的形式提供,但 3B+ 使用 ARM 架构。这意味着你必须从源代码编译自己的二进制文件。这没什么好害怕的;它可以简单到复制和粘贴几个命令,然后短时间观察终端。

另一个问题:PriTunl 似乎需要 64 位架构。当我尝试在树莓派的 32 位操作系统上编译 PriTunl 时出现错误时,我发现了这一点。幸运的是,Ubuntu 18.04 的 ARM64 测试版可以在树莓派 3B+ 上启动。

此外,树莓派 3B+ 使用与其他树莓派型号不同的引导加载程序。这需要一系列复杂的步骤来安装和更新必要的文件才能使树莓派 3B+ 启动。

安装 PriTunl

你可以在安装 PriTunl 之前,通过在树莓派 3B+ 上安装 64 位操作系统来克服这些问题。我假设你对如何使用 Linux 命令行和树莓派有基本的了解。

首先,打开终端并输入以下命令以下载 Ubuntu 18.04 ARM64 测试版:

$ wget http://cdimage.ubuntu.com/releases/18.04/beta/ubuntu-18.04-beta-preinstalled-server-arm64+raspi3.img.xz

解压下载的文件

$ xz -d ubuntu-18.04-beta-preinstalled-server-arm64+raspi3.xz

将你将用于树莓派的 SD 卡插入你的台式机或笔记本电脑。你的计算机将为 SD 卡分配一个驱动器盘符——类似于 /dev/sda/dev/sdb。输入 dmesg 命令并检查输出的最后几行以找出该卡的驱动器分配。

下一步要非常小心!我怎么强调都不为过;如果你弄错了驱动器分配,你可能会破坏你的系统。

使用以下命令将镜像写入 SD 卡,将 <DRIVE> 更改为你的 SD 卡的驱动器分配(在上一步中获得)

$ dd if=ubuntu-18.04-beta-preinstalled-server-arm64+raspi3.img of=<DRIVE> bs=8M

完成后,将 SD 卡插入你的 Pi 并启动它。确保 Pi 已连接到你的网络,然后使用用户名/密码组合 ubuntu/ubuntu 登录。

在你的 Pi 上输入以下命令以安装一些东西来准备编译 PriTunl

$ sudo apt-get -y install build-essential git bzr python python-dev python-pip net-tools openvpn bridge-utils psmisc golang-go libffi-dev mongodb

与标准的 PriTunl 源代码 GitHub 上的安装说明相比,有一些变化。确保你已登录到你的 Pi 并 sudo 到 root

$ sudo su -

这应该会让你进入 root 的主目录。要安装 PriTunl 版本 1.29.1914.98,请输入(根据 GitHub)

export VERSION=1.29.1914.98
tee -a ~/.bashrc << EOF
export GOPATH=\$HOME/go
export PATH=/usr/local/go/bin:\$PATH
EOF
source ~/.bashrc
mkdir pritunl && cd pritunl
go get -u github.com/pritunl/pritunl-dns
go get -u github.com/pritunl/pritunl-web
sudo ln -s ~/go/bin/pritunl-dns /usr/bin/pritunl-dns
sudo ln -s ~/go/bin/pritunl-web /usr/bin/pritunl-web
wget https://github.com/pritunl/pritunl/archive/$VERSION.tar.gz
tar -xf $VERSION.tar.gz
cd pritunl-$VERSION
python2 setup.py build
pip install -r requirements.txt
python2 setup.py install --prefix=/usr/local

现在 MongoDB 和 PriTunl systemd 单元应该准备好启动了。假设你仍然以 root 身份登录,请输入

systemctl daemon-reload
systemctl start mongodb pritunl
systemctl enable mongodb pritunl

就是这样!你已准备好访问 PriTunl 的浏览器用户界面,并通过按照 PriTunl 网站上的 安装和配置说明进行配置。

标签
User profile image.
我是一名专业的系统管理员,专门研究 Unix 和 Linux 系统。自 90 年代初以来,我一直在从事企业网络、Unix 系统、网络/系统安全和 Web 技术方面的工作,甚至还了解了一些关于 Windows 的知识。

10 条评论

与使用 PiVPN (http://www.pivpn.io/) 非常容易设置的 OpenVPN 相比,有什么优势?

很好,但除非你有一个 aes-ni 处理器,否则你会遭受带宽损失。

仅仅在 3B+ 上使用一个以太网端口会不会有性能损失?添加一个 USB 转以太网适配器来分离内部网络和外部网络是否会有更好的性能?或者,CPU 更有可能成为瓶颈?

当然你可以这样做,PriTunl 使用 NATting 而不是网络路由。我注意到的是,瓶颈往往是用户的互联网连接,而不是 Pi。

回复 作者:Ethan Moe (未验证)

看起来你现在需要在软件包列表中添加 `libssl-dev`,以便 Cryptography 能够构建。

我按照你的说明操作,但 pritunl-web 无法加载。

使用 systemctl status pritunl.service 检查服务的状态

回复 作者:Manap (未验证)

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© 2025 open-source.net.cn. All rights reserved.