记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

内网组网工具-EasyTier

内网组网工具-EasyTier
一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。
官网:https://www.easytier.top
Github:https://github.com/EasyTier/EasyTier
下载:https://github.com/EasyTier/EasyTier/releases
Openwrt:https://github.com/EasyTier/luci-app-easytier
详细教程:https://www.easytier.top/guide/introduction.html
配置文件生成器(新)https://easytier.cn/web/index.html#/config_generator
特点:
XML/HTML代码
  1. 去中心化:无需依赖中心化服务,节点平等且独立。
  2. 安全:支持利用 WireGuard 加密通信,也支持 AES-GCM 加密保护中转流量。
  3. 高性能:全链路零拷贝,性能与主流组网软件相当。
  4. 跨平台:支持 MacOS/Linux/Windows,未来将支持 IOS 和 Android。可执行文件静态链接,部署简单。
  5. 无公网 IP 组网:支持利用共享的公网节点组网,可参考 配置指南
  6. NAT 穿透:支持基于 UDP 的 NAT 穿透,即使在复杂的网络环境下也能建立稳定的连接。
  7. 子网代理(点对网):节点可以将可访问的网段作为代理暴露给 VPN 子网,允许其他节点通过该节点访问这些子网。
  8. 智能路由:根据流量智能选择链路,减少延迟,提高吞吐量。
  9. TCP 支持:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。
  10. 高可用性:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。
  11. IPV6 支持:支持利用 IPV6 组网。
安装:
1、下载预编译的二进制文件 访问 GitHub Release 页面 下载适用于您操作系统的二进制文件。Release 压缩包中同时包含命令行程序和图形界面程序。
2、通过 crates.io 安装
XML/HTML代码
  1. cargo install easytier
3、通过源码安装
XML/HTML代码
  1. cargo install --git https://github.com/EasyTier/EasyTier.git
4、通过Docker Compose安装
docker-compose.yml
XML/HTML代码
  1. version: "3.8"  
  2. services:  
  3.    watchtower: #用于自动更新easytier镜像,若不需要请删除这部分  
  4.          command: --interval 3600 --cleanup --label-enable  
  5.          container_name: watchtower  
  6.          environment:  
  7.                - TZ=Asia/Shanghai  
  8.                - WATCHTOWER_NO_STARTUP_MESSAGE  
  9.          image: containrrr/watchtower  
  10.          restart: always  
  11.          volumes:  
  12.                - /var/run/docker.sock:/var/run/docker.sock  
  13.    easytier:  
  14.          restart: always  
  15.          labels:  
  16.                com.centurylinklabs.watchtower.enable: "true"          
  17.          privileged: true  
  18.          mem_limit: 0m  
  19.          container_name: easytier  
  20.          hostname: easytier  
  21.          network_mode: host  
  22.          volumes:  
  23.                - /etc/easytier:/root  
  24.          environment:  
  25.                - TZ=Asia/Shanghai  
  26.          image: easytier/easytier:latest  
  27.          command: -i <ip> --network-name <用户> --network-secret <密码> -e tcp://<服务器地址>:11010 -l <监听地址>
5、使用一键脚本安装 (仅适用于 Linux)
XML/HTML代码
  1. wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/easytier.sh" && bash /tmp/easytier.sh install
使用本脚本安装的 Easytier 可以使用脚本的 uninstall/update 对其卸载/升级
快速开始:
下文仅描述命令行工具的使用,图形界面程序可参考下述概念自行配置。
确保已按照 安装指南 安装 EasyTier,并且 easytier-core 和 easytier-cli 两个命令都已经可用。
双节点组网
假设双节点的网络拓扑如下
XML/HTML代码
  1. 节点 A  IP 22.1.1.1                   节点 B  
  2.     EasyTier        -----------     EasyTier  
  3.    10.144.144.1                    10.144.144.2  
在节点 A 上执行:
XML/HTML代码
  1. easytier-core --ipv4 10.144.144.1
