内网穿透其实 frp 做端口映射也挺好用,但是要一个一个端口映射,有点麻烦
Zerotier实际上是一个 VPN,解决了我家里就算做 DDNS 获取到公网 IP 也开不了端口的痛点
但是在 iOS 上会占用 VPN, 与 Surge、Quantumult X、Shadowrocket 等软件冲突(木得办法)
其实可以不用自建服务端(Zerotier 有 50 台设备的限制,且有可能无法访问到官网)
Server
https://github.com/Jonnyan404/zerotier-planet.git
# 安装 Docker
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl enable docker --now
# 安装 docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 安装 zerotier-planet
git clone https://github.com/Jonnyan404/zerotier-planet.git
cd zerotier-planet
ZERO_PORT=44000 && sed -i .bak "s/4000:4000/$ZERO_PORT:4000/" docker-compose.yml # 修改默认端口
docker-compose up -d
# 防火墙放行端口
firewall-cmd --add-port=$ZERO_PORT/tcp --permanent
firewall-cmd --reload
浏览器访问 http://<ip>:<port>
, 账号admin
, 密码 mrdoc.fun
- 修改密码
- 创建虚拟网络
Client
- Linux(ubuntu/CentOS)
- openwrt
- MAC
- iOS
- Windows Android 等客户端可以参考官网设置.
一分钟自建zerotier-planet
私有部署zeroteir-planet服务 基于 ztncui 整理成 docker-compose.yml 文件.
必要条件
- 具有公网ip的服务器(需要开放4000/tcp端口,亦可自定义端口)
- 安装 docker
- 安装 docker-compose
用法
纯小白建议直接执行这个:
docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=mrdoc.fun -p 4000:4000 keynetworks/ztncui
有基础的,可二选一.
git clone https://github.com/Jonnyan404/zerotier-planet
OR
git clone https://gitee.com/Jonnyan404/zerotier-planet
cd zerotier-planet
docker-compose up -d
然后访问 http://ip:4000
访问web界面.
- 用户名:admin
- 密码:mrdoc.fun
关联云服务器(带公网IP)
后记
经实测,window/Android客户端可直接连接,无需修改任何文件.理论上其它客户端同理.
私有 zerotier-planet 的优势:
- 解除官方 50 的设备连接数限制
- 提升手机客户端连接的稳定性
Reference Link
使用ZeroTier组建虚拟局域网实现内网穿透
ZeroTier 是为了解决复杂网络以及因特网过于中心化而提出的组网解决方案。ZeroTier 可以使得在不同网络,不同物理空间的机器组件在同一个虚拟局域网中,使得他们之间可以交换数据,直接连接。
ZeroTier 使用点对点 的网络,并且在上面附加一层 VXLAN-like 虚拟网络层 来提高局域网的可见性,安全性。
所以简单来说,ZeroTier 通过创建一个虚拟网络,把你的设备添加到这个网络,那么在这个网络内,你的设备就像在同一个路由器内那样可以使用各种端口。
免费版 ZeroTier 支持局域网内 100 个设备。ZeroTier 支持 Windows、macOS、Linux 三大桌面平台,iOS、Android 两大移动平台,QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 OpenWrt/LEDE 开源路由器项目。
官网地址:
各系统安装包下载
官网下载:
Debian/Ubuntu:
curl -s https://install.zerotier.com | sudo bash
curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
sudo apt install zerotier-one
使用
- 注册 ZeroTier
- 创建 Network 私有局域网,得到一个 16 位的 Network ID
- 在需要加入虚拟局域网的设备上安装各个平台客户端,设备会生成一个 10 位的 ZeroTier address
- 在设备上加入刚刚创建的 Network ID
zerotier-cli join <network id>
(或在网页上添加 ZeroTier address) - 在官网 network 页面上找到设备,在设备前勾选,信任设备,获得局域网 IP
Windows 系统用命令 ipconfig
,Linux/Unix 用命令 ifconfig
,然后会看到一个虚拟网卡,有一个 IP 地址。这个 IP 和在官网看到的 network 下的 IP 是一致的,只有同在该虚拟网络下的机器才能访问。
接下来,就可以访问同一个局域网中的其他节点的任何内容,比如 FTP 服务(端口 21),比如搭建在局域网的网站(端口 80)
图文教程可以参考这篇文章
ZeroTier 的网络地址
ZeroTier 的网络地址采用 64 位格式,前 40 位(10个十六进制数字)表示网络控制器,剩下的 24 位(6 个十六进制数字)表示控制器内的网络。
建立中转服务器 moon
ZeroTier 的官方服务器在国外,国内客户端使用时延迟较大,网络高峰期时甚至各个客户端节点之间访问不了。此时,“自定义根服务器”,又称 moon 中转服务器就显得非常重要,它的主要功能是通过自定义的服务器作为跳板加速内网机器之间的互相访问。
ZeroTier 定义了几个需要知道的专业名词:
PLANET
行星服务器,ZeroTier 各地的根服务器,有日本、新加坡等地moon
卫星级服务器,用户自建的私有根服务器,起到中转加速的作用LEAF
相当于各个枝叶,就是每台连接到该网络的机器节点。
在使用 zerotier-cli listpeers
命令时能看到这几个名词。
获取 moon.json 文件
充当 moon 的机子最好有公网 IP,现在我们尝试用 QNAP 搭建一个 moon 中转:
zerotier 安装好之后会带有 zerotier-idtool
这个命令,之后的内容需要依赖该命令。假设现在有一台公网固定 IP 的 VPS,在上面安装完 ZeroTier 之后。
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json
获得 moon.json
文件。查看文件内容,其中 id
为 VPS 的 ZeroTier ID。 vi 编辑 moon.json
,修改 “stableEndpoints” 为 VPS 的公网的 IP,以 IPv4 为例:
"stableEndpoints": [ "121.121.121.121/9993" ]
121.121.121.121 为公网 IP,9993 为 ZeroTier 默认端口。
另外,记录下 json
中的 id 值,是一个 10 位的字符串。
生成签名文件
用到上一步中的 moon.json
, 执行
zerotier-idtool genmoon moon.json
执行之后生成 000000xxxx.moon
文件。
将 moon 节点加入网络
在 VPS 的 ZeroTier 安装目录下(/var/lib/zerotier-one)建立文件夹 moons.d
,将生成的 .moon
文件拷贝进去。
重启 zerotier,重启电脑。至此,VPS 上(moon 服务器)配置完成。
其他客户端机器连接 moon 节点
其他虚拟局域网中的机器想要连接到 moon 节点的话有两种方法,第一种方法就是使用 zerotier-cli orbit
命令。连接 moon 节点方法一,使用之前步骤中 moon.json
文件中的 id 值 (10 位的字符串)
分别在客户端机器里执行:
zerotier-cli orbit <world-id> <seed-id>
完成。
第二种方法是需要在 /var/lib/zerotier-one
目录下新建 moons.d
文件夹和 moon 节点一样,将 000000xxxx.moon
文件放到其中,并重启 zerotier。
测试
zerotier-cli listpeers
如果有 moon 服务器 IP 地址的那一行后面有 moon 字样,证明 moon 节点已经被本机连接。
不同系统下的 ZeroTier 目录位置:
- Windows:
C:\ProgramData\ZeroTier\One
- Macintosh:
/Library/Application\ Support/ZeroTier/One)
- Linux:
/var/lib/zerotier-one
- FreeBSD/OpenBSD:
/var/db/zerotier-one
zerotier-cli
zerotier-cli 命令的基本使用。
Usage: zerotier-cli [-switches] <command/path> [<args>]
Available switches:
-h - Display this help
-v - Show version
-j - Display full raw JSON output
-D<path> - ZeroTier home path for parameter auto-detect
-p<port> - HTTP port (default: auto)
-T<token> - Authentication token (default: auto)
Available commands:
info - Display status info
listpeers - List all peers
listnetworks - List all networks
join <network> - Join a network
leave <network> - Leave a network
set <network> <setting> - Set a network setting
listmoons - List moons (federated root sets)
orbit <world ID> <seed> - Join a moon via any member root
deorbit <world ID> - Leave a moon
延伸
frp 和 ngrok
和 ngrok 和 frp 功能类似,但是 ZeroTier 明显入手简单。ZeroTier 只有客户端开源,服务端并没有开源。而 ngrok 和 frp 都是完全开源。但是 ngrok 和 frp 严重依赖于公网固定 IP 的 VPS,是一个中心化的内网穿透工具,一旦中心节点挂掉,那么所有的节点都无法工作。ZeroTier 帮助用户实现了服务端,虽然安全性有待考验,但至少还是能用状态。
另外很多人提到的 N2N 开上去也不错,不过我还没怎么用过。等以后尝试过后再补上。
ZeroTier 和 Tailscale 的区别
ZeroTier 是私有协议,而 [[Tailscale]] 是在 [[WireGuard]] 协议基础之上。但 ZeroTier 官方提供了第三方对代码 review 的认证,安全性应该还好。
更具体的差异可以见官方说明
-----------------------
使用ZeroTier Network Controller组建虚拟局域网
过去几年里面几台设备也一直陆陆续续地在使用着,虽然中间也短暂切换成 frp,也尝试过 [[Tailscale]],但 ZeroTier 一直是候选方案中排名在前的。
ZeroTier 官方默认免费的方案可以支持最多 50 台设备的连接,我陆陆续续也用不超过 20 台。所以使用官方提供的基本服务是丝毫没有任何问题的。但就是本着折腾的态度,也是学习一下 ZeroTier network controller 相关的内容,记录一下如何自建 ZeroTier network controller。
概念介绍
ZeroTier
ZeroTier 是一个虚拟组网工具,他可以让设备和设备之间通过互联网的帮助,就像是在局域网(LAN)之间通信一样。通过 安装 ZeroTier One 客户端,并加入一个 16 位数字的 ZeroTier 网络就能实现。
ZeroTier network controller
ZeroTier 网络是通过 ZeroTier network controller 来完成配置的。用户既可以使用 ZeroTier 官方 提供的 network controller,也可以使用自己搭建的独立网络控制器(standalone network controller)。
如何设置自己独立的网络控制器就是这篇文章的重点。
ztncui
ztncui 是一个开源的 ZeroTier 网络控制中心的用户界面。
代码地址:https://github.com/key-networks/ztncui
ZeroTier 网络实现原理
ZeroTier 的网络 Controller 是一个控制节点,该节点会通过 roots (根节点)来发现彼此。可以和 DNS 根服务器类比。
ZeroTier 的 Network ID 由两部分组成:节点 ID + 其他字符。
每一个 ZeroTier 节点(Nodes)会通过 Network ID 的前10位来发现 network controller,然后通过 networking controller 来发现局域网中的其他节点。
然后每一个节点可以通过 zerotier-cli peers
来查看匹配网络中的节点。
如果 network controller 离线了,那些已经建立连接的节点会保持连线,但是无法再往网络中添加新的节点。
如何搭建独立的ZeroTier网络控制器
上文提及的 ztncui 就是一个开源的 ZeroTier 网络控制器界面,通过他可以快速搭建自己的 ZeroTier 网络控制器,这里我们使用 Docker 镜像快速搭建。如果需要手工搭建,可以直接参考官网。
本文使用的镜像是:
这里直接贴出 docker-compose.yml
文件:
version: '3.3'
services:
ztncui:
container_name: ztncui
image: keynetworks/ztncui
restart: always
volumes:
- ~/ztncui/ztncui:/opt/key-networks/ztncui/etc
- ~/ztncui/zt1:/var/lib/zerotier-one
environment:
- NODE_ENV=${NODE_ENV}
- HTTP_PORT=${HTTP_PORT}
- HTTP_ALL_INTERFACES=yes
- ZTNCUI_PASSWD=${ZTNCUI_PASSWORD}
- MYADDR=${MYADDR}
ports:
- '3443:3443'
- '3180:3180'
说明:
HTTP_PORT
:后台端口ZTNCUI_PASSWD
:后台默认密码MYADDR
: VPS 的网络地址,公网IP地址
然后在同级目录新建文件 .env
:
# more https://github.com/key-networks/ztncui-aio
NODE_ENV=production
HTTP_PORT=3443
ZTNCUI_PASSWD=
MYADDR=your.ip
后续更新会在 dockerfile。
然后使用 docker-compose up -d
启动。
启动之后可以访问 IP:3443
可以访问管理后台。
独立网络控制器的优劣
优点
自建 ZeroTier network controller 可以提升节点建立连接的稳定性,同时也解除了官网的设备连接数限制。
但 network controller 自身并不能提升节点和节点之间的连接速度。
缺点
一旦使用了自建的 ZeroTier 网络,便需要一定精力去维护 network controller 的稳定性。
并且如果 network controller 挂掉可能无法再新增加节点。不过新增节点的操作也不是高频操作,对我个人使用而言问题不大。
外延
除了 ztncui 这一个用户界面,还有一些在逐渐发展的,可以根据自己需要挑选:
- thedunston/bash_cli_zt - Command Line interface for self-hosted ZeroTier.
- dec0dOS/zero-ui - GUI for self-hosted ZeroTier.
- mdplusplus/zerotier-network-controller-ui - Docker image for self-hosted ZeroTier.
reference
[[2018-06-14-zerotier 使用 Zerotier 组建虚拟局域网实现内网穿透]] - https://docs.zerotier.com/self-hosting/network-controllers/
- https://blog.ogarcia.me/zerotier/
- ZeroTier Self-hosting ZeroTier Network Controllers 官网文档
- https://github.com/zerotier/awesome-zerotier#self-hosting
- https://github.com/key-networks/ztncui-containerized
ZeroTier 是一款全球的软件定义网络层。ZeroTier 可以用在内部网络虚拟化,作为移动端点对点 VPN,混合或者多个数据中心云部署,或者任何地方的安全软件定义网络。
ZeroTier One 是操作系统级别的客户端服务,支持 Mac,Linux,Windows,FreeBSD 和其他 ZeroTier 虚拟网络关联的一些客户端类型。ZeroTier One 可以在原生系统运行,也可以在虚拟机或者容器上运行,比如 Docker,OpenVZ 等等。
ZeroTier One 使用 C 和 C++ (C++03 / ISO/IEC 14882:2003) 编写,遵循 GPLv3 开源授权协议。
源构建:
- Mac:Xcode 命令行工具,或者是 Packages,仅支持 OSX 10.7 以上版本
- Linux:gcc/g++ 或者 clang/clang++ (Makefile 默认会使用 clang)
- FreeBSD (和其他 BSD):C++ 编译器 (通常是 G++) 和 GNU make (gmake)
运行
默认文件夹:
- Linux: /var/lib/zerotier-one
- BSD: /var/db/zerotier-one
- Mac: /Library/Application Support/ZeroTier/One
- Windows: \ProgramData\ZeroTier\One (That’s for Windows 7. The base ‘shared app data’ folder might be different on different Windows versions.)
ZeroTier 可以通过虚拟网络连接世界各地的服务器,容器,桌面,笔记本,手机,平板和嵌入式设备。
主要特性:
- 零配置
- 支持多个操作系统平台
- 隐私保护和安全:端对端加密
GitHub 地址:https://github.com/zerotier/ZeroTierOne
----------
ZTNET: 开源ZeroTier网络控制器
ZTNET – ZeroTier Controller Web UI is a robust and versatile application designed to transform the management of ZeroTier networks. Now featuring organization and multi-user support, it elevates the network management experience, accommodating team-based environments and larger organizations seamlessly.
With a rich palette of features, and an intuitive user interface, ZTNET embodies a paradigm shift in network management experience. It elegantly handles the complexity, letting you focus on what you do best.
部署ZTNET
系统Debian12,建议最低配置1C1G。另外准备一个域名做好DNS解析。
安装Docker和需要用到的软件:
apt -y update apt -y install curl wget nginx python3-certbot-nginx curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
准备目录新建compose文件:
mkdir -p /opt/ztnet && cd /opt/ztnet && nano docker-compose.yml
写入如下配置:
services: postgres: image: postgres:15.2-alpine container_name: postgres restart: unless-stopped environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: hidden POSTGRES_DB: ztnet volumes: - postgres-data:/var/lib/postgresql/data networks: - app-network zerotier: image: zyclonite/zerotier:1.14.0 hostname: zerotier container_name: zerotier restart: unless-stopped volumes: - zerotier:/var/lib/zerotier-one cap_add: - NET_ADMIN - SYS_ADMIN devices: - /dev/net/tun:/dev/net/tun networks: - app-network ports: - "9993:9993/udp" environment: - ZT_OVERRIDE_LOCAL_CONF=true - ZT_ALLOW_MANAGEMENT_FROM=172.31.255.0/29 ztnet: image: sinamics/ztnet:latest container_name: ztnet working_dir: /app volumes: - zerotier:/var/lib/zerotier-one restart: unless-stopped ports: - 127.0.0.1:3000:3000 environment: POSTGRES_HOST: postgres POSTGRES_PORT: 5432 POSTGRES_USER: postgres POSTGRES_PASSWORD: hidden POSTGRES_DB: ztnet NEXTAUTH_URL: "https://ztnet.example.com" NEXTAUTH_SECRET: "hidden" NEXTAUTH_URL_INTERNAL: "http://ztnet:3000" networks: - app-network links: - postgres depends_on: - postgres - zerotier volumes: zerotier: postgres-data: networks: app-network: driver: bridge ipam: driver: default config: - subnet: 172.31.255.0/29
需要修改的配置如下:
POSTGRES_PASSWORD: hidden NEXTAUTH_URL: "https://ztnet.example.com" NEXTAUTH_SECRET: "hidden"
其他的配置,如果你不知道是什么意思就保持原样不变就好了。现在只需up起来:
docker compose up -d
配置NGINX反向代理,新建NGINX的vhost配置文件:
nano /etc/nginx/sites-available/ztnet
写入如下配置:
server { listen 80; listen [::]:80; server_name ztnet.example.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; client_max_body_size 0; } }
启用vhost:
ln -s /etc/nginx/sites-available/ztnet /etc/nginx/sites-enabled/ztnet
签发TLS证书:
certbot --nginx --email imlala@example.com --agree-tos --no-eff-email
至此,ZTNET就部署完成了。访问ztnet.example.com第一个注册的用户将成为管理员。
配置与使用
下面由浅入深介绍下ZTNET的相关配置与使用。
创建网络并将设备加入到网络
单击如图所示按钮即可创建一个网络:
单击刚创建的网络,可以更详细的设置这个网络,例如给这个网络修改名称,添加描述,设置IP段等:
需要注意的是网络ID是固定的,这也是客户端加入此网络的唯一方式,如图所示此网络的ID是:938a87a21176f84d。
你还可以选择把这个网络设置成私有或公开,如果设置成公开,则只要知道这个网络的ID或者二维码就能直接加入这个网络而无需所有者审核。一般情况下,还是建议保持默认的私有状态。
现在我们可以把自己的设备加入到这个网络中,对应平台的客户端(ZeroTier One)下载页面:
Windows在下载安装包安装好后,右键托盘ZeroTier的图标,点击“Join New Network”,在弹出的界面输入网络ID:
Linux(DEB/RPM)操作系统可以使用一键安装脚本进行安装:
curl -s https://install.zerotier.com | bash
然后使用如下命令加入到网络:
zerotier-cli join 938a87a21176f84d
设备第一次申请加入到网络(私有),需要在ZTNET进行授权,只有授权允许的设备才能成功加入此网络:
设置退出节点(ExitNode)
首先将一台设备加入到网络,这里我选择一台境外的VPS,系统是Debian12。
使用一键安装脚本安装ZeroTier客户端:
curl -s https://install.zerotier.com | bash
然后使用如下命令加入到网络:
zerotier-cli join 938a87a21176f84d
我给这台设备设置了一个名称为:ExitNode,IP地址:10.121.15.241,如图所示:
在这台设备上启用IPv4转发,编辑sysctl.conf:
nano /etc/sysctl.conf
写入如下配置:
net.ipv4.ip_forward = 1
应用生效:
sysctl -p
使用如下命令查找机器的网络接口名:
ip a
如图所示,我这台机器的物理接口是eth0(主网卡),ZeroTier的接口是ztggnvrdrr:
现在需要配置iptables,用你机器上的物理接口和ZeroTier接口名替换掉如下配置:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i ztggnvrdrr -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o ztggnvrdrr -m state --state RELATED,ESTABLISHED -j ACCEPT
[可选]安装iptables-persistent,持久化保存iptables规则,即便机器重启也依旧生效:
apt install iptables-persistent
安装过程中会提示是否保存现有规则到/etc/iptables/rules.v4,选择允许即可。
回到ZTNET的WEBUI,添加一条路由,效果是此网络内的所有流量都经过这台ExitNode设备:
0.0.0.0/0 via 10.121.15.241
如图所示:
其他的设备(客户端)重新连接,在Windows的ZeroTier客户端启用Allow default route override选项。iOS的ZeroTier客户端启用Enable Default Route即可。
Linux客户端可以使用下面的命令进行设置:
zerotier-cli set 938a87a21176f84d allowDefault=1
配置私有PLANET服务器
当ZeroTier无法直接完成P2P连接的时候,转而就会使用ZeroTier官方的PLANET服务器进行中继连接。
一般情况下用ZeroTier官方的PLANET服务器就足够了,但如果官方服务器的延迟不理想,或者你想构建一个完全私有的网络,不依赖这些公共基础设施服务也是可以的,ZTNET原生支持配置私有PLANET,也称为:Private Root Servers。
但目前有个缺陷是iOS客户端无法使用私有的PLANET,如果你需要经常使用iOS去访问网络内的设备,就不要配置了。
首先找到ZTNET WEBUI上的控制器,点击创建行星:
一般情况下,在端点这里会自动配置好IP地址和端口,如果没有配置好,就自己把ZTNET所在机器的公网IP写上,端口是9993,其他的不用管:
创建完成后,重启ZeroTier服务:
docker restart zerotier
执行如下命令验证配置是否正常,如果回显只有你自己的PLANET服务器则说明正常:
docker exec zerotier zerotier-cli listpeers
回到ZTNET WEBUI将配置文件下载下来:
下载完成后是一个压缩包,里面有4个文件:
只需要解压planet.custom这个文件即可,解压之后将这个文件重命名为planet。
现在我们需要修改客户端使用我们私有的PLANET服务器,其实就是替换客户端的文件。对于Linux客户端而言,进入如下目录:
cd /var/lib/zerotier-one
将原始的planet文件重命名,或者说做个备份:
mv planet planet.bak
将我们自己的私有planet文件上传到机器内,使用scp、sftp都行,你怎么方便怎么来。
注意变更文件的所有者:
chown -R zerotier-one:zerotier-one planet
最后重启客户端即可:
systemctl restart zerotier-one
对于Windows客户端,进入如下目录:
%PROGRAMDATA%\ZeroTier\One\
步骤和Linux基本一样,替换掉planet文件:
打开Powershell(管理员)执行如下命令重启客户端服务:
Restart-Service "ZeroTier One"
或者在“计算机管理”界面重启服务也是可以的:
当然这样配置的PLANET服务是和ZTNET在同一台机器上面,如果ZTNET所在的机器本身延迟就很高,你还可以单独用一台设备配置PLANET,具体的看官方的这个文档:
https://ztnet.network/usage/private_root#adding-a-second-private-root-server-in-zerotier
总结
使用ZTNET可以摆脱官方对免费用户的设备数量限制,这应该是最大的优点。。
实际体验了一下,有时候连接的很慢,不知道怎么回事,要等很久。。不过一旦成功连接之后就还比较稳,不会出现经常断开重连的问题。
再就是ExitNode模式下,Windows会莫名访问不了某些网站。。iOS上完全正常,网络环境都是一致的,就很玄学= =
我还特地测试了中继,在电脑是电信,手机是联通5G的情况下,没有P2P连接成功后走官方中继,没想到延迟还挺低,只有不到50ms,可能ZeroTier在国内或周边地区有部署PLANET服务器??不明觉厉= =
当然最硬伤的还是iOS的客户端不能指定私有的PLANET,搜了一下有一个三方的实现,必须要系统越狱了才行= =
总的来说,ZeroTier很好,但我用Headscale.from https://web.archive.org/web/20240914160737/https://lala.im/9112.html
-------------------------------------------------
No comments:
Post a Comment