问题
在公网实现对家中Openwrt的访问
解决方法
使用ZeroTier进行异地组网
前提
编译的Openwrt固件中有ZeroTier插件
解决步骤
- 进入ZeroTier官网(ZeroTier链接)
- 登录或注册账号
登录后创建 Networks
- 创建的 Network 会有一个 Network ID
- 可以给 Network 去一个名字(Name)
返回 Openwrt Web后台设置:VPN-ZeroTier
- ZeroTier Network ID:填入上面创建的 Network 的 Network ID
- 勾选“自动允许客户端NAT”、“启用”
- 保存&应用
Openwrt 转到“网络-接口-添加新接口”:
- 新接口名称:自定
- 新接口协议:静态地址
- 包括以下接口:选择“zt”开头的以太网适配器(ZeroTier配置好就会有一个这样的接口),注意这里的以太网适配器(zt开头)的名字记为 ZT 后面用到;
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 的全称,
- 重启防火墙
转回ZeroTier中原先对应创建的 Network设置中
Basics
- Access Control:Private(自用)
Advanced
- IPv4 Auto-Assign:我选择Easy,下方网段最后一行选一个(如
192.168.196.*
) - IPv6 Auto-Assign:我选择全不勾选
- Multicast:默认设置(32(Limit),Enable Broadcast)
- IPv4 Auto-Assign:我选择Easy,下方网段最后一行选一个(如
Members
- 此时Openwrt已经运行 ZeroTier 并且加入该Network
- Members列表中可以看到一个设备选项,勾选“Auth?”即代表同意加入,勾选;
- 过一会“Managed IPs”中会出现一个IP(ZeroTier分配的局域网IP),该IP(记为A)后部设置要用到
转到ZeroTier的Advanced-Managed Routes-Add Routes设置中
- Destination:填写Openwrt设备分配子网地址的网段(如
192.168.2.0/24
) - Via:填写以上记为“A”的IP(即上面ZeroTier分配的局域网IP)
- Destination:填写Openwrt设备分配子网地址的网段(如
Openwrt 转到 ZT 接口设置页面,转到基本设置
- 协议:静态地址
- IPv4地址:填写以上记为“A”的IP(即上面ZeroTier分配的局域网IP)
- 子网掩码:
255.255.255.0
或255.255.0.0
(视你原先ZeroTier中选择局域网网段的子网掩码长度决定)
Openwrt 转到 ZT 接口设置页面,转到防火墙设置
- 创建/分配防火墙区域:选择“lan”
- 保存&应用
- 至此路由配置部分结束
电脑端远程访问Openwrt
- 在 ZeroTier 官网下载ZeroTier客户端(目前最新版本1.10.2,不知道为什么运行后Ui没法显示,改下载1.6.1版本,没有出现该问题)
- 右键ZeroTier One托盘图标,Join Network后,填写Network ID;
- 在ZeroTier的Network设置中,勾选新设备,同意加入网络。