命令执行成功会有如下打印。
XML/HTML代码
  1. easytier-core --ipv4 10.144.144.1  
  2. Starting easytier with config:  
  3. ############### TOML ##############  
  4.   
  5. instance_name = "default"  
  6. instance_id = "7294d13c-d119-49ae-a5f7-8c3a912538d7"  
  7. ipv4 = "10.144.144.1"  
  8. listeners = [  
  9.     "tcp://0.0.0.0:11010",  
  10.     "udp://0.0.0.0:11010",  
  11.     "wg://0.0.0.0:11011",  
  12. ]  
  13. peer = []  
  14. rpc_portal = "127.0.0.1:15888"  
  15.   
  16. [network_identity]  
  17. network_name = "default"  
  18. network_secret = ""  
  19.   
  20. [flags]  
  21. default_protocol = "tcp"  
  22. enable_encryption = true  
  23. enable_ipv6 = true  
  24.   
  25. -----------------------------------  
  26. xxxx-xx-xx xx:xx:xx: tun device ready. dev: tun0  
  27. xxxx-xx-xx xx:xx:xx: new listener added. listener: tcp://0.0.0.0:11010  
  28. xxxx-xx-xx xx:xx:xx: new listener added. listener: udp://0.0.0.0:11010  
在节点 B 执行
XML/HTML代码
  1. easytier-core --ipv4 10.144.144.2 --peers udp://22.1.1.1:11010
测试联通性
两个节点应成功连接并能够在虚拟子网内通信
ping 10.144.144.2
使用 easytier-cli 查看子网中的节点信息
XML/HTML代码
  1. easytier-cli peer
  2. easytier-cli route
多节点组网
基于刚才的双节点组网例子,如果有更多的节点需要加入虚拟网络,可以使用如下命令。
XML/HTML代码
  1. easytier-core --ipv4 10.144.144.2 --peers udp://22.1.1.1:11010
其中 --peers  参数可以填写任意一个已经在虚拟网络中的节点的监听地址。
子网代理(点对网)配置
假设网络拓扑如下,节点 B 想将其可访问的子网 10.1.1.0/24 共享给其他节点。
XML/HTML代码
  1. 节点 A IP 22.1.1.1          节点 B  
  2.     EasyTier      -------  EasyTier  ----- 10.1.1.0/24  
  3.   10.144.144.1           10.144.144.2  
则节点 B 的 easytier 启动参数为(新增 -n 参数)
XML/HTML代码
  1. easytier-core --ipv4 10.144.144.2 -n 10.1.1.0/24
子网代理信息会自动同步到虚拟网络的每个节点,各个节点会自动配置相应的路由,节点 A 可以通过如下命令检查子网代理是否生效。
检查路由信息是否已经同步,proxy_cidrs 列展示了被代理的子网。
XML/HTML代码
  1. easytier-cli route
测试节点 A 是否可访问被代理子网下的节点
ping 10.1.1.2
无公网IP组网
EasyTier 支持共享公网节点进行组网。目前已部署共享的公网节点 tcp://easytier.public.kkrainbow.top:11010。
使用共享节点时,需要每个入网节点提供相同的 --network-name 和 --network-secret 参数,作为网络的唯一标识。
以双节点为例,节点 A 执行:
XML/HTML代码
  1. easytier-core -i 10.144.144.1 --network-name abc --network-secret abc -e tcp://easytier.public.kkrainbow.top:11010
节点 B 执行
XML/HTML代码
  1. easytier-core --ipv4 10.144.144.2 --network-name abc --network-secret abc -e tcp://easytier.public.kkrainbow.top:11010
命令执行成功后,节点 A 即可通过虚拟 IP 10.144.144.2 访问节点 B。
使用 WireGuard 客户端接入
EasyTier 可以用作 WireGuard 服务端,让任意安装了 WireGuard 客户端的设备访问 EasyTier 网络。对于目前 EasyTier 不支持的平台 (如 iOS、Android 等),可以使用这种方式接入 EasyTier 网络。
假设网络拓扑如下:
XML/HTML代码
  1. Phone安装     节点 A IP 22.1.1.1    节点 B  
  2. WireGuard ----- EasyTier ------- EasyTier----10.1.1.0/24  
  3.               10.144.144.1      10.144.144.2  
