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

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

注册一个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 # 国内用户可以使用 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: -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
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