将 Raspberry Pi 3B+ 变成 PriTunl VPN

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

Dwight Sipler on Flickr

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

关于 Raspberry Pi 3B+ 的特别注意事项

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

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

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

安装 PriTunl

您可以通过在安装 PriTunl 之前在 Raspberry Pi 3B+ 上安装 64 位操作系统来克服这些问题。我假设您具备如何使用 Linux 命令行和 Raspberry Pi 的基本知识。

首先,打开终端并通过输入以下命令下载 Ubuntu 18.04 ARM64 Beta 版本

$ 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

将您将用于 Raspberry Pi 的 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 相比,有什么优势吗?

我没有使用过 PiVPN,但从我所见,它只是一个简单的命令行工具。PriTunl 为您提供了一个 Web BUI,如果您订阅企业版,则可以使用高级功能,例如 Active Directory 集成。

回复 ,作者 Martin

不错,但是除非您有 aes-ni 处理器,否则您将遭受带宽损失。

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

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

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

看来您现在需要在软件包列表中添加 `libssl-dev` 才能构建 Cryptography。

我已按照您的说明进行操作,但 pritunl-web 无法加载。

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

回复 ,作者 Manap (未验证)

© . All rights reserved.