我在家里的 OpenWRT 路由器上设置了 ZeroTier。
我可以连接到我家里的设备,形成一个Android ZeroTier客户端。
但是我无法从工作场所的 ZeroTier Windows 客户端连接到家庭设备。此工作场所 Windows 客户端只能看到同一级别的 ZeroTier 客户端(我的手机和我的家用路由器)
流动规则https://my.zerotier.com/network/只有accept;
。
我的 Windows zerotier 如下所示:
zerotier central 中的 Windows PC 设置如下:
更新: 回答 gravity 的问题:
来自 Windows 客户端上的 zerotier-cli 的信息:
C:\WINDOWS\system32>zerotier-cli info
200 info ef51c862db 1.2.12 TUNNELED
如果我尝试跟踪到的路由172.22.1.1
,似乎我的工作场所网关(10.10.15.241)路由器会采用它:
C:\WINDOWS\system32>tracert 172.22.1.1
1 <1 ms <1 ms <1 ms my.router [10.10.15.241]
2 1 ms 2 ms 2 ms 172.22.1.1
我尝试 ping10.144.0.209
和172.22.1.1
,并使用 Wireshark 进行检查。ping 时10.144.0.209
,ICMP 数据包仅通过 ZeroTier 接口。ping 时172.22.1.1
,ICMP 数据包仅进入我的物理 LAN 接口。
我的 OpwnWRT 路由器中的防火墙设置如下:
问题:
我应该怎么做才能让我的 Windows zerotier 客户端连接到我的家用设备?
谢谢。
答案1
在默认配置下,ZeroTier 会传输原始以太网帧,无需过滤或修改。将其视为以太网连接,并以相同的方式进行调查。
配置是否https://my.zerotier.com/除此之外还有什么“流动规则”吗
accept;
?工作场所的计算机是否有到您家庭子网的路由(是否通过 ZeroTier)?
该路由是否具有正确的“网关”参数(即,不是在线路由,而是通过 OpenWRT 路由器的网关路由)?
数据包捕获工具(例如 tcpdump 或 Wireshark)在运行时是否显示通过 ZeroTier 接口发送的数据包
ping -t 172.22.1.1
?OpenWRT 路由器和家用设备上的数据包捕获工具是否显示从工作场所计算机接收的数据包?在路由器上,分别检查 ZeroTier 接口和 LAN 接口。
工作场所计算机尝试向家里发送数据包时使用什么源 IP 地址?是 ZeroTier IP 地址还是工作场所 LAN IP 地址?前面步骤中的数据包捕获工具将显示这一点。
如果数据包到达路由器但未到达 LAN – 路由器的防火墙是否允许它们转发到那里?通常,接口之间的数据包转发会被阻止,除非您进行其他配置。
如果数据包到达 LAN 设备,它会生成答复吗?(即,如果您 ping 它并且它通过其以太网接收到 ICMP 回显请求,数据包捕获工具是否会显示它发送回 ICMP 回显答复?)
如果步骤 4 显示入站数据包来自工作区 IP 地址(而不是 ZeroTier 地址),那么路由器是否有通过 ZeroTier 到达那里的路由?
(LAN 设备将具有默认路由,这应该足够了。)
与步骤3类似,路由器上的数据包捕获工具是否显示从LAN进入并通过ZeroTier出去的响应数据包?
注意:在默认配置中,OpenWRT执行 SNAT在某些接口之间转发的数据包上。如果“出站”连接工作正常,但“入站”连接不正常,则答案几乎总是 a) 防火墙,b) 缺少路由,路由器执行 NAT 来掩盖它。
答案2
看来我需要在 Windows 客户端上手动添加路由。我使用:
route add 172.22.0.0 MASK 255.255.0.0 10.144.0.209 IF 35
^home subnet ↑ ^ZertTier interface number
IP of my OpenWRT gateway router
之后我可以成功追踪路线:
C:\WINDOWS\system32>tracert 172.22.1.2
1 215 ms 124 ms 115 ms 10.144.0.22
2 122 ms 117 ms 116 ms 172.22.1.2