ZeroTier_Logo.png

问题

在公网实现对家中Openwrt的访问

解决方法

使用ZeroTier进行异地组网

前提

编译的Openwrt固件中有ZeroTier插件

解决步骤

  1. 进入ZeroTier官网(ZeroTier链接)
  2. 登录或注册账号
  3. 登录后创建 Networks

    • 创建的 Network 会有一个 Network ID
    • 可以给 Network 去一个名字(Name)
  4. 返回 Openwrt Web后台设置:VPN-ZeroTier

    • ZeroTier Network ID:填入上面创建的 Network 的 Network ID
    • 勾选“自动允许客户端NAT”、“启用”
    • 保存&应用
  5. Openwrt 转到“网络-接口-添加新接口”:

    • 新接口名称:自定
    • 新接口协议:静态地址
    • 包括以下接口:选择“zt”开头的以太网适配器(ZeroTier配置好就会有一个这样的接口),注意这里的以太网适配器(zt开头)的名字记为 ZT 后面用到;
  6. Openwrt 转到“网络-防火墙-自定义规则”

    • 防火墙自定义规则中新开一行添加如下代码:

      iptables -I FORWARD -i ZT -j ACCEPT
      iptables -I FORWARD -o ZT -j ACCEPT
      iptables -t nat -I POSTROUTING -o ZT -j MASQUERADE

      以上所有“ZT”替换成 ZT 的全称,

    • 重启防火墙
  7. 转回ZeroTier中原先对应创建的 Network设置中

    • Basics

      • Access Control:Private(自用)
    • Advanced

      • IPv4 Auto-Assign:我选择Easy,下方网段最后一行选一个(如192.168.196.*
      • IPv6 Auto-Assign:我选择全不勾选
      • Multicast:默认设置(32(Limit),Enable Broadcast)
    • Members

      • 此时Openwrt已经运行 ZeroTier 并且加入该Network
      • Members列表中可以看到一个设备选项,勾选“Auth?”即代表同意加入,勾选;
      • 过一会“Managed IPs”中会出现一个IP(ZeroTier分配的局域网IP),该IP(记为A)后部设置要用到
  8. 转到ZeroTier的Advanced-Managed Routes-Add Routes设置中

    • Destination:填写Openwrt设备分配子网地址的网段(如192.168.2.0/24
    • Via:填写以上记为“A”的IP(即上面ZeroTier分配的局域网IP)
  9. Openwrt 转到 ZT 接口设置页面,转到基本设置

    • 协议:静态地址
    • IPv4地址:填写以上记为“A”的IP(即上面ZeroTier分配的局域网IP)
    • 子网掩码:255.255.255.0255.255.0.0(视你原先ZeroTier中选择局域网网段的子网掩码长度决定)
  10. Openwrt 转到 ZT 接口设置页面,转到防火墙设置

    • 创建/分配防火墙区域:选择“lan”
    • 保存&应用
  11. 至此路由配置部分结束
  12. 电脑端远程访问Openwrt

    • 在 ZeroTier 官网下载ZeroTier客户端(目前最新版本1.10.2,不知道为什么运行后Ui没法显示,改下载1.6.1版本,没有出现该问题)
    • 右键ZeroTier One托盘图标,Join Network后,填写Network ID;
    • 在ZeroTier的Network设置中,勾选新设备,同意加入网络。

资料附录

  1. ZeroTier Windows客户端历史版本
  2. 大部分资料来源:https://www.youtube.com/watch?v=OzKBXBwBrUQ
  3. 文字资料来源:https://www.jianshu.com/p/869e0b641660