EasyTier内网穿透、远程访问详细配置教程

2026-01-11T13:59:00
2026-10-16 更新:补充了端口放行、连接检查和常见问题,原来的操作截图保留。截图使用 2.4.5 版 GUI,新版界面可能有些不同,配置时以网络名称、密码和节点地址这几项为准。

云服务器选购策略:
[post cid="29" /]

配置前提:

  • 一台拥有公网IP的云服务器,最好是干净的,刚装完系统的。
  • 云服务器安全组和系统防火墙都要检查。本教程的组网监听端口是 TCP 11010、UDP 11010,按需放行这两个端口,SSH 端口继续保留。后面的公网转发用到哪个端口,再单独放行哪个。
  • 本地客户端能正常上网,本教程以正常家用宽带为例,有些校园网可能不通,要视情况而定。

云服务器的推荐配置:

  • 系统:Ubuntu 22.04 版本
  • CPU:1H及以上
  • 内存:1G及以上

本文以 Ubuntu 22.04 LTS 为例。下面的 Linux 命令使用 root 权限执行,普通账号请先用 sudo -i 切换。已有 EasyTier 配置的机器先备份配置,不要直接覆盖。

1:EasyTier 介绍

EasyTier 可以把不同地点的设备放进一个虚拟网络。比如笔记本在外面,NAS 在家里,两边加入同一个网络后,就可以用虚拟 IP 访问 NAS 上的服务。

它会尝试建立点对点连接,直连不成时可以通过中转节点通信。能不能直连,还是要看两边的 NAT 和防火墙;买了云服务器不等于一定能跑满家里的带宽。这里采用自己搭建公网节点的方式,方便管理。

开始配置之前我希望你大概理解EasyTier的运作原理,这将对正确使用本工具有很大帮助:

  1. 本工具的大概原理是创建一个虚拟网络,然后通过配置使所有相关设备加入此虚拟网络(ZeroTier正是这种方式,但配置起来比这个麻烦),虚拟网络中的节点可通过分配的IP去访问任意其他节点。我们继续往下看。
  2. 本文用一台公网 IP 云服务器作为初始连接节点。客户端先连接它,再发现同一个网络里的其他设备。多台公网节点可以增加可用路径,但客户端要配置可达的节点地址;不能只配一台,再指望它宕机后自动找到别的入口。
  3. 其次,我们需要有访问端和被访问端。假设你有一台NAS和一台笔记本,你希望在出差的路上用笔记本远程看家里NAS中的电影,那么我们称笔记本为访问端,NAS为被访问端。
  4. 正常情况下你需要在笔记本和NAS中安装EasyTier并加入虚拟网络,然后在笔记本上通过自动分配的虚拟IP+端口号访问NAS。这种模式相对安全,不会将被访问端直接暴露在公网之上。但是如果你的访问端是一台手机或者其他难以安装外部软件的设备,这种方式就相对麻烦。不用担心,该工具提供端口转发功能,能够将特定端口转发到云服务器的指定端口,通过此方式将服务直接暴露于公网,我将此方式的配置步骤放在最后,你可以按需选择需要的穿透方式。

2:服务器端配置

2.1:SSH连接云服务器

如果你不懂SSH是啥,这里是我写的SSH连接云服务器教程:
[post cid="129" /]
如果你懂SSH,请跳过这一步。

2.2:准备阶段

2.2.1:切换国内软件源

先执行 apt update。腾讯云等服务商的系统镜像通常已经配了国内源,如果下载正常,这一步不用改。

确实需要换源时,先用 cat /etc/os-release 和 dpkg --print-architecture 看一下系统。下面只适用于 Ubuntu 22.04(jammy)、amd64 架构,示例用的是中科大源。Debian、Ubuntu 24.04 和 ARM 机器不要照抄,可以按中科大镜像帮助选择对应配置。

先备份,再修改:

cp -a /etc/apt/sources.list /etc/apt/sources.list.bak-$(date +%Y%m%d-%H%M%S)
cat > /etc/apt/sources.list <<'EOF'
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
EOF
apt update

