ZeroTier异地组网

Interstellar
Interstellar
发布于 2024-07-30 / 28 阅读
1
0

ZeroTier异地组网

https://my.zerotier.com
教程: 内网穿透工具ZeroTier,从简单到复杂的玩法,无保留,一期全放送_哔哩哔哩_bilibili

修改路由表

局域网指向旁路由设备 A
局域网未指向旁路由设备 B
外网设备C
https://my.zerotier.com/network

路由表 A : ZerpTier``192.168.191.0/24
路由表 B : 局域网 192.168.11.0/24

软路由安装了 ZerpTier 后,软路由就有了 ZerpTier 网络的路由表

  1. 局域网指向旁路由设备 A 可以访问外网设备 C
    192.168.191.0/24, 指向旁路由的设备 A 就知道如何访问其他 ZerpTier 的外网设备 C 外网设备 C

  2. 外网设备C 不能访问 局域网指向旁路由设备 A

外网设备 C,虽然有 ZerpTier 网络的路由表,但是只能访问到旁路由 192.168.191.39, 不能访问 局域网指向旁路由设备 A

  • 解决

因此需要在 ZeroTier 手动添加路由表, 指向旁路由在 ZeroTier 的 IP 地址

相当于给外网设备添加 路由表 B

  1. 局域网未指向旁路由设备 B 不能访问 外网设备C

同理,在主路由添加路由信息,将 192.168.191.0/24 的连接指向旁路由,让旁路由利用自身路由表路由

全隧道模式

让外网设备通过家里的软路由访问网络,不走自身网络,家里的会再连接

相当于让一个设备的全部网络走家里,缺点: 无法p2p时速度非常慢


0.0.0.0/0
相当于 外网设备C 都根据这个路由表,将流量转发到 软路由

然后打开覆盖默认路由的选项
Allow Default Router Override

Linux 安装 ZeroTier 和节点控制器

ZeroTier

端口开放 UDP 9993TCP 9993
节点控制器 TCP 3443

此外,卸载命令:

dpkg -P zerotier-one
rm -rf /var/lib/zerotier-one/

节点 506f2eff25

title:ZeroTier

一键安装命令:  
curl -s https://install.zerotier.com | sudo bash

卸载:dpkg -P zerotier-one
rm -rf /var/lib/zerotier-one/

启动并开启自启

systemctl start zerotier-one.service  
systemctl enable zerotier-one.service

进入安装目录
cd /var/lib/zerotier-one/

生成节点配置
zerotier-idtool initmoon identity.public> moon.json

修改moon.json
   "stableEndpoints": []改为
   "stableEndpoints": ["47.xx.xx.10/9993"]

生成签名
zerotier-idtool genmoon moon.json

创建目录
mkdir moons.d

将生成的签名移动到创建的目录
mv 00000050c0acc251.moon moons.d/

重启服务
systemctl restart zerotier-one

----加入---

加入moon服务器,使用安装生成的节点

加入moon

然后在 openwrt 中添加
zerotier-cli orbit
zerotier-cli orbit xxxx xxxx
然后重启
linux : systemctl restart zerotier-one
openwrt : service zerotier restart

自建节点控制器

自建的 Moon 服务器,会根据已连接的设备,自动选择走 moon 还是官方 planet 还是 p2p, 但如果官方 planet 无法访问,就用不了 节点网络控制器,因此需要自建 节点网络控制器 来授权节点间的访问

docker run -d --name ztncui -p 3000:3000 -e HTTP_ALL_INTERFACES=yes -e HTTP_PORT=3000 -e ZTNCUI_PASSWD=password keynetworks/ztncui

报错 version `GLIBCXX_3.4.20’ not found 解决方法 - 简书 (jianshu.com)


然后 easy setup

然后让节点控制器,自己加入自己,这样可以避免公网端口访问

zerotier-cli join xxxxx

命令

systemctl restart zerotier-one

netstat -tulnp
sudo systemctl status ztncui
zerotier-cli listpeers


linux : systemctl restart zerotier-one
openwrt :  service zerotier restart

zerotier-cli info -j 

查看 tcpFallbackActive 是否为 true ,如是,则说明当前走的是最慢的 relay 模式,必然不是直连

zerotier-cli peers 
查看相应 LEAF 的 path 栏是否有 ip 地址,如果没有,表示是 relay,也不是直连
实测。通过 ping 查看延时,传输大文件查看速率,如果延时较低、传输速度接近上下行带宽,基本可以确定就是直连了

linux : `systemctl restart zerotier-one`
openwrt :  `service zerotier restart`

测试

1440P

电脑使用软件, 不连接软路由,手机流量连接不上,手机 wifi 连接最后 P2P, 快

(户外手机连接电脑,电脑使用软路由)电脑使用软件, 连接软路由,手机流量连接电脑 zerotier IP , 手机流量可以连接上,慢,延迟 400, 手机 wifi 连接不上

(户外手机连接软路由,软路由连接电脑)电脑不使用软件, 连接软路由,手机流量连接局域网电脑 IP, 会根据路由表转到软路由 zerotier IP ,可以连接上 ,超级慢 ,同 wifi 下,还是局域网电脑 IP, 无意义

自己搭建的 moon 连接非常快,但是测试时不时卡顿,wifi 可以 P2P, 非常流畅,但是手机流量无法p2p

此外因为zerotier本身是代理软件,手机使用 zerotier 后无法使用clash


评论