EasyTier 一款内网穿透工具 让我眼前一亮

younghuie1个月前 (12-20)ubuntu相关43

由于部分区域的网络受到攻击,因此一些单位的网络安全级别提升到了令人发指的级别。因为我一开始接触的就是tailscale,对这个比较熟悉,其他的没有怎么尝试,感觉tailscale打洞能力也较强,能够穿透,并且功能比较强大,可代理内网流量,节点出口,安全dns等,最近发现又可以docker部署,更加方便了。但是单位的网络安全提升让我从11月起就告别的速度飞起的直连,只能通过中转服务器了,那个ping是受不了的,300ms起。因为最近忙,也没空研究这个,昨天意外发现某博主详细介绍了nat的几种类型,于是又开始不淡定了,准备试试了。

一、检测NAT类型

网上随便搜索,有很多的,

https://natchecker.com/zh

https://mao.fan/mynat

经过检测,我们单位这种网络,已经属于灾难级别了:

微信图片_20251220090612_325_117.png

大部分穿透软件对于NAT3-NAT4需要人品爆发才行,NAT4-NAT4这种基本是直接放弃。按上海移动目前的策略是NAT3,所以感觉还是有一线希望的。


二、easytier介绍

https://easytier.cn/guide/network/oneclick-install-as-service.html

以上是官方的教程啥的,官网显示,居然说部分NAT4-NAT4也能打通。


三、部署简单介绍

小白用户直接下载windows客户端即可,填写“网络名称”和“网络密码”选择公共服务器即可,入手非常简单。“高级设置”中也有丰富选项。

微信图片_20251220093430_326_117.png

凡是需要加入网络的,都选择填写同样的参数,然后点击“运行网络”就可以了,多台电脑瞬间就可以组网了。如果显示“p2p”然后延迟很低的话,就是打洞成功了,互访速度很快。我看了看飞牛nas应用中心是有这款软件的,一些istoreos也是有的,一些openwrt也会安装,实在没有的看我以下内容手动安装。


四、openwrt上安装使用

现在这个年代,allinone的方案实在太多,虚拟机遍地横行,因为入门时候我玩的是openwrt,有点怀旧,又因为目前几个经常待的地方都有op,就准备简单部署一下,高级功能后面研究。

openwrt中查看硬件架构,选择合适的easytier版本。

uname -m

我这里是显示

x86_64

因此选择了相应版本(https://easytier.cn/guide/download.html)下载。


然后要么sftp,要么openwrt自带的上传工具啥的,将文件上传到openwrt上。我放在了/root/easytier-linux-x86_64/

先nano一个启动文件,或者vi编辑器也是行的:

nano /etc/init.d/easytie

内容如下:

#!/bin/sh /etc/rc.common

START=99
STOP=10

start() {
    echo "Starting EasyTier..."
    # 使用 nohup 来确保程序在后台持续运行,即使会话结束
    nohup /root/easytier-linux-x86_64/easytier-core -d --network-name zzz --network-secret zzz -p tcp://public.easytier.cn:11010 -n 192.168.1.0/23 &>/dev/null &
}

stop() {
    echo "Stopping EasyTier..."
    killall easytier-core
}

给此文件添加可执行权限:

chmod +x /etc/init.d/easytier

设置开机自动后台运行:

/etc/init.d/easytier enable

可以查看,当前自动运行的服务有哪些:

for F in /etc/init.d/* ; do $F enabled && echo $F on  ;done

也可以不用重启直接启动:

/etc/init.d/easytier start


一般我为了验证是否配置成功,总是reboot重启一下的。


然后在另一台windows电脑上验证一下:

3.png

看到已经组网成功了。希望不要让我失望。我在op上部署时候加了一个参数"-n",可以访问所有该网段内设备的服务(这个太重要了),类似tailscale里的--advertise-routes。


五、自建公共服务器

version: "3.8"
services:
   watchtower: # Used to automatically update the easytier image, delete this part if not needed
         command: --interval 3600 --cleanup --label-enable
         container_name: watchtower
         environment:
               - WATCHTOWER_NO_STARTUP_MESSAGE
         image: containrrr/watchtower
         restart: always
         volumes:
               - /var/run/docker.sock:/var/run/docker.sock
   easytier:
         restart: always
         labels:
               com.centurylinklabs.watchtower.enable: "true"
         privileged: true
         mem_limit: 0m
         container_name: easytier
         hostname: easytier
         network_mode: host
         volumes:
               - /etc/easytier:/root
         environment:
               - TZ=Asia/Shanghai
         image: easytier/easytier:latest
         command: -i <ip> --network-name <user> --network-secret <password> -e tcp://<server address>:11010 -l tcp://<server address>:11010

watchtower不是必须的,近期这个镜像有点问题,导致其他所有容器会出问题,建议暂时可以别装。另外这个docker-compose文件并不是建立“服务器”专用的,只要改一改最后一条命令也可以用作普通peer,easytier本身就是“去中心化”的。这样以后就更方便部署了,只要可以玩docker的,都能简单部署。


2025.12.20晚:

以上内容是针对x86的openwrt,经过测试,aarch64架构的并不适用,手上有一台R4S,cpu是rockchip rk3399的!!!

是aarch64架构的,chatgpt说需要使用的是 procd 机制

easytier的具体写法如下:

#!/bin/sh /etc/rc.common

START=99
STOP=10

USE_PROCD=1

PROG="/bin/easytier-core"

start_service() {
    procd_open_instance
    procd_set_param command \
        $PROG \
        -i 100.127.127.88 \
        --private-mode true \
        --hostname R4S.YP.home \
        --network-name zzz \
        --network-secret zzz \
        -p tcp://vps's ip \
        --socks5 10777 \
        -n 192.168.1.0/24

    # 进程异常退出后自动拉起
    procd_set_param respawn 3600 5 5

    # 可选:写日志
    procd_set_param stdout 1
    procd_set_param stderr 1

    procd_close_instance
}
stop_service() {
    killall easytier-core
}

亲测可用,又可以非常快乐的玩耍了。


如果你和我一样 不需要云端web管理或者本地自建web管理的话,只需要用到easytier-cli和easytier-core,随便找个机器就能看到所有节点的status。当然不能吊死在一棵树上,其他方式也要部署一下,给自己留个后路。




2025.12.21.FNOS中如果是应用中心安装此软件的话,它会有一个config.yaml文件具体放置位置是:

/var/apps/EasyTier/shares/EasyTier/etc/config.yaml

可以这样简单配置:

hostname = "name"
instance_name = "any"
dhcp = false
ipv4 = "10.10.10.10"
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
    "wg://0.0.0.0:11011",
]
# rpc_portal = "0.0.0.0:0"

[network_identity]
network_name = "name"
network_secret = "mima"

[[peer]]
uri = "tcp://fuwuqiIP"

[flags]
latency_first = true


2025.12.22晚

自建的服务器一开始玩的好好的,后面突然发现问题了,发现网络又开始封锁了,在上面自建服务器这里-l tcp://ip:11010 -l udp://ip:11010 -l wg://ip:11011 -l ws://ip:11011 -l wss://ip:11012都加上,这样在某些客户端场景下部署时候-p 然后把这些tcp udp ws wg wss都加上即可,总不能全部封掉吧。 


看到有人利用cloudflare的tunnels来部署一个位于内网“服务器”的,用的ws和wss协议。准备继续深挖一下,给那些没有vps的小伙伴搞一下。

分享给朋友: