AI 文章摘要
这篇文章介绍了免费组网软件EasyTier的使用方法。作者分享了如何使用EasyTier在阿里云服务器上进行内网穿透,并详细介绍了如何在群晖Docker中部署EasyTier,包括创建项目、配置文件、错误处理等步骤。此外,文章还提供了Windows和MacOS客户端的安装方法,以及如何通过官网进行高级配置。...
在阿里云斥资68(好朋友买的)租了一年这台200Mbps的服务器,用于Frp的内网穿透,效果的确是杠杠的,但是一年后,恢复四百多的原价,说实话一个社会底层无编制的普通打工人根本无法支撑起这么高昂的服务器费用,这时候就需要准备到时候找到这台穿透服务器的替代方法了。
或许可以用一些免费的组网,但是用了200Mbps的服务器,就会发现免费小水管的组网根本不想用,就像体验了荣华富贵后再回到小乡村里就回不去了,那么就要找到一个免费、高带宽、无限制的组网。在网上冲浪冲出来这个软件,也就是这篇文章的主角:EasyTier。
先展示一下效果:
上面这台是我公司里的电脑,公司里安全做得很好,不允许其他远程软件,只能用VPN拨上去,用之前打开的ADR拨上去,运行EasyTier,连上在家里的NAS上创建的网络,即可使用p2p播放emby上的视频了。可以看到播放4K HDR 5~7Mbps的视频无压力。
下面就来介绍如何使用该软件。
软件地址,开源github:EasyTier/EasyTier: A simple, decentralized mesh VPN with WireGuard support.
中文介绍:EasyTier/README_CN.md at main · EasyTier/EasyTier
群晖Docker部署
创建项目
其他系统的Docker同理,因为我觉得群晖好用用得多所以这里介绍这一款
原文链接:安装 (命令行程序) | EasyTier – 简单、安全、去中心化的异地组网方案
Container Manager中新增一个项目
创建 /volume<n>/docker/easytier/root
文件夹,并填写 docker-compose.yml
内容,记得用户名和密码DIY高一点,避免和别人冲突和别人组在一起:
services:
watchtower: # 用于自动更新easytier镜像,若不需要请删除这部分
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_NO_STARTUP_MESSAGE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600 --cleanup --label-enable
easytier:
image: easytier/easytier:latest # 国内用户可以使用 m.daocloud.io/docker.io/easytier/easytier:latest
hostname: easytier
container_name: easytier
labels:
com.centurylinklabs.watchtower.enable: 'true'
restart: unless-stopped
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TZ=Asia/Shanghai
devices:
- /dev/net/tun:/dev/net/tun
volumes:
# - /etc/easytier:/root
- ./root:/root # docker的root放在文件夹内更好
- /etc/machine-id:/etc/machine-id:ro # 映射宿主机机器码
command: -d --network-name <用户> --network-secret <密码> -p tcp://public.easytier.cn:11010
这里用的是 public.easytier.cn
域名,而后面客户端默认是 public.easytier.top
,注意要一致性,如果喜欢 cn
就都用 cn
。
这里没有用到官网用户名,如果需要用到官网用户,我会在后面讲解。
错误处理
注意,如果没有开启tun的群晖直接构建该项目,会报错:
Error response from daemon: error gathering device information while adding custom device "/dev/net/tun": no such
这个错误提示表明 Docker 容器在尝试访问 /dev/net/tun
设备时失败了,因为宿主机上不存在这个设备文件。
错误原因解释:
/dev/net/tun
是 Linux 系统中用于创建虚拟网络隧道(TUN/TAP 设备)的特殊设备文件。它主要用于实现 VPN、隧道连接、虚拟网络等功能,允许应用程序在用户空间创建和管理网络数据包。
在配置中,easytier 容器需要使用 TUN 设备来建立虚拟网络连接,所以配置了 devices: - /dev/net/tun:/dev/net/tun
来映射这个设备到容器中。
解决方法:
检查宿主机是否支持 TUN 设备:
连接群晖的 SSH
,运行以下命令确认 TUN
模块是否加载:
lsmod | grep tun
一般会列出:
tunnel4 2453 1 sit
ip6_udp_tunnel 1967 1 vxlan
udp_tunnel 2419 1 vxlan
ip_tunnel 12462 1 sit
从执行的输出结果来看,目前系统中并没有加载 tun
模块,显示的是其他与隧道相关的模块(如 tunnel4
、udp_tunnel
等),这些和 tun
模块不是一回事。
手动加载 tun
模块
执行以下命令尝试加载 tun
模块:
sudo modprobe tun
但是每次开机都执行该命令去加载 tun 模块不现实
那么就在设置的计划任务中加入该命令脚本 Import TUN mod ,记得用户账号改为 root :
#!/bin/sh
modprobe tun # 不需要 sudo,因为脚本本身以 root 运行
这样一来,开机后就会执行命令加载 tun
模块。
这样构建项目后,就完成了服务器的配置。
客户端配置
我们可以在这里找到对应系统的图形界面安装包:安装 (图形界面) | EasyTier – 简单、安全、去中心化的异地组网方案或下载 | EasyTier – 简单、安全、去中心化的异地组网方案
这里先用Windows为例:
确认框中内容和docker的yml一样,点击运行网络
这样就能和群晖nas组在一起了。
MacOS可以用dmg安装包,也可以用brew:
brew tap brewforge/chinese
brew install --cask easytier-gui
使用方法同理。
安装服务端
如果你要用手头的VPS自建节点,服务器中输入以下命令:
wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" && sudo bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/
easytier-core
# 如果对共享节点要进行更多配置,请至官网查看
# 可配置关闭转发、私有模式等
网络方式中安需求填写类似 tcp://公网IP:11010
之类即可,也可填写为其配置的域名。
官网可视化自定义配置(高阶)
进入官网EasyTier – 简单、安全、去中心化的异地组网方案,点击右上角的 Web 控制台 注册登录。
记住用户名,将yml改为:
services:
watchtower: # 用于自动更新easytier镜像,若不需要请删除这部分
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- WATCHTOWER_NO_STARTUP_MESSAGE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 3600 --cleanup --label-enable
easytier:
image: easytier/easytier:latest # 国内用户可以使用 m.daocloud.io/docker.io/easytier/easytier:latest
hostname: easytier
container_name: easytier
labels:
com.centurylinklabs.watchtower.enable: 'true'
restart: unless-stopped
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TZ=Asia/Shanghai
devices:
- /dev/net/tun:/dev/net/tun
volumes:
# - /etc/easytier:/root
- ./root:/root # docker的root放在文件夹内更好
- /etc/machine-id:/etc/machine-id:ro # 映射宿主机机器码
command: -w <用户名>
构建后,会在web控制台中看到设备,点击设备的设置齿轮图标,创建一条网络,和图形客户端一致:
这样创建网络并组网就完成了,可以随时随地在网页上修改、添加多条组网线。
也不是一直很好用,路由为p2p的时候好用,relay(2)就很拉。