一个简单、安全、去中心化的异地组网方案

EasyTier 简介
EasyTier 是一款简单、安全、去中心化的内网穿透和异地组网工具,适合远程办公、异地访问、游戏加速等多种场景。无需公网 IP,无需复杂配置,轻松实现不同地点设备间的安全互联。
适用场景
远程办公:让公司、家中和外地的电脑像在同一局域网一样互通。
异地访问:随时随地安全访问家中 NAS、服务器或其他设备。
游戏加速:组建虚拟局域网,畅玩联机游戏。
物联网组网:让分布在不同地点的设备安全互联。
核心特点
去中心化:无需依赖中心服务器,所有节点平等独立,都可以参与转发和组网。
安全加密:支持 WireGuard 和 AES-GCM 加密,保障数据安全。
跨平台:支持 MacOS、Linux、Windows、FreeBSD、Android,未来将支持 iOS。
无公网 IP 组网:可通过共享公网节点组网,详见配置指南。
NAT 穿透:支持 UDP NAT 穿透,复杂网络环境下也能稳定连接。
智能路由:自动选择最佳链路,降低延迟,提高吞吐量。
高可用性:多路径支持,自动切换健康链路,提升稳定性。
图形界面(GUI)
EasyTier 提供简单易用的图形界面,适合新手快速上手。

管理后台
Easytier 有类似管理后台,只不过你需要分开部署。下面的步骤中,“管理后台配置”一节对应的就是 Web 控制台。“中继服务器配置”对应的就是 DERP 或是 coturn 的配置。
管理后台配置
说明
管理后台用的 easytier-web-embed 这个二进制文件启动
管理后台运行时启动了三个服务:config-server、api-server 和 web-server
config-server 是你节点需要连接的,类似于你用 tailscale up 的 --login-server 参数,或是 netbird up 的 --management-url
api-server 就是官方这个 Dashboard 的后端
web-server 就是官方这个 Dashboard 的前端
自建前后端 就等于 Netbird、Tailscale 那个 Web 管理页面,可以管理设备,设置子网路由

简单组网列子
EasyTier 是一款简单、安全、去中心化。所以没有服务端客户之说多是平等节点,有个管理平台统一管理比较方便。所以下面就用docker 安装管理平台,跟2中心节点,来个异地组网。A跟B中间互联网,因为A我这边有公网IP,B没有.要求是把A跟B内网打通组网。A路由器把dockerA的内网22020端口映射到公网,让别的节点联上管理平台,然后还要把dockerA EasyTier组网端口给映射到公网

dockerA节点安装easytier-web-embed 管理平台
docker run -d --hostname easytier-web-embed --entrypoint easytier-web-embed -v /root/docker/easytier/web-embed:/app -p 11211:11211 -p 22020:22020/udp easytier/easytier:latest
其中22020端口是用来管理中心节点,11211是web管理端口,输入管理IP:22020,先注册个用户名。然后登录后台没一台设备上线,下面就来安装中心节点,来上管理平台。

dockerA节点跟dockerB安装EasyTier节点
docker run --restart=always --privileged --memory=0 --name easytier --hostname easytier --network=host -e TZ=Asia/Shanghai -d easytier/easytier:latest --config-server udp://IP或域名: 22020 /用户名
其中--config-server udp://IP或域名: 22020 /用户名
ip或域名是你管理平台ip地址或者域名也行,其中22020是管理平台去管理中心节点端口,用户名是你注册用户名。
dockerA跟B节点同时安装EasyTier节点,在管理平台就能看到两个节点上线了。就可以在管理平台设备跟管理这两个中心节点来组网了。


用户名密码配置

dockerA节点,组网名称,密码,因为A节点是有公网IP所以设固定IP,还有子网代理172.16.100.0/24,因为做中转,所以是独立服务器,设备如下

高级功能,监听地址这是节点跟别的节通信组网接口,通常tcp:11011,udp:11011,wg这个是Wireguard。所以也要把这几个口开放到公网上让别的节点来访问。

而dockerB节点没有公网所就这个监听就可以关了,网络方式加手动写自己A节点ip加端口,域名加端口,子网代理就本场192.168.9.0/24,网络名称密码跟dockerA一样就行,如下

下面就可以看到两个节点组网息信了

路由转发

然后还要在A路由器上添加192.168.9.0/24 向dockerA 的静态路由
B路由器上添加172.16.100.0/24 向dockerB 的静态路由
开启系统转发
最后一项,这也是大坑,原来在这里网络就通,其实我也找了好久,哈哈哈。原来我装的系统是linux 的,系统是没有开启路由转发的,所以要开启系统路由转发。
linux如果做网关的话,转发和防火墙可以酌情配置,这些和 netbird 与 tailscale 是一致的:开启 ipv4 转发
在 /etc/sysctl.conf 文件中添加或修改以下行:
net.ipv4.ip_forward = 1
然后运行 sudo sysctl -p 来应用更改
docker compose
services:
watchtower: # 用于自动更新easytier镜像,若不需要请删除这部分
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_NO_STARTUP_MESSAGE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600 --cleanup --label-enable
#--------------------------------
easytier-web-embed:
image: 'easytier/easytier:v2.4.1'
restart: always
entrypoint: easytier-web-embed
volumes:
- '/root/docker/easytier/web-embed:/app'
ports:
- '22020:22020/udp' #客户端加入端口
- '11211:11211/tcp' #web管理api
- '11210:11210/tcp' #web管理端口
environment:
- WEB=1
- TZ=Asia/Shanghai
- LANG=zh_CN
hostname: easytier-web-embed
easytier:
image: easytier/easytier:v2.4.1 # 国内用户可以使用 m.daocloud.io/docker.io/easytier/easytier:latest
hostname: "魔百盒" #自己修改名字
container_name: easytier #docker名字
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/docker/eaytier:/root
- /etc/machine-id:/etc/machine-id:ro # 映射宿主机机器码
command: --config-server udp://easytier.catmomo.com:33030/用户名