星期六, 十月 31, 2026

197 服务器 家用路由器 使用 mihomo 内置的 zerotier 组网, 路由器下的局域网设备不需要安装 zerotier one 软件

局限性: Mihomo ZeroTier 是一个出站代理, 实现了组网, 但这是单向组网, "出" 的这台设备或者局域网下的这些设备, 能控制别人, 但别人控制不了它. 能接受了再往下看. 

 

1, 家用路由器使用 mihomo zerotier 出站. 

Mihomo 已支持 zerotier 出站, 在路由器上使用 1.19.30 及以上版本就能用. 核心代码如下: 

proxies: 
  - name: zt
   type: zerotier
   network: "Network ID"
   identity-secret: "设备ID:0:公钥:私钥"
   remote-dns-resolve: true
   udp: true
   dialer-proxy: Tunnels

rules: 
  - IP-CIDR,192.168.2.0/24,zt
  - IP-CIDR6,fddd::/120,zt

说明: 

network: 网页控制面板 https://central.zerotier.com/ 里的 Network ID

identity-secret: 首次可以不填, 让它自己注册, 观察日志, 搜索 zerotier 可以看到它注册, 注册完在工作目录下就会出现 zerotier/identity.secret 文件, 把里面的密钥粘贴到这里. 这个选项不是一定要填, 就算不填, 它也会把注册信息保存到 工作目录/zerotier 下, 重启内核也不会丢


remote-dns-resolve: dns 交给远端解析, 感觉用不上, 我组网的设备都是 IP, 没用私有域名


dialer-proxy: zerotier 连接所产生的流量由此节点或选择器兜底, 也就是说代理流量里面包含着 ZeroTier 私网, 我简单理解为, 一个私网外面又套了一层保护


rules: 确保在 zerotier 网页控制面板里面 settings - IPv4 Assignment 以及 settings - IPv6 Assignment 这里分配的地址或 IP 段, 写进 rules, 写这个是因为, 这里 zerotier 只是被当作一个节点, 用的时候连接, 不用的时候断开, 而不是一个网卡, 所以要让 Mihomo 知道哪些段要进入 zerotier 的私网, 也就是说, rules 和网页里面分配的段要保持一致. 此外, 一定要确保这几个保留地址段, 没有被防火墙绕过 Mihomo 内核, 即, rules 里写的这些 ZeroTier 私网地址段, 必须要经过 Mihomo 内核, 如果你在路由器上用的是 nikki 插件, 确保将 rules 里这两个段在 代理配置 - 杂项 里面删掉, 如果是老版本 nikki, 可以直接修改配置文件, 位于 /etc/nikki/nftables 再重启一次 nikki. 

2, Linux VPS 上使用 ZeroTier. 这里用的就是官方的安装方式了, 简单几个步骤. 

curl -s https://install.zerotier.com | sudo bash
zerotier-cli join 网络ID
zerotier-cli listnetworks
ifconfig

第二步 join 之后, 要在  ZeroTier 管理面板里里面授权, 并分配给它固定 IP. 

在看到 ifconfig 里面出现 zt 开头的随机网卡名, IP 已经固定, 就说明私网组好了, 可以在家庭局域网里面直接连接私网设备了, 比如 192.168.2.2, 不用在局域网设备上安装那比 qt 还要卡顿的破软件… 

3, 更改 zerotier 在 VPS 上开放给公网的 9993 端口. 

打开 /var/lib/zerotier-one/local.conf 文件, 如果没有内容, 可以直接使用命令写入: 

echo '{"settings":{"primaryPort":9994}}' | sudo tee /var/lib/zerotier-one/local.conf >/dev/null && sudo systemctl restart zerotier-one

 

 

0 条评论: