- 下载
- sudo curl -s https://install.zerotier.com | sudo bash (需要科学上网)
- 所有涉及硬件的操作好像都需要 root 权限,curl 在这里需要连接网络,所以也需要 sudo
- sudo zerotier-cli status
- 若返回
200 info
及设备 ID,表示安装成功
- 若返回
- sudo zerotier-cli join [NETWORK_ID]
- 成功则回复 200
- 启动 and 自启动
- sudo systemctl start zerotier-one # 启动服务
- sudo systemctl enable zerotier-one # 设置开机自启
sudo zerotier-cli listnetworks
,查看是否获取到内网 IP- 能查到说明那很好了,查不到的话,恭喜可以看 debug 篇了
- sudo curl -s https://install.zerotier.com | sudo bash (需要科学上网)
- debug 篇(广和通板子也有点逆天,第一次碰见 tun 出问题的 )
- 查看日志:journalctl -u zerotier-one --since “1 hour ago” (or “5 minutes ago”)
- 日志显示
could not open TUN/TAP device: Permission denied
- 日志显示
- 列出所在的 ZeroTier Network:sudo zerotier-cli listnetworks
- 正常情况下会有输出一个网络 ![[Pasted image 20250330120150.png]]
- 因内核模块缺失和
/dev/net/tun
权限不足,导致 ZeroTier 无法创建虚拟接口- ls -l /dev/net/tun # 正常权限应为 crw-rw-rw- 或 crw-rw-r----
- 修复权限:
- sudo chmod 666 /dev/net/tun # 临时放宽权限
- 永久解决权限:
- echo ‘KERNEL == “tun”, MODE=“0666”’ | sudo tee /etc/udev/rules.d/90-tun.rules
- sudo udevadm control --reload
- 若用户非 root,需赋予其访问 TUN 设备的权限
- 提示没有 tun 组
- 创建 tun 组
- sudo groupadd tun # 创建名为 “tun” 的用户组
- 验证是否成功
- grep tun /etc/group # 输出应包含 “tun❌GID”
- 把用户加入 tun 组
- sudo usermod -aG tun <用户名> # 例如:sudo usermod -aG tun zerotier-one
- 确保
/dev/net/tun
设备允许tun
组访问:(暂时)- sudo chmod 660 /dev/net/tun # 设置权限为 rw-rw----
- sudo chown root:tun /dev/net/tun # 设置所有者为 root,组为 tun
- 永久方案
- echo ‘KERNEL == “tun”, MODE=“0660”, GROUP=“tun”’ | sudo tee /etc/udev/rules.d/90-tun.rules
- sudo udevadm control --reload # 重载规则
- 创建 tun 组
- 检查有无这个文件夹
- ls /dev/net/tun # 若不存在则手动创建
- 手动创建设备节点(觉得是本次问题的关键)
- sudo mkdir -p /dev/net
- sudo mknod /dev/net/tun c 10 200 # 主设备号 10,次设备号 200
- 配置权限(永久)
- echo ‘KERNEL== “tun”, MODE=“0666”’ | sudo tee /etc/udev/rules.d/90-tun.rules
- sudo udevadm control --reload
- 重启
- sudo systemctl restart zerotier-one # 重启 ZeroTier 或其他依赖 TUN 的服务
- 检查虚拟网卡
- ip link show | grep zt # 应显示类似 ztb2e4e0333 的接口
- 放行 9993
- sudo ufw allow 9993/udp # Ubuntu/Debian
- 检查 网络管理员 有无同意申请
- zerotier-cli listnetworks
- 提示没有 tun 组
- 查看日志:journalctl -u zerotier-one --since “1 hour ago” (or “5 minutes ago”)