easytier有两种方式组网,一种是去中心化,各个客户端都运行服务组网互联。所有设置和配置都在本地,服务器只做牵头链接当通道建成即可退出组网。还有一种为中心化部署,客户端统一链接到服务器。由服务器下发配置进行组网互联

​使用镜像easytier/easytier:latest​

官方文档:/https://easytier.cn/guide/installation.html

国内没有代理尝试 docker pull m.daocloud.io/docker.io/easytier/easytier:latest​

官方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:
    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:
      - /etc/easytier:/root
      - /etc/machine-id:/etc/machine-id:ro # 映射宿主机机器码
    command: -i <ip> --network-name <用户> --network-secret <密码> -p tcp://<服务器地址>:11010

easytier去中心化网络建立,建立在客户端没有公网地址。无法完成互联,此时需要外部服务器进行牵头。

传统服务器搭建,配置文件全部保存在服务器上。不存在于客户端本地,由服务器进行两端互访中转,如果连接成功将服务器停止。则连接断开无法通信

而easytier只参与前端的牵头,当连接建立成功那么就不需要服务器再参与流程。此时停止服务器流量不会中断,由于使用p2p打通。也不会受限于服务器带宽问题,而是受限于客户端的上传带宽

一般程序有三个文件,分别是easeytier-cli、easeytier-core、easeytier-web。主程序core、web页面是web、cli为中间件

web-embed为自建web控制台总文件

中心化部署

官方web控制台说明

使用中心化部署,由管方web控制台一键管理配置并下发。官方地址是https://easytier.cn/web#/auth,注册账户后即可使用

服务器使用-w 参数默认udp链接到conf-server.easytier.cn:22020地址

-w 后跟账户名称

由于我们自建服务器web控制台,使用easytier-web-embed文件。文件如果不带参数会以默认配置运行

默认配置为:

conf-server后端程序监听节点连接,默认端口22020,协议是udp

api-server作为中间件,负责前段和后端的通讯,默认端口11211

web前端默认端口为11210

所有参数说明

-d  指定数据库文件路径
-c 	指定服务器监听端口,用于客户端链接
-p  指定服务器使用协议
-l	指定服务器web端口
-a  指定api端口

服务端配置说明

由于web-embed文件只整合web控制台部分,所以主程序core需要单独运行。这里建议将两个运行文件都注册成后台服务

1.首先对easytier-web-embed文件进行chmod提权

root@VM-0-9-ubuntu:/home/ubuntu/easytier# sudo chmod 755 /home/ubuntu/easytier/easytier-web-embed​

2.同时对easytier-core文件进行chmod提权

​root@VM-0-9-ubuntu:/home/ubuntu/easytier# sudo chmod 755 /home/ubuntu/easytier/easytier-core​

3.如下文将core服务注册成后台服务,启动运行。同时启动web控制台

/home/ubuntu/easytier/easytier-web-embed -c 22022 -p tcp
-p 指定运行协议 tcp或udp
-c 指定监听端口
更多参数使用--help查看帮助手册

4.如下文将web服务注册成后台服务

  1. 创建新的服务文件 /etc/systemd/system/easytierweb.service​,并根据需要修改 ExecStart​ 后面的命令行参数。

使用 sudo nano /etc/systemd/system/easytierweb.service​创建服务文件,也可以直接将文件上传至服务器

[Unit]
Description=EasyTierWeb Service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/ubuntu/easytier/easytier-web-embed -c 22022 -p tcp

[Install]
WantedBy=multi-user.target

2.保存文件后,在命令行中执行以下命令以启用服务:

​systemctl enable easytierweb.service​

​systemctl start easytierweb.service​
​systemctl stop easytierweb.service​

可以使用start和stop命令启动服务

​systemctl status easytierweb.service​

也可以通过status查看服务状态

客户端链接至web控制台

Linux下启动命令

进入easytier-core的目录,输入命令 -w 制定服务器地址和账户

Windows上启动

Linux后台进程问题

由于是运行的程序文件,只要断开服务器链接。程序自动中断,这很不方便。于是需要将其添加为系统后台服务,记得以root账号操作

  1. 创建新的服务文件 /etc/systemd/system/easytier.service​,并根据需要修改 ExecStart​ 后面的命令行参数。

使用 sudo nano /etc/systemd/system/easytier.service​创建服务文件,也可以直接将文件上传至服务器

内容格式如下:

[Unit]
Description=EasyTier Service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/root/easytier-core --ipv4 x.x.x.x --network-name xxx --network-secret yyy --peers tcp://peer_host:11010

[Install]
WantedBy=multi-user.target

