配置服务端

1,添加配置文件

进入文件管理里的docker新建文件夹easytier>config,把config.yaml上传进去
2740937191.png
config.yaml内的内容如下

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
38
39
instance_name = "server-fnos"               # 实例名称:这个easytier实例的唯一标识符,用于区分同一台机器上运行的多个实例
hostname = "zhangz-fnos" # 主机名:在虚拟网络中显示的名称,其他节点看到的就是这个名字
ipv4 = "10.8.8.99" # IPv4地址:服务器在虚拟网络中的固定IP地址
dhcp = false # DHCP功能:关闭DHCP服务,表示使用静态IP分配而不是自动分配
# 网络监听配置
listeners = [
"tcp://0.0.0.0:11010", # TCP协议,所有网卡,端口11010
"udp://0.0.0.0:11010", # UDP协议,所有网卡,端口11010
"wg://0.0.0.0:11011", # WireGuard协议,端口11011
"ws://0.0.0.0:11011/", # WebSocket协议,端口11011
"wss://0.0.0.0:11012/", # 加密WebSocket协议,端口11012
]
mapped_listeners = [] # 映射监听器:用于特殊网络环境(如NAT后的端口映射),当前为空

exit_nodes = [] # 网络功能出口节点:允许作为出口网关的节点列表,当前为空
peer = [] # 静态对等体:预先配置的要连接的对等体列表,当前为空
rpc_portal = "0.0.0.0:15888" # RPC管理接口:在所有网络接口的15888端口提供管理API(可通过CLI工具访问)

# 网络身份:定义虚拟网络的认证信息
[network_identity]
network_name = "zhangz" # 网络名称,所有节点必须相同
network_secret = "Zhangz110119!" # 网络密码,所有节点必须相同

# 代理网络:允许虚拟网络内的客户端通过此服务器访问的物理网络段
[[proxy_network]]
cidr = "192.168.199.0/24" # 表示服务器可以充当到这个网段的网关

# 功能标志
[flags]
default_protocol = "tcp" # 默认协议:优先使用TCP协议进行通信
dev_name = "" # 设备名称:自定义TUN设备名称,空表示自动生成
enable_encryption = true # 启用加密:所有通信都进行加密
enable_ipv6 = true # 启用IPv6:支持IPv6协议
mtu = 1380 # MTU值:网络包的最大传输单元,1380是推荐的优化值
latency_first = false # 延迟优先:false表示带宽优先,true表示延迟优先
enable_exit_node = false # 启用出口节点:不允许此服务器作为出口网关
no_tun = false # 禁用TUN:false表示创建虚拟网卡(服务器必须为false)
use_smoltcp = false # 使用smoltcp:使用用户态的TCP/IP栈,false表示使用系统内核协议栈
foreign_network_whitelist = "zhangz" # 外部网络白名单:允许访问的其他网络名称(这里配置了自己,可能是个小问题)

2,配置docker-compose

然后进入docker容器,选择Compose,新增项目:
项目名称:easytier
路径:/vol2/1000/docker/easytier
来源:上传docker-compose.yml

docker-compose.yml内的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3.8'  # Compose 文件版本

services:
easytier:
container_name: easytier # 容器名称
image: easytier/easytier:latest # 使用的镜像(latest 标签)
restart: always # 设置容器自动重启策略
privileged: true # 启用特权模式,允许容器执行更多系统操作
network_mode: host # 使用主机网络模式(共享主机网络)
hostname: easytier # 设置容器的主机名
volumes:
- ./config:/root # 挂载主机目录 ./config 到容器内 /root
environment:
- TZ=Asia/Shanghai # 设置容器时区为上海
command: -c /root/config.yaml # 从config.yaml配置文件启动

其中config.yaml就是刚开始配置的config文件
完成后运行即可
注意检查日志是否有报错

配置客户端

配置PC客户端

下载easytier客户端文件,下载地址
Windows 版本下载:https://github.com/EasyTier/EasyTier/releases/download/v2.2.4/easytier-windows-x86_64-v2.2.4.zip
其他版本下载:https://github.com/EasyTier/EasyTier/releases/tag/v2.2.4

解压缩到文件夹到D:\Program Files\easytier

下载nssm,安装 Windows 系统服务,实现开机自启,下载地址:
NSSM 工具下载地址:https://nssm.cc/download
下载后把nssm.exe解压到D:\Program Files\easytier文件夹内

D:\Program Files\easytier创建文件config.toml,粘贴下边内容进去

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
instance_name = "zhangz-pc"                      # 实例名称:这个easytier实例的唯一标识符,用于区分同一台机器上运行的多个实例
hostname = "zhangz-pc" # 主机名:在虚拟网络中显示的名称,其他节点看到的就是这个名字
ipv4 = "10.8.8.2" # IPv4地址:服务器在虚拟网络中的固定IP地址
dhcp = false # DHCP功能:关闭DHCP服务,表示使用静态IP分配而不是自动分配

# 网络监听配置
listeners = [] # 此节点不监听任何 incoming 连接,客户端不需要被连接,只需要连接服务器
mapped_listeners = [] # 映射监听器:用于特殊网络环境(如NAT后的端口映射),当前为空
exit_nodes = [] # 网络功能出口节点:允许作为出口网关的节点列表,当前为空