我们需要 Phone 通过节点 A 访问 EasyTier 网络,则可进行如下配置:
在节点 A 的 easytier-core 命令中,加入 --vpn-portal 参数,指定 WireGuard 服务监听的端口,以及 WireGuard 网络使用的网段。
XML/HTML代码
  1. # 以下参数的含义为: 监听 0.0.0.0:11013 端口,WireGuard 使用 10.14.14.0/24 网段
  2. sudo easytier-core --ipv4 10.144.144.1 --vpn-portal wg://0.0.0.0:11013/10.14.14.0/24
easytier-core 启动成功后,使用 easytier-cli 获取 WireGuard Client 的配置。
XML/HTML代码
  1. $> easytier-cli vpn-portal  
  2. portal_name: wireguard  
  3.   
  4. ############### client_config_start ###############  
  5.   
  6. [Interface]  
  7. PrivateKey = 9VDvlaIC9XHUvRuE06hD2CEDrtGF+0lDthgr9SZfIho=  
  8. Address = 10.14.14.0/32 # should assign an ip from this cidr manually  
  9.   
  10. [Peer]  
  11. PublicKey = zhrZQg4QdPZs8CajT3r4fmzcNsWpBL9ImQCUsnlXyGM=  
  12. AllowedIPs = 10.144.144.0/24,10.14.14.0/24  
  13. Endpoint = 0.0.0.0:11013 # should be the public ip(or domain) of the vpn server  
  14. PersistentKeepalive = 25  
  15.   
  16. ############### client_config_end ###############  
  17.   
  18. connected_clients:  
  19. []  
使用 Client Config 前,需要将 Interface Address 和 Peer Endpoint 分别修改为客户端的 IP 和 EasyTier 节点的 IP。将配置文件导入 WireGuard 客户端,即可访问 EasyTier 网络。
自建公共中转服务器
每个节点都可作为其他用户网络的中转节点。不带任何参数直接启动 EasyTier 即可。
其他配置
可使用 easytier-core --help 查看全部配置项
经验总结:
注意:软件依靠tun虚拟网卡才可以实现组网功能,无tun虚拟网卡只能实现端口转发,全功能必须开启tun,以下为linux系统开启命令。
XML/HTML代码
  1. # 启用tun功能  
  2. modprobe tun  
  3. echo "tun" >>/etc/modules  
  4.   
  5. # 检查内核是否支持tun/tap  
  6. modinfo tun  
  7. # 检查是否生效  
  8. lsmod | grep tun  
1、Openwrt安装可以fork项目到自己账号,使用Actions云编译ipk直接上传到Openwrt安装,然后在 VPN--EasyTier--上传程序 上传从网站下载的对应版本的压缩包,程序会自动安装,然后在配置界面配置好就可以使用。
2、Linux一键安装命令仅支持 Debian/Ubuntu Redhat/Centos 系统。
3、组网可以使用官方提供的服务器,如果有公网IP可以自建服务器,速度会更快。
4、多网段互通,比如一个局域网中有 192.168.0.0/24 和 10.10.10.0/24 两个网段,都需要可以访问,可以使用 -n 参数 有几个网段添加几个 -n 即可。
5、Linux版本自动安装脚本的使用技巧,通过修改 /opt/easytier/run.sh 在 /opt/easytier/easytier-core 后面添加启动参数,就可以实现自定义启动程序。
6、Docker使用官方教程无法正常启动,因为没有加载默认的tun虚拟网卡。如果需要容器启动,除了需要宿主机开启tun虚拟网卡,还需要修改 docker-compose.yml 文件,添加 tun 虚拟网卡。
网络部分修改如下:
XML/HTML代码
  1. network_mode: host  
  2. cap_add:  
  3. - NET_ADMIN  
  4. devices:  
  5. - /dev/net/tun  
简单的完整文件:
XML/HTML代码
  1. version: "3.8"  
  2. services:  
  3.    easytier:  
  4.          restart: always  
  5.          privileged: true  
  6.          mem_limit: 0m  
  7.          container_name: easytier  
  8.          hostname: easytier  
  9.          network_mode: host  
  10.          cap_add:  
  11.                 - NET_ADMIN  
  12.          devices:  
  13.                 - /dev/net/tun   
  14.          volumes:  
  15.                - /etc/easytier:/root  
  16.          environment:  
  17.                - TZ=Asia/Shanghai  
  18.          image: easytier/easytier:latest  
  19.          command: -i 10.11.12.169 --network-name mynet --network-secret mypass -e tcp://easytier.public.kkrainbow.top:11010  
