为Alpine Linux 3.20 编译安装ZeroTier
没有ZeroTier软件包!
由于我云服务器使用的是Alpine Linux来最大程度节省资源用于实际服务,而ZeroTier官方没有给出Alpine Linux的安装包,所以要用点野路子才能安装上。
使用官方的安装脚本 Be Like:
Neko_SG:~# curl -s https://install.zerotier.com | bash
*** ZeroTier Service Quick Install for Unix-like Systems
*** Tested OSes / distributions:
*** MacOS (10.13+) (just installs ZeroTier One.pkg)
*** Debian Linux (7+)
*** RedHat/CentOS Linux (6+)
*** Fedora Linux (16+)
*** SuSE Linux (12+)
*** Mint Linux (20+)
*** Kali Linux (2024.1+)
*** Supported architectures vary by OS / distribution. We try to support
*** every system architecture supported by the target.
*** Please report problems by opening a GitHub issue or Pull Request at:
*** https://github.com/zerotier/install.zerotier.com
*** Please include the content of `/etc/os-release` for your distribution.
*** Detecting Linux Distribution
*** Unknown or unsupported distribution! Aborting.
想从包管理器安装 Be Like:
Neko_SG:~# apk add zerotier
fetch https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
ERROR: unable to select packages:
zerotier (no such package):
required by: world[zerotier]
Neko_SG:~# apk add zerotier-one
ERROR: unable to select packages:
zerotier-one (no such package):
required by: world[zerotier-one]
Neko_SG:~# apk search zerotier
Neko_SG:~#
一个思路是去用别的发行版的软件包,解包提取二进制文件。但是由于Alpine Linux是用的C语言库是musl
而不是libc
,大部分发行版用点都是libc
,所以不一定可以兼容。
还有一个办法,那就相当硬核了,自己编译后,安装。这个方法肯定会遇到很多技术上的问题,所以也是最有挑战性的一条路子,但是,我还是决定开干。
下载源代码
之所以可以这么玩,是因为ZeroTier是开源的。 开源大法好!
先创建一个用于干活的文件夹,然后直接从Github的Release下载源代码:
mkdir /data/zerotier
cd /data/zerotier
wget https://github.com/zerotier/ZeroTierOne/archive/refs/tags/1.14.2.zip
unzip 1.14.2.zip
cd ZeroTierOne-1.14.2/
准备相关环境进行编译
因为Alpine Linux是轻量发行版,所以缺失的库很多,需要自己手动装。我也是边报错边安装,搞了好久。
我的版本是Alpine Linux 3.20
,以下是需要安装的软件包:
apk add util-linux pkgconfig openssl-dev libffi cargo linux-headers g++ gcc make
进行编译
进入源代码目录,执行:
make -j$(nproc)
如果没有报错,一个会顺利在目录生成一个zerotier-one
文件,然后还会有zerotier-cli
和zerotier-idtool
这两个软链接链接到zerotier-one
。如果是这样,那就编译成功了。
运行前的准备
如果你直接运行。那大概率并不会出现ZeroTier的虚拟网络接口,因为相关的内核模块并没有启用。当然,这个虚拟的接口需要先加入了网络才会开启,不然也是没有的。
运行这个命令开启内核模块:
modprobe tun
如果报错不行的话,试一下重启系统,模块要重启才能生效。
但是,这样子设置的话,肯定重启就没了。所以要持久化设置,就需要修改/etc/modules
文件:
nano /etc/modules
在文件后面加上tun
:
af_packet
ipv6
tun
这样设置后,重启也可以正常生效了。
ZeroTier,启动!
直接在编译好的目录下,执行
./zerotier-one -d
即可运行。
但是,ZeroTier也还是会在/usr/lib/zerotier-one/
目录下生成相关的配置文件,我个人更倾向于把那三个生成的文件放到这个目录下,跟官方的一致。
不出意外的话,就能在ifconfig
里面看到虚拟的接口了。
编译好的文件分享
如果你用的也是Alpine Linux,那你可以用我编译好的ZeroTier。
这是编译好的文件下载地址:
zerotier-musl.zip
同样的,需要安装对应的软件包才能使用:
apk add util-linux
装完之后,参照上面的运行前准备部分,照做就行了。