2.2.2:安装依赖工具

apt update
apt install -y curl unzip ca-certificates

安装unzip时如果弹出以下窗口,不要慌张,点击键盘左上角的ESC键退出即可

2.3:安装服务端EasyTier

执行一键安装命令:

curl -fL "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" -o /tmp/easytier.sh && \
bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/

脚本来自 EasyTier 官方仓库。这里的 --gh-proxy 是第三方下载加速,不能保证一直可用;它也不代表前面下载脚本的 raw.githubusercontent.com 或查询版本的 api.github.com 都能访问。如果第一行已经失败,就先停下来,别继续执行旧脚本。可以改走官方下载页,不要从不明网盘下载替代文件。

安装完成界面:

启动EasyTier:

systemctl start easytier@default

2.4:配置阶段

先定好网络名称和网络密码,后面每台设备都要填同一组。network_secret 就是加入这个网络的凭据,别用截图里的密码,也别用文章的示例值。

下面的 CHANGE_ME_TO_YOUR_OWN_SECRET 必须换成你自己生成的长随机密码;网络名 my-home-net 也可以改,改完记住。已有配置先备份:

cp -a /opt/easytier/config/default.conf /opt/easytier/config/default.conf.bak-$(date +%Y%m%d-%H%M%S)

改好下面的值再执行:

cat > /opt/easytier/config/default.conf <<'EOF'
hostname = "转发服务器"
dhcp = true
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
]
rpc_portal = "127.0.0.1:15888"

[network_identity]
network_name = "my-home-net"
network_secret = "CHANGE_ME_TO_YOUR_OWN_SECRET"

[flags]
enable_kcp_proxy = true
enable_quic_proxy = true
latency_first = true
EOF

重启EasyTier服务:

systemctl restart easytier@default

安全组和系统防火墙是两层,都要确认 TCP/UDP 11010 的规则。管理接口 15888 只监听本机,不用对公网开放。

如果系统已经启用 UFW,可以执行下面两行;没用 UFW 的,去现有防火墙里加对应规则即可,不需要为了这篇教程再启用一套防火墙。

ufw allow 11010/tcp
ufw allow 11010/udp

接着看服务有没有起来:

systemctl status easytier@default --no-pager -l
journalctl -u easytier@default -n 50 --no-pager

active (running) 只说明进程在运行,客户端是否加入,还要继续往下检查。

3:Windows客户端配置

EasyTier 提供 Windows GUI 面板,所以操作起来非常方便。

3.1:客户端GUI下载

从官方下载页或 GitHub Releases下载适合自己架构的 GUI 安装包。原文截图是 Windows x64 的 2.4.5 版,新装时先看发布说明,服务端和客户端尽量使用同一版本。

如果安全软件拦截,先核对下载来源和告警详情,不要直接关掉杀毒软件。开源不等于下载到的每个文件都安全,来源不明的安装包就不要运行。

安装后打开,界面是这样的:

点击右上角settings切换中文,如果你希望开机自启则点击开启开机自启。

3.2:客户端配置

所有需要修改的配置我都在图片中使用红框标注出来了。图里的网络名称、密码和服务器 IP 是当时的示例,填你自己的:

  • 网络名称:和服务端的 network_name 一样。
  • 网络密码:和服务端的 network_secret 一样。
  • 节点地址:tcp://你的云服务器公网IP:11010。
  • 虚拟 IPv4:先选自动分配,别照抄截图里其他设备的地址。

    修改完成后,点击运行网络按钮即可加入网络。

    其他需要加入网络的Windows设备都按照本方法设置,加入后能够看到所有已加入网络的设备,如下图所示。


设备列表中能看到对端的虚拟 IPv4 后,再用这个地址访问服务。例如 NAS 的虚拟 IP 是 10.126.126.2,网页服务端口是 8080,浏览器里输入 http://10.126.126.2:8080。这里的 IP 和端口都要换成你实际看到的值。

4:Linux客户端配置