注释说明:
Description=EasyTier Service: 提供了服务的简短描述,这里说明这是一个名为“EasyTier Service”的服务。
After=network.target syslog.target: 定义了该服务应在network.target和syslog.target之后启动。这确保了网络和日志记录服务已经可用时才启动此服务。
Wants=network.target: 表示希望network.target处于活动状态,但并不强制要求。如果network.target不可用,服务仍会尝试启动。
Type=simple: 这个选项表示当ExecStart=指定的进程开始后,即认为服务已成功启动。这是最简单的服务管理模式。
ExecStart:指定了启动服务的命令及其参数
WantedBy=multi-user.target: 这意味着该服务将被链接到multi-user.target,在多用户模式下自动启动。multi-user.target是一种典型的运行级别,对应于非图形界面的完整多用户系统环境。

只需要修改ExecStart这一行即可

  1. 保存文件后,在命令行中执行以下命令以启用服务:

​systemctl enable easytier.service​

注意:必须在root账户下进行,不然权限不够

​systemctl start easytier.service​
​systemctl stop easytier.service​

可以使用start和stop命令启动服务

​systemctl status easytier.service​

也可以通过status查看服务状态

之后如果有需要改动的参数,那么现将服务停止systemctl stop easytier.service

之后进入/etc/systemd/system/easytier.service​下修改参数

修改完成之后使用sudo systemctl daemon-reload​来使 systemd 重新加载其配置文件的命令

之后重启服务systemctl restart easytier.service​

去中心化组网

服务端配置启动-Linux

进入文件目录使用easyrier-core服务,之后使用如下命令启动

root@VM-0-9-ubuntu:/home/ubuntu/easytier# ./easytier-core -i 10.143.144.100 --network-name mogan --network-secret Mo141433--! -l tcp://0.0.0.0:11010 --relay-network-whitelist mogan --latency-first --enable-kcp-proxy
-i 指定虚拟IP地址  
-d 自动分配虚拟地址
--network-name 指定组网名称
--network-secret 制定组网密码
-l,--listeners   指定监听地址,格式为tcp://0.0.0.0:11010
--relay-network-whitelist 指定白名单,白名单之外的不转发
--latency-first  开启延迟优先模式
--enable-kcp-proxy 开启kcp代理

客户端配置-ui界面

客户端可以使用easytier管理器pro,因为某些bug直接使用gui程序会导致内存泄漏。电脑内存占用率飙升,所以使用管理器。同时支持配置更多

这里填写网络名称和机器名称,设置加密密码。服务器填写格式为tcp://xxxx:监听端口

子网代理这块是代理一整个网段,选择性开启

之后开启一些必要选项,多线程、加密、压缩、RPC辅助打洞、KCP代理,之后安装服务,启动服务即可

客户端配置-命令行模式

如果使用命令行方式启动,注意使用powershell。同时以管理员身份启动,不然无法创建tun网卡进行打洞链接

.\easytier-core.exe -i 10.143.144.110 --network-name mogan --network-secret Mo141433--! --relay-network-whitelist mogan --latency-first --enable-kcp-proxy -p tcp://122.51.1.172:11010
-i 指定虚拟组网ip
-d 自动获取组网ip
-n 制定代理子网例如:192.168.0.0/24
--network-name 指定组网名称
--network-secret 指定组网密码
--relay-network-whitelist 指定组网白名单
--latency-first 开启延迟优先模式
--enable-kcp-proxy 开启kcp代理
-p 指定链接到的地址格式为:tcp://122.51.1.172:11010

某些情况下,节点拥有公网的 IP 和 端口,但 EasyTier 无法正确识别 (比如 NAT 主机),可以使用 --mapped-listeners 配置公网 IP 和端口。 例如:

​easytier-core --mapped-listeners tcp://8.8.8.8:12345 -l tcp://0.0.0.0:11010​

该 EasyTier 实例监听本地的 11010 TCP 端口,且该端口被映射到公网的 12345 端口。其他节点会尝试连接到公网的 12345 端口。

客户端配置-nas端dockercompose部署

由于官方的compose配置带有自动更新,这部分功能暂时不需要。所以以下是修改过后的脚本

services:
  easytier:
    image: easytier/easytier:latest
    hostname: nas		##设置主机名称
    container_name: easytier	##项目名称
    restart: unless-stopped		##自动重启
    network_mode: host			##网络模式host
    cap_add:					##给予权限
      - NET_ADMIN
      - NET_RAW
    environment:		
      - TZ=Asia/Shanghai
    devices:					##映射宿主机的 TUN/TAP 虚拟网络设备到容器中。TUN/TAP 通常用于实现虚拟私有网络(VPN)或虚拟网络桥接。
      - /dev/net/tun:/dev/net/tun
    volumes:					
      - /volume1/docker/docker/easytier/easytier:/root
      - /volume1/docker/docker/easytier/machine-id:/etc/machine-id:ro # 映射宿主机机器码
    command: -i 10.143.144.50 --network-name mogan --network-secret Mo141433--! -p tcp://122.51.1.172:11010 --relay-network-whitelist mogan --latency-first --enable-kcp-proxy -n 192.168.0.0/24
			##启动命令参数配置和客户端命令行一样