使用 EasyTier 组建虚拟局域网
EasyTier 简介
EasyTier 是一款简单、安全、去中心化的异地组网工具。无需公网 IP,无需复杂配置,就能把分布在不同地点的设备组成一个虚拟局域网,适合:
- 远程办公:让公司、家中和外地的电脑像在同一局域网一样互通
- 异地访问:随时随地安全访问家中 NAS、服务器或其他设备
- 游戏加速:组建虚拟局域网,畅玩联机游戏
- 物联网组网:让分布在不同地点的设备安全互联
与 ZeroTier、Tailscale 这类中心化组网工具不同,EasyTier 是去中心化的,不区分服务器和客户端,只要一台设备能与虚拟网中任意一个节点通信,就能加入虚拟网。
安装
sudo pacman -S easytier
安装后执行:
easytier-cli -V
easytier-core -V
若输出版本号则代表安装成功。
Fish 补全
如果使用 fish ,可以用以下命令添加命令行补全支持:
easytier-core --gen-autocomplete fish > ~/.config/fish/completions/easytier-core.fish
easytier-cli gen-autocomplete fish > ~/.config/fish/completions/easytier-cli.fish
重新打开终端后即可生效。其他 shell(bash、zsh 等)也可用同样的方式生成补全。
组网
组网很简单:在所有设备上运行相同网络名称(--network-name)和网络密码(--network-secret)的 easytier-core 即可。没有公网 IP 时,通过公共服务器(共享节点)就能组网。
sudo easytier-core \
-i 10.11.11.1/24 \
--network-name <虚拟网络名称> \
--network-secret <虚拟网络密码> \
-p tcp://225284.xyz:11010
每台设备把 -i 换成自己不同的虚拟 IP(或使用 -d 自动分配),其余参数保持一致,就能加入同一个虚拟网络。
easytier-core需要 root 权限创建虚拟网卡(TUN 设备),请用sudo运行。
命令解析
-i指定本机虚拟 IP 地址,如10.11.11.1/24。也可以用-d(DHCP 模式)自动分配,默认网段10.126.126.0/24--network-name指定虚拟网络名称(支持中文)。若与其他用户网络名冲突,可能导致组网失败--network-secret指定虚拟网络密码,保护网络安全,所有节点必须一致-p指定要连接的节点地址,可多次指定。无公网 IP 时填公共服务器地址-l指定监听端口,默认基准端口11010-n子网代理,把本地局域网共享给虚拟网中的其他节点(见进阶用法)
测试连通性
组网完成后,在任意节点 ping 其他节点的虚拟 IP:
ping 10.11.11.1
ping 10.11.11.2
如无法 ping 通,很可能是防火墙阻止了入站流量,请关闭防火墙或添加放行规则。
常用命令
easytier-cli 用于查看和管理虚拟网络:
easytier-cli node查看本节点信息easytier-cli peer查看虚拟网中的节点列表easytier-cli route查看虚拟网路由信息easytier-cli -h查看帮助
公网服务器列表
以下服务器为我验证过稳定可用的公共服务器,同时指定多个公共服务器可以提高可用性。实际使用中只需有一个节点添加全部公共服务器,其他节点只需添加其中之一即可使用全部服务器。
| 公共服务器列表 |
|---|
| tcp://225284.xyz:11010 |
| tcp://183.230.36.171:11010 |
| tcp://easytier.weiai.org.cn:11010 |
| tcp://ros.scpsl.com.cn:11010 |
| tcp://har.yqst.top:11010 |
| tcp://et.basd1.de:11010 |
| udp://us01.225284.xyz:11010 |
| txt://net.qicwken.top |
| wss://et.chinokou.cn |
| wss://et.xn--6kr850c.com |
开机自启
创建 /etc/systemd/system/easytier.service 文件,写入以下内容:(将 ExecStart 换成自己的参数)
[Unit]
Description=EasyTier Service
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=easytier-core -i 10.11.11.1/24 --network-name <虚拟网络名称> --network-secret <虚拟网络密码> -p tcp://225284.xyz:11010
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
运行
sudo systemctl enable --now easytier
推荐用
-i固定虚拟 IP,方便记住和配置。若用-d自动分配,DHCP 模式下遇到 IP 冲突时地址会自动更改。
进阶用法
子网代理(点对网)
想让虚拟网中的其他节点直接访问自己局域网内的设备(如 NAS、路由器后台),用 -n 参数共享子网:
sudo easytier-core -i 10.11.11.1/24 \
--network-name <虚拟网络名称> \
--network-secret <虚拟网络密码> \
-p tcp://225284.xyz:11010 \
-n 192.168.1.0/24
子网信息会自动同步到虚拟网所有节点并自动配置路由,其他节点直接访问 192.168.1.x 即可。-n 可多次指定以代理多个网段。
子网代理需要放行虚拟网卡上的流量,如无法 ping 通可尝试加
--use-smoltcp参数使用用户态网络栈,免去配置防火墙。
配置文件
命令行参数较多时,可以用配置文件代替。运行 easytier-core 会打印一段配置,形如:
############### TOML ###############
(配置内容)
-----------------------------------
把 ############### TOML ############### 和 ----------------------------------- 之间的内容复制下来,保存为 .toml 文件即可作为配置,再通过 -c 参数加载:
easytier-core -c ./easytier.toml
命令行参数会覆盖配置文件中的同名选项。也可以使用官方配置助手在线生成配置文件。
自建共享节点
有公网 IP 的服务器可以搭建自己的公共节点。不带任何参数运行即可作为共享节点使用(若添加 --no-tun 参数不创建 TUN 设备则无需 root):
easytier-core
只想给特定网络提供服务时,开启私有模式:
sudo easytier-core --private-mode true \
--network-name <虚拟网络名称> \
--network-secret <虚拟网络密码>
常见问题
- 启动后提示 TunError:确认 TUN 驱动已加载、
/dev/net/tun存在,可先执行sudo modprobe tun再重试 - 报错 Address already in use:端口被占用,检查 11010 端口是否被其他程序占用,或用
-l指定其他端口 easytier-cli peer等命令报Instance not found or API service not available:easytier-cli无法连接管理端口,在启动easytier-core时添加--rpc-portal 127.0.0.1:15888即可- 无法 ping 通其他节点:检查防火墙是否放行,并确认各节点网络名称和密码完全一致
- 命令行帮助是英文:设置环境变量
export LANG=zh_CN即可切换为中文
卸载
sudo pacman -Rns easytier
SHORiNのARCH