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