附送一个最小的docker镜像的docker-compose文件,拿busybox镜像挂载一下放两个二进制文件的目录到/usr/local/bin,然后再使用docker启动应用就行了。
XML/HTML代码
  1. services:  
  2.   easytier:  
  3.     hostname: easytier  
  4.     restart: always  
  5.     image: busybox:latest  
  6.     network_mode: host  
  7.     cap_add:  
  8.     - NET_ADMIN  
  9.     devices:  
  10.     - /dev/net/tun  
  11.     volumes:  
  12.     - ./bind/app:/usr/local/bin  #这里的宿主机上的./bind/app目录放两个可执行文件,在release页面下载解压就行,!!注意bind用的相对路径。  
  13.     command: ["easytier-core","--ipv4","10.103.0.1","--network-name","自定义名字","--network-secret","密码"]  
  14.     logging:  
  15.       options:  
  16.         max-size: 200k  
再简化下一键命令:
XML/HTML代码
  1. docker run --net host --restart always --privileged --name easytier -h easytier --cap-add NET_ADMIN --device /dev/net/tun -v /opt/easytier:/root -e TZ=Asia/Shanghai -m 0m easytier/easytier:latest -i 10.11.12.169 --network-name mynet --network-secret mypass -e tcp://easytier.public.kkrainbow.top:11010
也可以在爱快的Docker上,通过前面讲过的破解爱快Docker,用s6容器使用上面命令创建容器,无需端口映射直接可以使用,使用Portainer修改参数。
7、easytier-core 命令不加参数既可以作为公共服务器,任何客户端都可以链接,每个客户端使用网络名称和密码不一样就可以组件自己的独立网络,服务器看不到客户端情况,只要节点参数一致就可以,安全可靠。
8、win系统如果使用命令启动出错,提示tun网卡权限,可以终端切换到管理员权限运行即可。
内网穿透是无公网IP的设备可以外网访问,主要是通过中转映射端口 ,如 frp nps 或者ssh的隧道转发,通过中转服务器,实现端口的转发,客户可以无需客户端直接访问。
内网组网则是通过程序将几个网络组建成一个局域网,必须客户端,但是可以实现局域网一样的任意IP和任意端口的访问,一般通过tun虚拟网卡实现。
EasyTier优点:全平台,可以不依赖服务器,自己建立服务器,不受制于人,任何人都可以自建服务器,配置简单。
内网穿透类似端口映射,用于个别服务的发布,内网组网相当于在这个服务器的局域网,内网访问,这就是本质区别。
类似项目:
ZeroTier: 一个全球虚拟网络,用于连接设备。
TailScale: 一个旨在简化网络配置的 VPN 解决方案。
vpncloud: 一个 P2P Mesh VPN
Candy: 可靠、低延迟、抗审查的虚拟专用网络
其他镜像:lmq8267
注:无 TUN 模式 (免 Root 权限)
由于创建 TUN 设备需要 ROOT 权限,对于一些无法获取 Root 权限的环境,EasyTier 也提供了不依赖 TUN 的使用方法。只需在启动 EasyTier 时,增加 --no-tun 参数即可。使用无 TUN 模式组网时,节点可以通过虚拟 IP 被访问(TCP、UDP 和 ICMP 都支持),也可以做子网代理(使用 -n 参数)。但是无法主动发起对其他节点的访问。为了在无 TUN 模式下主动访问其他节点,可使用 EasyTier 的 SOCKS5 服务器功能。
爱快路由Docker最新版本限制tun,需要使用时候需要再启动命令输入如下参数
XML/HTML代码
  1. -d --hostname IK --network-name mynet --network-secret mypass --no-tun -e tcp://public.easytier.top:11010 -n 192.168.0.0/24 -n 192.168.11.0/24