这里是命令行方式,依赖安装命令适用于使用 APT 的 Ubuntu、Debian。前面的 Ubuntu 换源配置不能直接用于 Debian。
为了兼容NAS、软路由等设备,我还写了Docker Compose的配置方式,请往下翻看。

4.1:安装依赖工具

apt update
apt install -y curl unzip ca-certificates

安装unzip时如果弹出以下窗口,不要慌张,点击键盘左上角的ESC键退出即可

4.2:安装客户端EasyTier

执行一键安装命令:

curl -fL "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" -o /tmp/easytier.sh && \
bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/

安装完成界面:

启动EasyTier:

systemctl start easytier@default

4.3:配置阶段

先按 2.4 节的方法备份已有配置,再编辑。网络名和密码与服务器端保持一致;下面的 203.0.113.10 是文档示例地址,必须换成自己的云服务器公网 IP:

cat > /opt/easytier/config/default.conf <<'EOF'
hostname = "被控端"
dhcp = true
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
]
rpc_portal = "127.0.0.1:15888"

[network_identity]
network_name = "my-home-net"
network_secret = "CHANGE_ME_TO_YOUR_OWN_SECRET"

[[peer]]
uri = "tcp://203.0.113.10:11010"

[flags]
enable_kcp_proxy = true
EOF

重启EasyTier服务:

systemctl restart easytier@default

其他 Linux 设备也按本方法设置,hostname 可以分别改成方便辨认的名称。

重启后先在 Windows 客户端的设备列表里确认能看到这台机器,再用它的虚拟 IP 和实际服务端口测试访问。

5:Docker Compose客户端配置

我个人比较喜欢用 Docker Compose而非Docker CLI,所以本教程也采用这种方式去配置。
这里假设你了解基本的 Docker 使用知识,写的比较简单。这份配置使用 Linux 的 host 网络和 /dev/net/tun,用于 Linux 宿主机,不直接套用到 Windows、macOS 的 Docker Desktop。先确认 ls -l /dev/net/tun 能看到设备。

5.1:编辑docker-compose.yml

services:
  easytier:
    image: daocloud.io/docker.io/easytier/easytier:latest
    hostname: easytier
    container_name: easytier
    restart: always
    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:
    - -d
    - --network-name
    - my-home-net
    - --network-secret
    - CHANGE_ME_TO_YOUR_OWN_SECRET
    - -p
    - tcp://云服务器公网IP:11010

把网络名、密码和云服务器公网 IP 都改成自己的。 示例保留原文的 DaoCloud 镜像地址,它是第三方镜像入口;拉取失败时可以使用官方镜像 easytier/easytier,网络恢复后再重试。latest 会变化,长期运行建议确认版本后固定镜像标签。

5.2:运行docker容器

执行命令:

docker compose up -d

用下面的命令看看容器是否在反复重启、日志里有没有报错:

docker compose ps
docker compose logs --tail=50 easytier

其他需要使用 Docker Compose 加入网络的 Linux 设备都按照本方法设置。
容器正常运行后,再到另一台已加入网络的设备上确认能看到它,并测试实际服务端口。

6:(可选)将服务暴露到公网

前面提到,有时候访问端不方便安装 EasyTier,可以把指定服务转发到公网。只需要自己远程访问 NAS 的话,到第 5 节就够了,这一节可以跳过。

转发之后,公网能访问到这个服务。先确认服务有登录认证,安全组尽量限制来源 IP;不要直接把 NAS 管理后台或 SMB 445 端口开放给所有人。

6.1:编辑服务器端配置文件

为什么我们需要再次编辑服务器端的配置文件呢?
这里的运作原理是:

EasyTier网络之外的设备发起请求 -> 到达公网云服务器 -> 转发请求至EasyTier网络之内的设备 -> 响应请求

所以这里需要修改服务器端配置文件以接收指定端口的请求并转发到指定设备。
输入命令,编辑配置文件:

vim /opt/easytier/config/default.conf

