解决 ZeroTier 网络中的连通性问题:可以PING通,但是无法访问服务
背景
我有一台运行 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 进行网络组建时,我们需要注意网络的连通性可能会受到许多因素的影响,包括网络段的设置、设备的在线状态和授权状态,以及网络打洞的成功与否。如果遇到类似的问题,不妨尝试按照我上述的步骤进行排查,希望能够对你有所帮助。
擅长爬虫、SEO、文本分类领域,交流微信 :z328134421