EasyTier 异地组网:VPS 自建节点、WireGuard 手机接入和 DNS
用 EasyTier v2.6.4 在 VPS 上自建公网节点,把 NAS 和办公室电脑组成私有网络,手机用 WireGuard 客户端经门户接入,再用 Magic DNS 按主机名访问。附校验安装与 systemd 配置。
EasyTier 异地组网怎么做:一台 VPS 当中心节点
EasyTier 异地组网的做法是:在一台有固定公网 IP 的 VPS 上运行 easytier-core,把家里的 NAS 和办公室电脑作为节点连到它,手机则用标准的 WireGuard 客户端,通过 VPS 上的 WireGuard 门户接入。完成后,你自己的设备都在同一个私有网络里,彼此用虚拟 IP 或主机名访问。下面所有命令都固定在 EasyTier v2.6.4,这是截至 2026-10-10 GitHub 标记为 Latest 的正式版本。
EasyTier 是一个开源的组网 VPN(虚拟专用网络)工具。这里只用它解决一个问题:把你自己拥有的设备连成一个网络。它不是访问境外网站的工具。文中的手机配置也只把虚拟网络的私有网段送进隧道,其他流量照常走本地网络。
如果你用过 Tailscale,在国内遇到连接慢或者长时间走中继,可以先读 Tailscale 直连和中继的区别,以及中继为什么慢,确认慢在哪一段。想先横向比较几种方案,可以看 Tailscale 替代方案对比。EasyTier 是其中一个选择。它的节点之间用一对网络名和网络密钥确认彼此属于同一个网络,后面会专门讲怎么保管这对值。
为什么 EasyTier 节点要放在 VPS 上
家里的宽带和办公室网络通常在 NAT(网络地址转换)后面。NAT 后面的设备可以主动连出去,但外面的设备不能直接连进来。两台都在 NAT 后面的设备,至少需要一个双方都能连上的节点。
WireGuard 门户(EasyTier 的 --vpn-portal 功能)对这个节点的要求更高。上游文档写得很清楚:
All traffic from WireGuard clients accessing the EasyTier virtual network will go through EasyTier node A.
意思是:WireGuard 客户端访问 EasyTier 虚拟网络的所有流量,都经过运行门户的那个节点(文档里叫节点 A)。同一页还写道,节点 A 一般需要一个公网 IP。所以手机能不能用,取决于这个节点的地址是否稳定、能否从外网到达。家庭宽带的公网 IP 可能会变,有的线路根本没有公网 IP。VPS 的地址固定,而且全天在线,所以门户节点放在 VPS 上最合适。
机房选在国内还是海外,主要看你的设备到 VPS 的延迟和线路质量。国内用户选 VPS:国内机房和海外机房怎么选 专门讨论这个问题,这里不重复。
为什么固定在 v2.6.4,而不用一键安装脚本
截至 2026-10-10,GitHub 上标记为 Latest 的是 v2.6.4,发布于 2026-05-12,不是预发布版本。它之前的 v2.6.0 到 v2.6.3 都是预发布版本。更新的 v2.7.0 发布于 2026-10-06,但它也是预发布版本,而且改了这里要用的 WireGuard 门户写法,后面有单独一节说明。
上游提供一键安装脚本。我们读了 v2.6.4 标签下的 script/install.sh,它有两点不适合固定版本的教程:
- 它总是下载最新的发布版本,没有指定版本的选项。哪天最新版变成 v2.7.x,同一条命令装出来的就是另一个版本。
- 它默认通过第三方代理
https://ghfast.top/下载 GitHub 上的文件,除非加上--no-gh-proxy。这个代理是为了解决国内访问 GitHub 慢的问题,但文件也因此经过了一个第三方。
这个脚本会把程序装到 /opt/easytier,在 /usr/sbin 里建 easytier-core 和 easytier-cli 的链接,并写一个模板单元 /etc/systemd/system/easytier@.service。它的路径和下面的手动安装不同。以后如果改用脚本,先停掉手动安装的服务,不要让两套同时运行。
所以下面直接下载 v2.6.4 的发布 zip 包,再核对 SHA-256 摘要。摘要一致,就说明文件和 GitHub 发布的完全相同,不管它是从哪里下载来的。
下载 EasyTier v2.6.4 并校验 SHA-256
先确认 CPU 架构:
uname -m输出 x86_64,就用下面这组命令。输出其他值(比如 ARM 的 aarch64),到 v2.6.4 发布页 找对应架构的 zip 文件和它旁边显示的 SHA-256 摘要,替换掉命令里的文件名和摘要。
sudo apt update && sudo apt install -y unzip curl
mkdir -p ~/easytier-v2.6.4 && cd ~/easytier-v2.6.4
curl -fLO https://github.com/EasyTier/EasyTier/releases/download/v2.6.4/easytier-linux-x86_64-v2.6.4.zip
echo "61b659eaedba658fa66fe47d17e1426cdd77e5d02fa15fed447bb4357c09dfd6 easytier-linux-x86_64-v2.6.4.zip" | sha256sum -c -v2.6.4 的发布里没有单独的校验文件。上面的摘要是 GitHub 在发布页上为每个文件显示的 SHA-256 值。安装前请自己打开发布页再对照一次,不要只相信这里抄写的值。
摘要一致时,sha256sum -c 在文件名后面打印 OK。如果打印 FAILED,说明文件下载不完整,或者内容被改过。删掉它重新下载,不要继续安装。
VPS 访问 GitHub 很慢时,可以在网络好的机器上下载,再用 scp 传到 VPS 上。校验命令照常运行,以它的结果为准。
解压并安装。zip 包里的目录结构这里不做假设,用 find 找出两个程序:
unzip -o easytier-linux-x86_64-v2.6.4.zip -d extracted
find extracted -type f -name 'easytier-*'
sudo install -m 755 "$(find extracted -type f -name easytier-core)" /usr/local/bin/easytier-core
sudo install -m 755 "$(find extracted -type f -name easytier-cli)" /usr/local/bin/easytier-cli
easytier-core --versionfind 应该列出 easytier-core 和 easytier-cli。--version 打印的版本号应该是 2.6.4。
用 --help 核对参数名
下面用到的参数名,是对照 v2.6.4 的源码和帮助文本确认的,没有在运行中的程序上逐个验证。单元文件里写错一个参数,服务就会启动失败,所以先自己运行一次:
easytier-core --help
easytier-cli --help在输出里确认这些参数存在:--ipv4(短写 -i)、--peers(短写 -p)、--network-name、--network-secret、--hostname、--vpn-portal、--accept-dns、--tld-dns-zone。
--ipv4 的帮助文本值得记住:不设置它,这个节点只转发数据包,不创建 TUN 设备。TUN 设备是内核里的虚拟网卡。本机程序要访问虚拟网络里的地址,就要经过它。还有一个 --dhcp 参数,会自动分配地址,默认从 10.0.0.1 开始。这里给每台设备写固定地址,因为手机配置和排错时都要用到确定的 IP。
网络名和网络密钥:当作密码保管
--network-name 标识你的虚拟网络。--network-secret 用来验证节点身份,帮助文本的原文是 "network secret to verify this node belongs to the vpn network"。所以这对值泄露,就等于把加入你网络的凭据交了出去。
上游的 systemd 示例把密钥直接写在 ExecStart 的命令行上。命令行参数对本机其他用户可见,用 ps 就能看到。v2.6.4 的源码允许用环境变量 ET_NETWORK_NAME 和 ET_NETWORK_SECRET 传入这两个值,所以我们把它们放进一个只有 root 能读的文件:
sudo install -d -m 700 /etc/easytier
printf 'ET_NETWORK_NAME=%s\nET_NETWORK_SECRET=%s\n' "home-mesh-$(openssl rand -hex 3)" "$(openssl rand -hex 24)" | sudo sh -c 'umask 077; cat > /etc/easytier/easytier.env'
sudo chmod 600 /etc/easytier/easytier.env
sudo ls -l /etc/easytier/easytier.env
sudo cat /etc/easytier/easytier.envls -l 应该显示 -rw-------,属主是 root。cat 显示两行,一行网络名,一行随机生成的密钥。把这两行存进你的密码管理器,因为每个节点都要用完全相同的两行。
密钥是随机生成的,所以命令本身不含密钥,shell 历史里也不会留下它。
为 EasyTier 写一个 systemd 服务
上游的示例单元把程序放在 /root 下,密钥也写在命令行里。下面是我们自己的写法:
sudo tee /etc/systemd/system/easytier.service > /dev/null <<'EOF'
[Unit]
Description=EasyTier node (v2.6.4)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
EnvironmentFile=/etc/easytier/easytier.env
ExecStart=/usr/local/bin/easytier-core --ipv4 10.144.144.1 --hostname vps --vpn-portal wg://0.0.0.0:11013/10.14.14.0/24
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF逐个说明 ExecStart 里的参数:
--ipv4 10.144.144.1是 VPS 在虚拟网络里的地址,网段沿用上游示例。--hostname vps是这个节点的名字,后面 Magic DNS 会用到。--vpn-portal wg://0.0.0.0:11013/10.14.14.0/24打开 WireGuard 门户:在 11013 端口监听,给 WireGuard 客户端使用 10.14.14.0/24 网段。这是上游文档的示例写法,v2.6.4 从 URL 的路径部分读取这个网段。- 没有写
--peers,因为 VPS 是第一个节点,它等其他节点来连。
EnvironmentFile 让 systemd 在启动前读入网络名和密钥。Restart=on-failure 让进程意外退出后,等 5 秒自动重启。
启动并检查:
sudo systemctl daemon-reload
sudo systemctl enable --now easytier.service
systemctl status easytier.service --no-pager
journalctl -u easytier.service -n 50 --no-pagerstatus 里应该看到 active (running)。如果是 failed,journalctl 的最后几行会写出原因。先对照 --help 检查参数名有没有写错。
再确认密钥没有出现在进程列表里:
ps -o args= -C easytier-core这里只应该看到 ExecStart 里写的参数,没有密钥。
防火墙:只开实际用到的端口
EasyTier 的文档没有专门讲防火墙的页面。v2.6.4 的 README 只有一句:ping 不通时,可能是防火墙挡住了入站流量。README 里还有一张默认端口表,但同一版本的源码和帮助文本对 WireGuard 监听端口的说法和 README 不一致。所以这里不照抄任何一张表,而是让节点先启动,再看它实际在监听什么:
sudo ss -lntup | grep easytier需要从公网进来的只有两样。第一是 11010,其他节点用它连接 VPS。下面加入节点时用的是 udp://,TCP 的 11010 留作 UDP 被拦时的备用。第二是 11013,手机通过它连 WireGuard 门户。WireGuard 本身走 UDP,但上游页面没有写明门户端口的协议,所以请在 ss 的输出里确认 11013 出现在 udp 那一行。ss 列出的其他端口,这个方案用不到,不用对外开放。
用 ufw 放行:
sudo ufw allow OpenSSH
sudo ufw allow 11010/tcp
sudo ufw allow 11010/udp
sudo ufw allow 11013/udp
sudo ufw enable
sudo ufw status verbose顺序不能反。先放行 SSH,再启用 ufw,否则启用的那一刻你可能失去 SSH 连接。启用前保留一个已登录的 SSH 窗口,新开一个连接确认能登录,再关掉旧窗口。
如果你的 VPS 服务商在控制面板里还有一层网络防火墙,这几个端口在那里也要放行。那一层拦住的包根本到不了系统,ufw 里放行多少条都没有用。
把家里的 NAS 和办公室电脑加进来
下面假设 NAS 和办公室电脑运行的是带 systemd 的 Linux。在每台设备上重复上面的下载、校验和安装步骤。NAS 如果是 ARM 架构,用发布页上对应架构的 zip 和摘要。
然后把同一对网络名和密钥放到这台设备上。在 VPS 上运行 sudo cat /etc/easytier/easytier.env 看到那两行,再在新设备上运行:
sudo install -d -m 700 /etc/easytier
sudo sh -c 'umask 077; cat > /etc/easytier/easytier.env'粘贴那两行,按 Ctrl+D 结束输入。用 sudo cat 确认内容和 VPS 上完全一致。
单元文件照抄 VPS 上的那份,只改 ExecStart 这一行,并去掉 --vpn-portal:
ExecStart=/usr/local/bin/easytier-core --ipv4 10.144.144.2 --hostname nas --peers udp://203.0.113.10:11010把 203.0.113.10 换成你的 VPS 公网 IP。每个节点的 --ipv4 都必须不同。办公室电脑用 10.144.144.3 和 --hostname office,以此类推。这就是 README 里加入节点的写法 -i 10.144.144.2 -p udp://FIRST_NODE_PUBLIC_IP:11010,只是换成了长参数名,方便以后读懂。
办公室电脑如果不是 Linux,按官方安装文档选择对应系统的程序,填入同一对网络名和密钥,以及同一个对端地址。
启动后检查连接:
sudo systemctl daemon-reload
sudo systemctl enable --now easytier.service
easytier-cli peer
easytier-cli route
ping -c 3 10.144.144.1README 里,easytier-cli peer 用来查看已连接的对端,easytier-cli route 用来查看路由信息。在 NAS 上,peer 的输出里应该能看到 VPS。ping 10.144.144.1 能通,说明 NAS 已经通过虚拟网络到达 VPS。回到 VPS 上运行 easytier-cli peer,也应该能看到 NAS。
手机怎么用 WireGuard 客户端接入 EasyTier
手机上不需要装 EasyTier。v2.6.4 的 README 写道,EasyTier 可以充当 WireGuard 服务端,让任何带 WireGuard 客户端的设备(包括 iOS 和 Android)访问 EasyTier 网络。VPS 的单元文件里已经打开了门户,现在只需要给手机做一份配置。
第一步,在 VPS 上导出客户端配置:
easytier-cli vpn-portal先建一个只有你能读的文件,再把输出中从 [Interface] 开始的配置部分复制进去:
umask 077
nano phone.conf第二步,手动改两行。上游文档里,导出的配置中这两行原样是这样的:
Address = 10.14.14.0/24 # should assign an ip from this cidr manually.
Endpoint = 0.0.0.0:11013 # should be the public ip of the easytier server.两行都要改,原因不同。10.14.14.0/24 是整个客户端网段,不是一台设备的地址,上游文档要求你从中手动选一个。0.0.0.0 在服务端表示监听所有网卡,对手机来说它不是一个可以连接的地址。
Address:从 10.14.14.0/24 里选一个没用过的地址。上游示例给第一台客户端用的是10.14.14.1/24。第二台手机用10.14.14.2/24。上游文档要求每台客户端使用不同的 IP,所以记一份清单,写明哪个地址给了哪台设备。Endpoint:换成 VPS 的公网 IP 和门户端口,比如203.0.113.10:11013。
第三步,AllowedIPs 保持原样。导出配置里的 AllowedIPs 列的是虚拟网络里的网段,上游示例是 192.168.80.0/20,10.147.223.0/24,10.144.144.0/24,你的列表以自己导出的为准。WireGuard 只把目的地址落在这些网段里的流量送进隧道,所以手机访问普通网站时照常走本地网络。这叫分流隧道(split tunnel)。AllowedIPs 同时充当路由表和访问控制列表,在 VPS 上自建 WireGuard VPN 里有详细解释。
第四步,把 phone.conf 导入手机上的 WireGuard 客户端。这个文件里有私钥,传输时按密码对待:先用 scp 拷到自己电脑上,再导入手机。导入后删掉中间的副本,不要通过聊天软件发送。
第五步,检查。在 VPS 上抓门户端口的包:
sudo tcpdump -ni any udp port 11013然后在手机上打开隧道。屏幕上出现来自手机的 UDP 包,说明包已经到达 VPS。客户端界面里应该出现最近一次握手的时间。最后用手机访问 NAS 的虚拟地址,比如浏览器打开 http://10.144.144.2: 加上 NAS 管理页面的端口。能打开,就说明手机已经进入你的私有网络。
v2.7.0 改了门户写法:截至 2026-10-10 的说明
截至 2026-10-10,v2.7.0 仍然是预发布版本,发布于 2026-10-06。它的发布说明写道:
URLs of the formwg://host:port/CIDRand the oldclient_cidrfield are rejected.
也就是说,上面用的 wg://0.0.0.0:11013/10.14.14.0/24 这种带网段的写法,在 v2.7.0 里会被拒绝。发布说明给出的替代方式是:门户地址只写 wg://host:port,配一个专用的服务端私钥,并改用有名字的客户端。原来的客户端配置需要重新导出。发布说明的亮点一栏是这样描述新门户的:
Multi-client WireGuard portals with runtime client changes, per-client status and traffic metrics, and Web/GUI management.
这里不写 v2.7.0 的具体参数。它还是预发布版本,参数在正式发布前仍可能变化。如果你打算升级,先读 v2.7.0 发布说明 和对应版本的 easytier-core --help,改好单元文件,再给每台手机重新导出配置。在那之前,继续用 v2.6.4 和上面的写法。
用 Magic DNS 按主机名访问 EasyTier 节点
设备一多,记虚拟 IP 就不方便了。EasyTier 的 Magic DNS 让节点之间用主机名互相访问。官方文档的要点如下:
- 启动时加上
--accept-dns参数,开启 Magic DNS。 - DNS 服务器的默认地址是
100.100.100.101。 - 节点名默认解析为
<hostname>.et.net,其中 hostname 就是--hostname设置的值。用--tld-dns-zone可以换成别的域。 - 在 Linux 上,你需要手动把 DNS 服务器设为
100.100.100.101。文档说明自动设置系统 DNS 只在 Windows 和 macOS 上提供。
v2.6.4 的帮助文本还提醒,Magic DNS 会改动系统的 DNS 设置。所以先在一台机器上试,确认没问题再推广到其他节点。
在 Linux 节点的 ExecStart 末尾加上 --accept-dns,以 NAS 为例:
ExecStart=/usr/local/bin/easytier-core --ipv4 10.144.144.2 --hostname nas --peers udp://203.0.113.10:11010 --accept-dns然后重新加载并重启,再按文档的方法检查 DNS 地址能否到达:
sudo systemctl daemon-reload
sudo systemctl restart easytier.service
ping -c 3 100.100.100.101ping 不通,后面的域名解析也不会成功,先解决这一步。
Ubuntu 上用 systemd-resolved 只把 et.net 交给 Magic DNS
上游文档没有提到 systemd-resolved。下面是我们的做法,依据是 Ubuntu 24.04 的 resolvectl 手册页。目标是只把 *.et.net 的查询交给 100.100.100.101,其他域名继续用系统原来的 DNS。这样 Magic DNS 出问题时,只影响虚拟网络里的主机名,不影响正常上网。
第一步,找到 EasyTier 创建的网卡。不要假设它的名字,用虚拟 IP 去找:
ip -brief addr | grep 10.144.144.输出行的第一列就是网卡名。也可以对比服务启动前后 ip -brief link 的输出,多出来的那一个就是。
第二步,在这块网卡上设置 DNS 服务器和路由域:
IFACE=填你的网卡名
sudo resolvectl dns "$IFACE" 100.100.100.101
sudo resolvectl domain "$IFACE" '~et.net'
resolvectl status "$IFACE"
resolvectl query office.et.net~et.net 前面的波浪号很关键。手册页说明,带 ~ 前缀的是仅路由域(routing-only domain):它只决定哪些查询发到这块网卡的 DNS 服务器,不会被加进搜索域。resolvectl status 应该在这块网卡下显示 100.100.100.101 和 ~et.net。resolvectl query office.et.net 应该返回办公室电脑的虚拟 IP。如果你用 --tld-dns-zone 换了域,把 ~et.net 换成你的域。
这两条设置在网卡或服务重启后是否保留,我们没有找到文档确认。重启 EasyTier 后,再运行一次 resolvectl status "$IFACE"。如果 DNS 那一行不见了,就重新执行上面两条命令。
手机能用 Magic DNS 吗:自己测试一次
这个问题上游没有答案。我们查了三个页面:Magic DNS 页面没有提到 WireGuard 门户客户端,WireGuard 客户端页面没有提到 DNS,图形界面的门户页面也没有提到 DNS。所以这里不说它能用,也不说它不能用,而是给一个你自己可以跑的测试。
在手机的隧道配置里做两处改动。其他行保持导出时的样子:
[Interface]
PrivateKey = <导出配置里的私钥,不要改>
Address = 10.14.14.1/24
DNS = 100.100.100.101
[Peer]
PublicKey = <导出配置里的公钥,不要改>
AllowedIPs = <导出配置里的网段,不要改>, 100.100.100.101/32
Endpoint = 203.0.113.10:11013DNS = 100.100.100.101 让手机在隧道打开期间把域名查询发给这个地址。AllowedIPs 里加上 100.100.100.101/32,这些查询才会走进隧道,而不是发到本地网络上。
重新打开隧道,在手机浏览器里访问 http://nas.et.net: 加上 NAS 管理页面的端口。然后打开一个普通网站。结果有三种可能,各自对应不同的处理:
- 两个都能打开:这个方法在你的环境里可用,保留改动。
- NAS 主机名打不开,普通网站正常:门户客户端没有用上 Magic DNS。删掉两处改动,手机上改用虚拟 IP 访问。
- 普通网站也解析失败:这个地址没有替手机解析其他域名。立刻删掉两处改动,恢复正常上网。
如果主机名用不了,笔记本这类可以编辑 hosts 文件的设备,可以加一行 10.144.144.2 nas.et.net 作为替代。WireGuard 隧道里的 DNS 还有其他常见问题,可以参考 WireGuard 隧道里的 DNS 问题排查。
出问题时先查哪里
服务起不来。 systemctl status easytier.service 显示 failed。运行 journalctl -u easytier.service -n 50 --no-pager 读最后几行。日志里有 Failed to load environment files,说明 /etc/easytier/easytier.env 不存在或者路径写错。否则先用 easytier-core --help 对照单元文件里的每个参数名。
VPS 上没有 TUN 设备。 运行 ls -l /dev/net/tun。这个文件不存在,节点就无法创建虚拟网卡。上游的 Docker 示例也要把 /dev/net/tun 传进容器,原因相同。有些容器类虚拟化的 VPS 不提供 TUN,请向服务商确认。
NAS 连不上 VPS。 NAS 上 easytier-cli peer 看不到 VPS。先在 VPS 上运行 sudo ss -lntup | grep 11010,确认 EasyTier 在监听。再看 sudo ufw status verbose 和服务商控制面板的防火墙。然后在 VPS 上运行 sudo tcpdump -ni any port 11010,同时在 NAS 上重启服务(系统没有 tcpdump 就用 apt 安装)。一个包都看不到,说明包在到达 VPS 之前就被拦了。包能到达但仍然没有连接,就用 sudo cat 对比两边的 easytier.env,网络名和密钥必须一字不差。
手机握手不成功。 客户端里一直没有握手时间。先检查 Endpoint 是否还是 0.0.0.0:11013,这是最容易漏改的一行。再在 VPS 上运行 sudo tcpdump -ni any udp port 11013,看手机的包有没有到达。没有包,就是 UDP 11013 在 ufw 或服务商防火墙上没有放行。
握手成功,但访问不到 NAS。 先在 VPS 上运行 ping -c 3 10.144.144.2。VPS 自己也到不了 NAS,问题出在节点之间,和手机无关,回到上一条排查。VPS 能到但手机不能,检查手机的 Address 是否和别的客户端重复。还要检查 NAS 本机的防火墙,README 提醒过,ping 不通可能是目标机器的防火墙挡住了入站流量。
主机名解析不了。 先 ping -c 3 100.100.100.101。不通,就检查这个节点的 ExecStart 有没有 --accept-dns。能通但解析失败,运行 resolvectl status "$IFACE",确认 DNS 服务器和 ~et.net 都还在。
升级和备份
/etc/easytier 和单元文件就是这个节点的全部配置。备份它们,再加上一份手机地址分配清单,就可以在新 VPS 上很快重建:
sudo tar czf easytier-backup.tgz -C / etc/easytier etc/systemd/system/easytier.service
sudo chmod 600 easytier-backup.tgz这个压缩包里有网络密钥,按密码对待,存到 VPS 以外的地方。
升级时,在一个新目录里重复下载和校验,换成新版本的文件名和发布页上的摘要。校验通过后再替换程序:
sudo systemctl stop easytier.service
sudo install -m 755 "$(find extracted -type f -name easytier-core)" /usr/local/bin/easytier-core
sudo install -m 755 "$(find extracted -type f -name easytier-cli)" /usr/local/bin/easytier-cli
sudo systemctl start easytier.service
easytier-core --version顺手改掉单元文件 Description 里的版本号。升级到 v2.7.x 之前,先读上面那一节:门户写法变了,旧的单元文件会被拒绝,手机配置也要重新导出。
FAQ
EasyTier 异地组网一定要有 VPS 吗?
严格来说不一定,但至少要有一个其他设备都能连上的节点。家里和办公室的网络通常在 NAT 后面,外部设备连不进去。如果还要让手机通过 WireGuard 门户接入,上游文档说明所有门户客户端访问虚拟网络的流量都经过门户节点,而且这个节点一般需要公网 IP。家庭宽带的公网 IP 可能会变,甚至没有,所以有固定公网 IP 的 VPS 是最稳的选择。
手机不装 EasyTier,怎么加入 EasyTier 网络?
用 WireGuard 门户。在 VPS 节点上启动时加 --vpn-portal wg://0.0.0.0:11013/10.14.14.0/24,用 easytier-cli vpn-portal 导出客户端配置。把 Address 手动改成 10.14.14.0/24 里一个没用过的地址,每台设备不同。把 Endpoint 改成 VPS 的公网 IP 加 11013,再导入手机上的 WireGuard 客户端。这是 v2.6.4 的写法。截至 2026-10-10 仍是预发布版本的 v2.7.0 会拒绝这种带网段的门户地址。
EasyTier 的网络密钥泄露了怎么办?
网络密钥用来验证节点是否属于这个网络,所以泄露后要尽快更换。生成一个新的随机密钥,写进每个节点的 /etc/easytier/easytier.env,然后逐个运行 sudo systemctl restart easytier.service。所有节点都换完之后,用 easytier-cli peer 确认每个节点又重新连上了。以后不要把密钥写在 ExecStart 命令行里,因为本机其他用户用 ps 就能看到。
Linux 上 EasyTier 的 Magic DNS 为什么不生效?
官方文档说明,在 Linux 上需要手动把 DNS 服务器设为 100.100.100.101,系统不会自动设置。先确认节点启动参数里有 --accept-dns,再 ping 100.100.100.101 确认地址可达。在 Ubuntu 上,可以用 resolvectl dns 给 EasyTier 的网卡设置这个 DNS 服务器,再用 resolvectl domain 设置 ~et.net,这样只有 *.et.net 的查询会发给 Magic DNS。
为什么不用 EasyTier 的一键安装脚本?
在 v2.6.4 标签下读到的 install.sh 总是安装最新的发布版本,没有指定版本的选项,所以无法固定在 v2.6.4。它默认还会通过第三方代理 https://ghfast.top/ 下载文件,除非加上 --no-gh-proxy。手动下载发布页上的 zip 包,再核对 GitHub 显示的 SHA-256 摘要,可以确定装上的就是你想要的那个版本。