ZeroTier One 内外网穿透

2019/06/03 ZeroTier 阅读次数:

在众多中方法中,寻找适合自己的

传统的穿透方法

这里只举列说明,我之前搭建的FRP,ngrok,花生壳等方法,采用这种穿透的是家里的带宽外网ip或是路由器光猫没权限设置等诸多原因;如果用家里带宽用公网ip,光猫和路由器都有权限设置,就不用这么穿透,使用域名动态解析就ok。 花生壳:稳定性先不说,就是限制这块,业务流量少还可以接收,转发端口收费,2T流量能干啥. FRP:之前一直用的就是它,自己有几台阿里云服务器,搭建frp穿透家里台式机,穿个小文件,登录修改参数等基本够用 ngrok:和FRP差不多,有网友反应这长时间,有内存溢出和断开的问题,我在用FRP期间从未出现过.

ZeroTier方法

这种方法好处,本身没有网速的上限,是根据你自己的宽带网速来控制的,你自己的宽带有多快,它不敢说跑满,跑个90%还是可以的;可以说是支持所有系统,包含安卓,ios;pc端mac,linux,windows都支持 不好的是它本身的根节点都在国外,时延比较高,需要自己整一台服务器,我是的阿里云服务器,搭建自己的moon,行星根节点,进行加速,降低时延,效果很不错 最近搭建了黑群辉,家里的网速是下载能达到22M上传3M,用之前的FRP服务器只有1M带宽,文件传输太慢了,就寻寻觅觅,找到了ZeroTier,在现有的基础上满足了我的需求

1:控制端(ZeroTier 官网)功能足够强大,可以下发路由表、准入控制、IP分配、流量规则等,
2:可以建立中转服务器(Moon 服务器),从而实现更好的链接效果
3:接近于免费。个人用户最多可以接入 100 节点设备,
4:客户端开源。你完全可以自己编译

开始配置ZeroTier

注册ZeroTier账户

登录地址

点击登录
login
没有账户点击注册
login
登陆成功
login
点击右上角Networks
create
点击ID进入配置页面
desc
配置选择内网段
desc
设备加入后授权
desc
注册账号到配置就完毕了,其他参数默认就好

搭建Moon节点

需要一台能获取root权限的服务器

下载安装Zerotier
curl -s https://install.zerotier.com/ | sudo bash
给目录授权生成moon配置文件
sudo chmod 777 /var/lib/zerotier-one
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
修改moon.json文件

vi moon.json

"stableEndpoints": [ "192.168.1.1/9993" ]
#修改stableEndpoints参数,默认是[],192.168.1.1一定要是服务器的公网地址,9993是默认端口,这个端口,服务器要开放这个端口udp协议
生成签名文件
sudo zerotier-idtool genmoon moon.json

执行之后生成 000000xxxx.moon 文件。 xxxx是客户端id

moon节点加入网络

在安装目录/var/lib/zerotier-one下创建moons.d文件夹,将生成的签名文件移动到moons.d文件夹

sudo mkdir monns.d 
mv 000000xxxx.moon ./moons.d 
重启zerotier
service zerotier-one restart 

moon根节点搭建完毕,moon节点服务器,也是可以加入到zerotier网络中

zerotier-cli join network   # network就是zerotier登录后创建的网络id

客户端安装

需要下载对应系统的zerotier-one,安装后需要将moon服务器上的moons.d文件夹拷贝到客户端对应的目录下

不同系统下的 ZeroTier 目录位置:

Windows: C:\ProgramData\ZeroTier\One
Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
Linux: /var/lib/zerotier-one
FreeBSD/OpenBSD: /var/db/zerotier-one

各系统客户端下载地址

客户端下载地址

Linux: 直接在zerotier目录下,创建moons.d文件夹,并且将生成的000000xxxxxxx.moon文件拷入,并重启服务即可.如下图

Windows: 默认执行路径C:\ProgramData\ZeroTier\One\zerotier-one_x64.exe, 进入C盘是看不到这个目录,可以复制个路径直接搜, 也可以打开services.msc,找到zerotier-one服务查看他的执行程序路径,将moons.d文件夹放到C:\ProgramData\ZeroTier\One目录下 在切换至C:\Program Files (x86)\ZeroTier\One执行命令:

zerotier-cli orbit moon服务器id moon服务器id
查看moon是否生效
zerotier-cli listpeers

如下图,代表成功 moon

使用 zerotier-cli listpeers 命令时能看到这几个名词。充当 moon 的机子最好有公网 IP
PLANET :行星服务器, Zerotier 各地的根服务器,有日本、新加坡等地
Moon :卫星级服务器, 用户自建的私有根服务器,起到中转加速的作用
LEAF :相当于各个枝叶, 就是每台连接到该网络的机器节点

当你看到某一行后面带有 moon 字样,就证明 moon 已被本机标识了(本机不能看自己,所以只能上别的机器上看)。下面语句较短者表示该机器离线或者连接质量不佳; 除了我们自己的机器, 官方至少会有3台机器位于我们的 peer 列表里。语句末尾的 PLANET 在 1.1.0 版本里显示的是 ROOT,是官方的根服务器。

常用命令

systemctl restart zerotier-one    #重启zerotier
zerotier-cli info           #查看当前zerotier-one的信息
zerotier-cli listpeers          #列出所有的peers
zerotier-cli listnetworks       #列出加入的所有的网络
zerotier-cli join <network>     #加入某个网络
zerotier-cli leave <network>        #离开某个网络
zerotier-cli listmoons          #列出加入的Moon节点
zerotier-cli orbit <world ID> <seed>    #加入某个Moon节点
zerotier-cli deorbit <world ID>     #离开某个Moon节点

Search

    Table of Contents