rpc_portal = "0.0.0.0:15888" # RPC 管理接口配置,含义是允许从任何地方通过 15888 端口使用 easytier-cli 工具来管理这个节点

# 网络身份:定义虚拟网络的认证信息
[network_identity]
network_name = "zhangz" # 网络名称,所有节点必须相同
network_secret = "Zhangz110119!" # 网络密码,所有节点必须相同

# 对等体连接配置
[[peer]] # 定义一个对等体连接(双括号表示是数组,可以多个)
uri = "tcp://fnos.jintian.site:11010" # 要连接的服务器地址,这里我用tcp

# 功能标志
[flags]
no_tun = false # 禁用TUN:false表示创建虚拟网卡(服务器必须为false)
default_protocol = "tcp" # 默认协议:优先使用TCP协议进行通信
enable_encryption = true # 启用加密:所有通信都进行加密
enable_ipv6 = true # 启用IPv6:支持IPv6协议
mtu = 1380 # MTU值:网络包的最大传输单元,1380是推荐的优化值

用管理员进入cmd,粘贴下边内容安装服务

1
2
nssm install EasyTier "D:\Program Files\easytier\easytier-core.exe"
nssm set EasyTier AppParameters "-c config.toml"

回车后启动服务

1
nssm start EasyTier

测试连接

进入正在运行的easytier的终端,选择/bin/sh对应的连接,输入

1
easytier-cli peer

看到下边内容表示成功
1422337225.png

查看或编辑服务

1
nssm edit EasyTier

卸载服务
1
nssm remove EasyTier

假如失败,删除后重新配置,完整重新配置命令如下:

1
2
3
4
5
6
7
8
nssm remove EasyTier confirm
nssm install EasyTier "D:\Program Files\easytier\easytier-core.exe"
nssm set EasyTier AppParameters "-c config.toml"
nssm set EasyTier AppDirectory "D:\Program Files\easytier"
nssm set EasyTier AppStdout "D:\Program Files\easytier\service.log"
nssm set EasyTier AppStderr "D:\Program Files\easytier\service-error.log"
nssm set EasyTier AppExit Default Restart
nssm start EasyTier

配置xiaomi-air13客户端

配置方式同PC客户端的配置方式,仅config.toml文件不同

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
instance_name = "xiaomi-air13"                   # 实例名称:这个easytier实例的唯一标识符,用于区分同一台机器上运行的多个实例
hostname = "xiaomi-air13" # 主机名:在虚拟网络中显示的名称,其他节点看到的就是这个名字
ipv4 = "10.8.8.3" # IPv4地址:服务器在虚拟网络中的固定IP地址
dhcp = false # DHCP功能:关闭DHCP服务,表示使用静态IP分配而不是自动分配

# 网络监听配置
listeners = [] # 此节点不监听任何 incoming 连接,客户端不需要被连接,只需要连接服务器
mapped_listeners = [] # 映射监听器:用于特殊网络环境(如NAT后的端口映射),当前为空
exit_nodes = [] # 网络功能出口节点:允许作为出口网关的节点列表,当前为空

rpc_portal = "0.0.0.0:15888" # RPC 管理接口配置,含义是允许从任何地方通过 15888 端口使用 easytier-cli 工具来管理这个节点

# 网络身份:定义虚拟网络的认证信息
[network_identity]
network_name = "zhangz" # 网络名称,所有节点必须相同
network_secret = "Zhangz110119!" # 网络密码,所有节点必须相同

# 对等体连接配置
[[peer]] # 定义一个对等体连接(双括号表示是数组,可以多个)
uri = "tcp://fnos.jintian.site:11010" # 要连接的服务器地址,这里我用tcp

# 功能标志
[flags]
no_tun = false # 禁用TUN:false表示创建虚拟网卡(服务器必须为false)
default_protocol = "tcp" # 默认协议:优先使用TCP协议进行通信
enable_encryption = true # 启用加密:所有通信都进行加密
enable_ipv6 = true # 启用IPv6:支持IPv6协议
mtu = 1380 # MTU值:网络包的最大传输单元,1380是推荐的优化值

配置nas客户端

配置homenas

创建配置文件config.yaml

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
instance_name = "homenas"                        # 实例名称:这个easytier实例的唯一标识符,用于区分同一台机器上运行的多个实例
hostname = "homenas" # 主机名:在虚拟网络中显示的名称,其他节点看到的就是这个名字
ipv4 = "10.8.8.12" # IPv4地址:服务器在虚拟网络中的固定IP地址
dhcp = false # DHCP功能:关闭DHCP服务,表示使用静态IP分配而不是自动分配

# 网络监听配置
listeners = [] # 此节点不监听任何 incoming 连接,客户端不需要被连接,只需要连接服务器
mapped_listeners = [] # 映射监听器:用于特殊网络环境(如NAT后的端口映射),当前为空
exit_nodes = [] # 网络功能出口节点:允许作为出口网关的节点列表,当前为空

rpc_portal = "0.0.0.0:15888" # RPC 管理接口配置,含义是允许从任何地方通过 15888 端口使用 easytier-cli 工具来管理这个节点

# 网络身份:定义虚拟网络的认证信息
[network_identity]
network_name = "zhangz" # 网络名称,所有节点必须相同
network_secret = "Zhangz110119!" # 网络密码,所有节点必须相同

# 对等体连接配置
[[peer]] # 定义一个对等体连接(双括号表示是数组,可以多个)
uri = "udp://fnos.jintian.site:11010" # 要连接的服务器地址,这里我用udp

# 代理网络:允许虚拟网络内的客户端通过此服务器访问的物理网络段
[[proxy_network]]
cidr = "192.168.200.0/24" # 表示服务器可以充当到这个网段的网关

# 功能标志
[flags]
no_tun = false # 禁用TUN:false表示创建虚拟网卡(服务器必须为false)
default_protocol = "tcp" # 默认协议:优先使用TCP协议进行通信
enable_encryption = true # 启用加密:所有通信都进行加密
enable_ipv6 = true # 启用IPv6:支持IPv6协议
mtu = 1380 # MTU值:网络包的最大传输单元,1380是推荐的优化值

把config.yaml上传到docker>easytier>config

添加docker-compose
进入Container Manager,选择项目,新增项目:
项目名称:easytier
路径:/volume1/docker/easytier
来源:上传docker-compose.yml
文件:

docker-compose.yml内容如下,它同服务器fnOS的一样,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3.8'  # Compose 文件版本

services:
easytier:
container_name: easytier # 容器名称
image: easytier/easytier:latest # 使用的镜像(latest 标签)
restart: always # 设置容器自动重启策略
privileged: true # 启用特权模式,允许容器执行更多系统操作
network_mode: host # 使用主机网络模式(共享主机网络)
hostname: easytier # 设置容器的主机名
volumes:
- ./config:/root # 挂载主机目录 ./config 到容器内 /root
environment:
- TZ=Asia/Shanghai # 设置容器时区为上海
command: -c /root/config.yaml # 从config.yaml配置文件启动

然后下一步下一步就可以运行了。

配置完成后测试连接
然后再次进入fnOS正在运行的easytier的终端,选择/bin/sh对应的连接,输入下边代码进行测试

1
easytier-cli peer

配置company-nas

创建配置文件config.yaml

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
instance_name = "company-nas"                    # 实例名称:这个easytier实例的唯一标识符,用于区分同一台机器上运行的多个实例
hostname = "company-nas" # 主机名:在虚拟网络中显示的名称,其他节点看到的就是这个名字
ipv4 = "10.8.8.11" # IPv4地址:服务器在虚拟网络中的固定IP地址
dhcp = false # DHCP功能:关闭DHCP服务,表示使用静态IP分配而不是自动分配

# 网络监听配置
listeners = [] # 此节点不监听任何 incoming 连接,客户端不需要被连接,只需要连接服务器
mapped_listeners = [] # 映射监听器:用于特殊网络环境(如NAT后的端口映射),当前为空
exit_nodes = [] # 网络功能出口节点:允许作为出口网关的节点列表,当前为空

rpc_portal = "0.0.0.0:15888" # RPC 管理接口配置,含义是允许从任何地方通过 15888 端口使用 easytier-cli 工具来管理这个节点

# 网络身份:定义虚拟网络的认证信息
[network_identity]
network_name = "zhangz" # 网络名称,所有节点必须相同
network_secret = "Zhangz110119!" # 网络密码,所有节点必须相同

# 对等体连接配置
[[peer]] # 定义一个对等体连接(双括号表示是数组,可以多个)
uri = "tcp://fnos.jintian.site:11010" # 要连接的服务器地址,这里我用tcp

# 功能标志
[flags]
no_tun = false # 禁用TUN:false表示创建虚拟网卡(服务器必须为false)
default_protocol = "tcp" # 默认协议:优先使用TCP协议进行通信
enable_encryption = true # 启用加密:所有通信都进行加密
enable_ipv6 = true # 启用IPv6:支持IPv6协议
mtu = 1380 # MTU值:网络包的最大传输单元,1380是推荐的优化值

把config.yaml上传到docker>easytier>config

添加docker-compose
进入Container Manager,选择项目,新增项目:
项目名称:easytier
路径:/volume1/docker/easytier
来源:上传docker-compose.yml
文件:

docker-compose.yml内容如下,它同服务器fnOS的一样,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3.8'  # Compose 文件版本

services:
easytier:
container_name: easytier # 容器名称
image: easytier/easytier:latest # 使用的镜像(latest 标签)
restart: always # 设置容器自动重启策略
privileged: true # 启用特权模式,允许容器执行更多系统操作
network_mode: host # 使用主机网络模式(共享主机网络)
hostname: easytier # 设置容器的主机名
volumes:
- ./config:/root # 挂载主机目录 ./config 到容器内 /root
environment:
- TZ=Asia/Shanghai # 设置容器时区为上海
command: -c /root/config.yaml # 从config.yaml配置文件启动

然后下一步下一步就可以运行了。