解决 ZeroTier 网络中的连通性问题:可以PING通,但是无法访问服务

发布时间 2023-07-21 11:39:09作者: seozed

背景

我有一台运行 Linux 的服务器,而我本地的电脑运行的是 Mac 系统。我原本使用的是 Tailscale 来创建局域网,但我计划在此基础上增加 ZeroTier 作为备用的组网方案。

问题的产生

在服务器和本地都成功安装 ZeroTier 并加入网络后,我发现两台设备之间无法实现 PING 连通。然而,当我查看 Web 控制台时,发现所有设备都显示为在线,并且已经获得授权。而在 Tailscale 网络中,设备间的 PING 是可以正常进行的。

网络图

为了解决这个问题,我试着更改了网络段,虽然这样做使设备之间的 PING 可以进行了,但是我发现我无法访问局域网内的服务。下面是我尝试访问服务时的命令行记录:

Mac-mini ~ % ping -c 5 192.168.196.34
PING 192.168.196.34 (192.168.196.34): 56 data bytes
64 bytes from 192.168.196.34: icmp_seq=0 ttl=64 time=23.499 ms
64 bytes from 192.168.196.34: icmp_seq=1 ttl=64 time=13.839 ms
64 bytes from 192.168.196.34: icmp_seq=2 ttl=64 time=18.833 ms
64 bytes from 192.168.196.34: icmp_seq=3 ttl=64 time=12.389 ms
64 bytes from 192.168.196.34: icmp_seq=4 ttl=64 time=18.400 ms

--- 192.168.196.34 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 12.389/17.392/23.499/3.951 ms
Mac-mini ~ % curl 192.168.196.34:6800
curl: (7) Failed to connect to 192.168.196.34 port 6800 after 1017 ms: Couldn't connect to server
Mac-mini ~ % traceroute 192.168.196.34
traceroute to 192.168.196.34 (192.168.196.34), 64 hops max, 52 byte packets
 1  192.168.196.34 (192.168.196.34)  19.181 ms  13.515 ms  11.975 ms

问题的解决

经过一番研究,我终于找到了解决这个问题的方法。问题的原因其实在于网络未成功打洞。ZeroTier 并不会自动利用 UPNP 进行打洞,所以我需要在路由器上手动进行端口映射。在我完成这一操作后,我终于可以正常访问到局域网内的服务了。

总结

在使用 ZeroTier 进行网络组建时,我们需要注意网络的连通性可能会受到许多因素的影响,包括网络段的设置、设备的在线状态和授权状态,以及网络打洞的成功与否。如果遇到类似的问题,不妨尝试按照我上述的步骤进行排查,希望能够对你有所帮助。