easytier上手:去中心化的组网工具,使用WEB管理设备

This note was originally clipped from https://blog.zhheo.com/p/5h3t3qo7.html

这篇文章介绍了EasyTier作为一种无中心化主被动组网工具的特点和实现部署的具体方法。该工具通过去中心化的特性实现网络的自组织能力,每个设备均作为一个独立的节点参与组网。然而,其组网部署过程较为复杂,文章详细列出了一套简化部署流程,包括注册账号、使用 Docker 安装并配置组网服务、还提供在 Mac 上无需 GUI 用户的设备连接方法(通过.plist文件配置 services)。

easytier是一个去中心化的组网工具,这个去中心化的好处就是比如主服务器挂了,或者自建中转服务器到期更换,我们不需要再重新调整网络。每一个设备都是一个节点,这样操作起来非常方便。

但是easytier部署起来并不像名字所说的那样“easy”,主要是文档和操作流程异常复杂和繁琐。不过我这里筛选和整理,搞出了我的搭建逻辑,按照我的方式部署,你可以无需学习easytier冗长和复杂的教程。

前往 https://easytier.cn/web 注册一个控制台账号。

注册

注册

 

apihost不用管,输入账号密码和验证码

注册

注册

 

注册完我们就拥有了让二进制文件图形化控制的能力。

docker部署

在支持docker的机器上使用docker compose部署。

注意使用此方法不能更新容器,也不能进行docker-compose down操作,否则会丢失配置。如果想要不丢失配置,可以使用后文提到的非web控制台方式部署。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
services:
easytier:
image: easytier/easytier:latest
hostname: easytier
container_name: easytier
labels:
com.centurylinklabs.watchtower.enable: 'true'
restart: unless-stopped
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TZ=Asia/Shanghai
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- ./root:/root
- ./machine-id:/etc/machine-id:ro
command: -w 【这里改为你刚才注册的用户名】
 

执行之后我们就可以在网页端看到设备了。

控制

控制

 

配置网络

我们可以点击右侧的齿轮。点击创建一个新网络。

创建网络

创建网络

 

创建网络

创建网络

 

设置一个网络名称和密码。

设置名称密码

设置名称密码

 

创建成功后我们就可以看到这个节点的信息和ip了。

节点

节点

 

在mac中不想使用gui(可选)

在mac中有客户端,如果你不想使用有UI界面,而是使用二进制文件来组网,那么将下载好的二进制文件放到/usr/local/bin,然后创建服务文件。

创建/Library/LaunchDaemons/easytier.plist

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
 
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated for serviceman. Edit as needed. Keep this line for 'serviceman list'. -->
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>easytier</string>

<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/easytier-core</string>
<string>-w</string>
<string>【这里改为你的用户名】</string>
</array>

<key>UserName</key>
<string>root</string>
<key>GroupName</key>
<string>wheel</string>
<key>InitGroups</key>
<true/>

<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>

<key>WorkingDirectory</key>
<string>/usr/local/bin</string>

<key>StandardOutPath</key>
<string>/var/log/easytier.log</string>
<key>StandardErrorPath</key>
<string>/var/log/easytier.log</string>
</dict>
</plist>

 

创建好了之后在终端执行

1
2
 
sudo chown root:wheel /Library/LaunchDaemons/easytier.plist
sudo chmod 644 /Library/LaunchDaemons/easytier.plist
 

给权限,然后执行

1
 
sudo launchctl bootstrap system /Library/LaunchDaemons/easytier.plist
 

执行后页面中可以看到。

页面

页面

 

然后就可以配置网络了。

如何让其他设备连用一个网络

我们创建好网络之后,点击export。

导出

导出

 

在新设备点击创建。

创建

创建

 

导入之前的文件即可。

导入文件

导入文件

 

后记

发现与我在用的一个软件不兼容(某神奇上网软件),研究了一下发现关闭仅使用物理网卡即可。

仅使用物理网卡

仅使用物理网卡

 

不使用web控制台(可选)

因为使用web控制台docker总是丢配置,所以还是持久化配置文件地址比较方便。

我创建了一个config.yaml,文件内容通过配置文件生成器获取。

输入完配置点击运行网络获取配置内容。

配置获取

配置获取

 

然后放在项目目录下的root文件夹中。

docker-compose文件更改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
services:
easytier:
image: easytier/easytier:latest # 国内用户可以使用 m.daocloud.io/docker.io/easytier/easytier:latest
hostname: easytier
container_name: easytier
labels:
com.centurylinklabs.watchtower.enable: 'true'
restart: unless-stopped
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TZ=Asia/Shanghai
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- ./root:/root
- ./machine-id:/etc/machine-id:ro # 映射宿主机机器码
command: -c /root/config.yaml