下面使用 [[port_forward]],与原教程的 2.4.5 版配置源码一致。升级后若转发规则没生效,按实际安装版本核对字段,不要只看服务进程是否存活。

将以下内容加入进去:

[[port_forward]]
bind_addr = "0.0.0.0:xxxx"
dst_addr = "10.126.126.2:yyyy"
proto = "tcp" # 也可以输入udp

注意:xxxx改成云服务器须指定的接收端口,yyyy改成被控端须发布到公网的服务的端口。如果要添加多个转发端口,继续往下追加即可。

下面是两个演示规则:云服务器 TCP 1234 转到目标 TCP 2345,UDP 2345 转到目标 UDP 3456。端口要改成实际服务端口,不是照抄就能访问。10.126.126.2 也要换成被访问设备的虚拟 IP,并确保该设备使用固定且不冲突的虚拟 IP;DHCP 地址变化后,转发目标会失效。

完整配置如下,网络名和密码仍要改成自己的:

hostname = "转发服务器"
dhcp = true
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
]
rpc_portal = "127.0.0.1:15888"

[network_identity]
network_name = "my-home-net"
network_secret = "CHANGE_ME_TO_YOUR_OWN_SECRET"

[[port_forward]]
bind_addr = "0.0.0.0:1234"
dst_addr = "10.126.126.2:2345"
proto = "tcp"

[[port_forward]]
bind_addr = "0.0.0.0:2345"
dst_addr = "10.126.126.2:3456"
proto = "udp"

[flags]
enable_kcp_proxy = true
enable_quic_proxy = true
latency_first = true

保存后重启服务,检查日志里有没有配置错误或端口占用:

systemctl restart easytier@default
systemctl status easytier@default --no-pager -l
journalctl -u easytier@default -n 50 --no-pager

先在云服务器上确认能连到目标虚拟 IP 和服务端口,再从外网测试云服务器的转发端口。公网入口、虚拟网络、目标服务这三段分开查,比较容易找到卡在哪里。

7:连不上时,先查这几处

7.1:客户端一直连不上云服务器

先核对节点地址是不是 tcp://自己的公网IP:11010,然后检查安全组和系统防火墙的 TCP 11010 规则。Windows 可以在 PowerShell 执行:

Test-NetConnection -ComputerName 203.0.113.10 -Port 11010

把示例 IP 换成自己的。TcpTestSucceeded : True 表示 TCP 端口能连通,不代表 UDP 已经通了,也不代表网络名称和密码一定正确。如果端口通、设备却没加入,就回头逐项核对网络名和密码,注意大小写与多余空格。

7.2:能看到设备,但打不开 NAS

先在 NAS 所在的局域网里确认服务本来就能打开,再检查服务监听地址。只监听 127.0.0.1 的服务,其他设备不能直接通过虚拟 IP 访问。

假设目标虚拟 IP 是 10.126.126.2、网页服务端口是 8080,在 Windows 上测试:

Test-NetConnection -ComputerName 10.126.126.2 -Port 8080

端口不通就检查目标设备的防火墙和服务监听;端口通了但网页报错,再看这个服务的登录、HTTPS 或访问限制。别一上来把所有设备的防火墙都关了。单纯 ping 不通也不能直接判断组网失败,有些系统只是不响应 ICMP。

7.3:已经连上,但速度不理想

看看客户端显示的是直连还是中转。走中转时,云服务器的带宽和两边到它的线路都会影响速度。直连是否成功与 NAT、UDP 放行等有关,先让基本连接跑通,再考虑调 KCP、QUIC 等选项。

7.4:公网端口转发没有反应

按顺序检查:配置保存后有没有重启、日志有没有报错、云服务器能否访问目标虚拟 IP 和端口、转发入口的安全组与防火墙是否放行。TCP 和 UDP 是两种不同规则,游戏服务用哪种就查哪种,Test-NetConnection 不能验证 UDP。

如果仍然不通,留言时带上系统版本、EasyTier 版本、报错内容,以及卡在上述哪一步。网络密码、公网 IP 等信息记得打码。

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »