前言

最近又跟朋友玩儿上我的世界了,但是在联机上出现了一些问题,我的世界是只支持局域网联机的,但是朋友之间并不在同一网络。

之前一直是使用frp内网穿透来实现远程联机的,但是服务器的带宽只有5Mbps,根本不够用,整合包mod一多,只能支持两个人联机,第三个人进来就卡死。

后面尝试了几种方案,都是虚拟局域网组网实现,这里只是记录我最喜欢的一种。

  1. 小黄鸭N2N(EasyN2N):这个我在很早之前就用过了,可以私有部署,但是这个软件用的人较少,而且基本不更新了,还有点儿小bug,可以用但是不是很推荐。
  2. 星空组网:这个是在网上搜到的,是服务商提供服务,不能私有部署,免费支持10个设备,如果朋友少的话,也够用了,没有服务器的话非常推荐啊。
  3. EasyTier:这个是我目前看到的比较喜欢的异地组网,首先可以私有部署,并且GitHub开源,13.2k Star,社区活跃,文档丰富,也有自己的官网,组网成功后延迟很低。

开始

我对异地组网技术不了解,我只知道我按照下面的步骤进行配置,组网成功了,这些步骤只能作为参考,不能作为教程。

如需详细了解EasyTie,请移步至EasyTie 一个简单、安全、去中心化的异地组网方案官方文档。

服务端安装EasyTier

在1Panel应用商店搜索easytier,直接安装

1Panel的easytier只包含easytier-core:EasyTier 的核心程序,没有web界面。

image-20260820133359466

安装完成后,打开目录,找到data/config.toml

image-20260820133623184

image-20260820133746434

可以参考我的config.toml,主要是修改network_name与network_secret,这两个信息在客户端连接时需要使用到,修改完成后重启应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
instance_name = "InsectMk的服务器实例"
hostname = "InsectMk的服务器"
instance_id = "3d3db819-ad54-4d86-bf9a-faac864478ab"
dhcp = false

listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
"wg://0.0.0.0:11011",
"ws://0.0.0.0:11011/",
"wss://0.0.0.0:11012/",
]

exit_nodes = []
peer = []
rpc_portal = "0.0.0.0:15889"

[network_identity]
network_name = "名称"
network_secret = "密码"

安装后一定要放行对应的端口,这个配置需要放行的端口如下:

端口协议用途
11010TCP + UDP主通信端口(tcp/udp 协议接入)
11011TCP + UDPWebSocket(TCP)+ WireGuard(UDP)
11012TCP加密 WebSocket(wss)

客户端连接

到EasyTier官网下载链接下载对应平台的安装包就行了。

Windows

下载位置:

image-20260820134502842

配置:

image-20260820134958383

安卓

下载位置:

image-20260820134525551

配置(与windows逻辑一致,可参考)

Linux

场景:有时候你的游戏服务器之类的,部署在Linux上的,朋友需要连上你的Linux服务器。

这里采用的方案是自己做一个easytier.service 服务,这样系统重启也能自动打开,测试系统为Ubuntu 24。这部分内容包含AI生成部分,除*《进阶:用 easytier-cli 一键注册(可选)》*外,其他都自行试验过,是可信的

第一步:确认二进制路径和权限

首先,我们需要到官网下载Linux的二进制包 -> 下载地址,下载后解压到你的Linux服务器上,我的解压位置/opt/software/tool/easytier,easytier-core可执行文件就在这个目录下。

1
2
3
4
5
6
7
8
# 假设你的 easytier 解压在 /opt/software/tool/easytier/
ls -la /opt/software/tool/easytier/easytier-core

# 确认是 ELF 64-bit 可执行文件
file /opt/software/tool/easytier/easytier-core

# 如果没有执行权限,加上
chmod +x /opt/software/tool/easytier/easytier-core
第二步:创建 systemd 服务文件

用 root 权限新建 /etc/systemd/system/easytier.service:

1
sudo vim /etc/systemd/system/easytier.service

写入以下内容(路径按你的实际情况改):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=EasyTier Service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/software/tool/easytier/easytier-core --network-name <你的网络名称> --network-secret <你的网路密钥> -p tcp://<easytier服务器地址或IP>:11010
WorkingDirectory=/opt/software/tool/easytier
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

几个关键点说明:

  • 不要加 -d 参数:-d 是 daemon 模式,但 systemd 本身就是守护进程管理器,让 easytier 以前台进程跑、由 systemd 托管才是正确姿势
  • WorkingDirectory 避免 easytier 在错误的目录下找配置文件
  • Restart=on-failure + RestartSec=5:崩了 5 秒后自动重启,避免频繁重启触发 systemd 的限流保护
第三步:重载配置并启动

如果后续EasyTier服务器信息变更,就直接修改/etc/systemd/system/easytier.service文件的 ExecStart,但每次修改.service 文件后,都必须让 systemd 重新读取配置 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 重载 systemd 配置(这步不能省!)
sudo systemctl daemon-reload

# 重置之前的失败计数(如果之前启动失败过)
sudo systemctl reset-failed easytier.service

# 启动服务
sudo systemctl start easytier.service

# 查看状态
sudo systemctl status easytier.service

# 设置开机自启
sudo systemctl enable easytier.service

看到 Active: active (running) 就是成功了。

📌 daemon-reload 是干什么的? 简单说就是告诉 systemd”重新读一遍所有的 .service 配置文件”。systemd 会把配置缓存到内存里,你改了文件如果不执行 daemon-reload,systemd 还在用旧的配置,改了也白改 。

第四步:查看日志排查问题

如果启动失败,用 journalctl 看详细日志:

1
2
3
4
5
# 查看 easytier 服务的最近 50 行日志
journalctl -u easytier.service -n 50 --no-pager

# 实时跟踪日志(类似 tail -f)
journalctl -u easytier.service -f

常见的失败原因和对应的排查方向:

错误现象原因解决
status=203/EXECExecStart 路径错误、文件无执行权限、或架构不匹配检查路径是否指向真实二进制、chmod +x、用 file 确认架构
Start request repeated too quickly短时间内重启太多次触发限流先 systemctl reset-failed,修好配置后再启动
connect timeout对端节点不可达检查网络连通性、确认对端地址和端口正确
进阶:用 easytier-cli 一键注册(可选)

如果你下载的包里同时有 easytier-cli,也可以用官方提供的一键命令注册服务,省去手写 service 文件的步骤 :

1
2
3
4
5
6
7
8
9
10
11
# 进入 easytier-core 和 easytier-cli 所在的目录
cd /opt/software/tool/easytier-core/

# 一键注册为系统服务(后面的参数会作为 easytier-core 的启动参数)
sudo ./easytier-cli service install --network-name InsectMkNet --network-secret insectmk -p tcp://insectmk.cn:11010

# 启动服务
sudo ./easytier-cli service start

# 查看状态
sudo ./easytier-cli service status

这种方式会自动生成 service 文件并注册,适合不想手动编辑配置的场景。

参考文档

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