和手动启动命令差不多,自己根据实际情况按照格式修改即可。
更新
EasyTier 官网 (含教程文档)
Gihub 最新 Release
一袋丶小苏打大佬维护的GUI游戏简化版本(Win)
ASTRAL_Kevin大佬维护的游戏特化版本(Win/Android)
EasyTier relay大佬维护的GUI版本(Win)
我是小哥哥维护的一键脚本(Linux)
EasyTier 配置管理脚本
这是一个用于管理 EasyTier 配置的 Shell 脚本集合。
EasyTier 是一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。
去中心化:无需依赖中心化服务,节点平等且独立。
安全:支持利用 WireGuard 加密通信,也支持 AES-GCM 加密保护中转流量。
高性能:全链路零拷贝,性能与主流组网软件相当。
跨平台:支持 MacOS/Linux/Windows/FreeBSD/Android,未来将支持 IOS。可执行文件静态链接,部署简单。
无公网 IP 组网:支持利用共享的公网节点组网,可参考 配置指南
NAT 穿透:支持基于 UDP 的 NAT 穿透,即使在复杂的网络环境下也能建立稳定的连接。
子网代理(点对网):节点可以将可访问的网段作为代理暴露给 VPN 子网,允许其他节点通过该节点访问这些子网。
智能路由:根据流量智能选择链路,减少延迟,提高吞吐量。
TCP 支持:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。
高可用性:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。
IPV6 支持:支持利用 IPV6 组网。
系统要求
支持的系统:Linux (需要 systemd)
支持的架构:x86_64, aarch64, armv7, arm, mips, mipsel
需要 root 权限运行
指定安装EasyTier 2.0.3版本,如果使用新版本,请自行替换easytier-core,easytier-cli文件
安装方法
使用以下任一命令安装:
XML/HTML代码
  1. jsdelivr CDN 镜像源
  2. bash <(curl -sL https://gcore.jsdelivr.net/gh/CGG888/EasyTier/script/easytier.sh)
  3. bash <(curl -sL https://fastly.jsdelivr.net/gh/CGG888/EasyTier/script/easytier.sh)
  4. bash <(curl -sL https://testingcf.jsdelivr.net/gh/CGG888/EasyTier/script/easytier.sh)
  5. bash <(curl -sL https://quantil.jsdelivr.net/gh/CGG888/EasyTier/script/easytier.sh)
  6. 使用国内镜像加速
  7. bash <(curl -sL https://gh.ddlc.top/https://raw.githubusercontent.com/CGG888/EasyTier/main/script/easytier.sh)
  8. Github地址:
  9. bash <(curl -sL https://raw.githubusercontent.com/CGG888/EasyTier/main/script/easytier.sh)
功能特性
创建和管理 EasyTier 配置
支持服务器模式、客户端模式和公共服务器模式
自动生成和管理 systemd 服务文件
配置文件备份和恢复
WireGuard 配置生成和管理
支持配置二维码生成(PNG格式和终端显示)
配置模式
服务器模式
创建私有网络节点服务器
适合拥有公网IP的服务器
支持 WireGuard 配置生成
客户端模式
连接到现有网络节点
支持连接私有服务器或社区公共节点
支持 WireGuard 客户端配置
公共服务器模式
加入公共服务器节点集群
适合具有稳定公网IP的服务器
WireGuard 支持
自动生成 WireGuard 配置文件
配置文件保存在 /opt/easytier/wireguard/ 目录
支持生成二维码(需要安装 qrencode)
PNG 格式二维码保存在 /opt/easytier/wireguard/ 目录
支持在终端直接显示二维码
配置文件命名格式:{config_name}_wg.conf
二维码文件命名格式:{config_name}_wg.png
使用说明
配置管理 bash ./easytier.sh   
创建新配置
选择配置模式(服务器/客户端/公共服务器)
按照提示输入必要信息
配置文件将自动生成并保存
WireGuard 配置
在创建配置时选择启用 WireGuard
配置文件和二维码将自动生成
可以通过手机扫描二维码快速导入配置
文件位置
主程序目录:/opt/easytier/
配置文件:/opt/easytier/config/
WireGuard配置:/opt/easytier/wireguard/
服务文件:/etc/systemd/system/easytier@*.service
备份文件:$HOME/.easytier_backup/
依赖
systemd
curl
qrencode (用于生成 WireGuard 配置二维码)
注意事项
请确保系统已安装所需依赖
WireGuard 配置生成需要安装 qrencode

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):