去中心化内网穿透工具Easytier
本渣自从开始玩NAS以来,就一直关注怎样用便宜和快速的解决内网穿透的问题。
- 公网IPv6,不一定会有
- 公网IPv4,更加不敢奢求
- 各种收费内网工具cpolar、passnat、樱花frp感觉有点贵,免费的又不够用
- frp必须要有个中转,便宜的有公网IP的云服务器不是小水管就是限流量
- zerotier、tailscale的服务器都在国外,连上PVN的P2P的成功率越来越低,也难用。
- 今天测试的听说是国人开源的Easytier,好像是基于WireGuard改进而来。主要是更加简单,作者在国内也假设了免费的服务器,还有一些大佬无偿贡献了免费中转服务器。
前言
工作原理
- 电脑、服务器、手机作为客户端,首次连入Easytier是需要一个服务端(中转服务器)来做认证、接通P2P的VPN。【红色虚线】
- 如果P2P的VPN一直接不通,流量就只能通过服务端(中转服务器)来中转了。【红色虚线】
- 如果P2P的VPN接通了,就直接走两台客户端之间的流量。【蓝色实线】
问题
开发Easytier的大神自建的服务端(中转服务器)肯定满足不了日常使用,因为链接的人越多,肯定越慢。
这样就需要搭建自己的服务端(中转服务器),或者使用其他大佬无偿提供的服务端(中转服务器)。
搭建自己的中转服务器
本渣环境:
- 腾讯云2C2G,3M,200G流量/月,必须要有公网IP
- CentOS Stream 9
- 安装了1Panel作为Docker管理工具
- 还运行这自己的技术博客,就是现在大家在浏览文章的这个hexo博客。
最终形成这样的拓扑架构
搭建服务端
(1)用1Panel来拉取(下载)easytier镜像
镜像名:easytier/easytier:latest
官方参考地址:https://easytier.cn/guide/installation.html
当然你也可以用传统的Docker命令来拉镜像,不过Docker Hub可能连不上,问题不少的。我个人是习惯了用1Panel来管理。
(2)在1Panel通过Docker Compose来启动镜像
填写好1Panel的【编排】,Docker应该就会自动启动的。
1 | version: '3.8' |
如最后一句可以是:
1 | command: -i 10.114.114.114 --hostname MyEasytierServer --network-name MyVPNName --network-secret MyVPNPassword -p tcp://110.110.110.110:11010 |
-i
:VPN中的内网地址--hostname
:节点名字(中转服务器名字),没有的话就默认是easytier--network-name
:在组建虚拟局域网的名字,要复杂个性一点,网上已经有人用了就会冲突连不上。其他节点千万不要写错。--network-secret
:在组建虚拟局域网的密码,要复杂一点,被人猜到,就会白嫖你的公网云主机流量。其他节点千万不要写错。-p
:搭建中转服务器的IP,即云主机的公网IP。如果填写的不是云主机的公网IP,就需要填作者或其他大神公开的中转服务器IP,连通性会差很多的。
配置好Docker Compose【编排】,1Panel会启动两个Docker镜像。easytier
和watchtower
,第二个可以停掉的,是用来保持Docker镜像是最新版。也可以通过删除Docker Compose【编排】中watchtower:
这一段来不使用。
配置客户端
(1)配置Windows客户端
下载地址:https://easytier.cn/guide/download.html
Windows的安装非常简单的,这里就不说明的。全部下一步。
- 配置Windows客户端的方法如图:
- 连上了就会这样子,显示
P2P
就是点对点的联网成功了,这时候就会走两台电脑之间的WIFI/宽带/5G流量,不会走中转服务器(腾讯云/阿里云)的公网IP流量。 - 点对点
P2P
不成功,会显示delay
,这就只能走中转服务器的流量了,会慢很多。看下图的ping值就看出来有两个数量级的延时差距。
(2)配置Linux客户端
- 配置飞牛OS的客户端(命令行)
- 下载Linux用的zip包
- 把zip包解压出来,会有三个文件。
把文件授权可以执行把文件丢到1
2# cd到你解压出来的文件夹里面
sudo chmod +x ./*/usr/bin/
现在就可以试用1
sudo mv ./easytier-* /usr/bin/
easytier-core
和easytier-cli
命令了,记得在root用户下使用。 - 启动飞牛OS的客户端譬如:Windows的虚拟局域网IP是:
1
2sudo easytier-core -i <你要创建虚拟局域网IP> --network-name <用户> --network-secret <密码> -p tcp://<服务器地址>:11010
#例子: sudo easytier-core -i 10.144.144.5 --network-name MyVPNName --network-secret MyVPNPassword -p tcp://110.110.110.110:1101010.144.144.3
,你的飞牛OS就是错开用:10.144.144.5
,你的安卓手机是10.144.144.4
、笔记本电脑是10.144.144.5
全都要把最后一位IP错开。
成功连上就会有日志返回
测试用飞牛影视播放1080P的电影原画的时候,走的是P2P,即只走了飞牛所在宽带的上传流量,没有走中转服务器的上传流量。
PS:如果关闭终端窗口,就会关闭这个easytier-core进程,需要后台保持就要创建systemctl服务
配置
systemctl
服务和自启
创建一个easytier-core.service
文件1
sudo vim /etc/systemd/system/easytier-core.service
写入这段到代码,具体需要按自己的情况修改。
1
2
3
4
5
6
7
8
9
10[Unit]
Description = EasyTier Core Service
After = network.target
[Service]
ExecStart = /usr/bin/-i 10.144.144.5 --network-name MyVPNName --network-secret MyVPNPassword -p tcp://110.110.110.110:11010
[Install]
WantedBy = multi-user.target
然后配置systemctl
自启动1
2
3
4
5
6ps aux | grep easytier # 确认是否有easytier启动着
systemctl start easytier-core # 启动服务
systemctl status easytier-core # 查看启动状态
systemctl enable easytier-core # 设置自启动
systemctl restart easytier-core # 重启服务
systemctl stop easytier-core # 停止服务Linux中的常用命令:
easytier-cli
:列出每台电脑(节点)的连通情况。easytier-node
:列出本机(节点)的详细情况。
这是我搭好的环境:
优点:
- 走P2P流量,即WIFI、家庭宽带、5G的直接流量,不需要浪费云主机(阿里云/腾讯云)的流量来做中转。
- 延迟低,基本上可以达到个位数的毫秒级。
- 速度快,这主要看WIFI、家庭宽带、5G的上传带宽为限。平时不要用太狠,会被运营商封禁的
缺点:
- 稳定性差,以为P2P不是绝对能连上的。如果走云主机中转,会比frp还要慢。主流的内网穿透都是走frp模式的。平时可以试用easytier来降低中转流量,用frp来兜底。