ZeroTier被设计用于在尽可能多的环境中工作。我们提供多层备用方案,以确保即使在最受限制或故障的物理网络下,也能实现某种程度的连接性。但是,“某种程度的连接性”并不意味着“最佳连接性”。本页面将详细介绍我们推荐的物理网络配置,以获得最佳效果。
问题描述
在使用ZeroTier时,如果你的网络配置不友好,可能会导致大部分ZeroTier流量通过中继间接传输,从而降低速度。其他设置,比如“本地隔离”,也可能对性能产生显著干扰,强制本地流量在互联网上进行传输。
解决方法
1. 更新所有节点至最新版本
确保你的所有节点都已更新到最新版本,以确保你使用的是最新的功能和性能优化。
2. 推荐的本地网络和Internet网关配置
以下是一些推荐的本地网络和Internet网关配置,这些配置适用于大多数典型的部署情况:
- 不要限制出站UDP流量。
- 在你的网络上支持UPnP或NAT-PMP可以极大地提高性能,允许ZeroTier端点映射外部端口,从而避免NAT遍历。
- 如果双方都支持IPv6,建议使用IPv6,它可以极大地提高直接连接的可靠性。如果存在IPv6,应该在没有NAT的情况下实现(IPv6与NAT完全不必要,只会增加复杂性),并配备有允许双向UDP会话的有状态防火墙。
- 不要使用“对称”NAT。使用“全锥形”或“端口限制锥形”NAT。对称NAT对点对点流量非常不友好,会降低VoIP、视频聊天、游戏、WebRTC以及ZeroTier等许多协议的性能。
3. 多重NAT层次
在ZeroTier端点和互联网之间不应该存在多重NAT层次。多层NAT会引入连接不稳定性,因为不同层次的状态和行为之间会发生混乱的相互作用。不要使用双重NAT。
4. NAT端口映射和连接超时
NAT应该具有不短于60秒的端口映射或连接超时时间,以确保每个设备都可以映射足够数量的端口。
5. 允许本地设备间的直接流量
交换机和无线接入点应该允许本地设备之间的直接本地流量。关闭任何“本地隔离”功能。一些交换机可能允许更精细的控制,在这些设备上,只需允许本地UDP流量在9993端口上进行。
6. ZeroTier使用的端口
ZeroTier监听三个UDP端口:
- 9993 - 默认端口
- 从你的ZeroTier地址派生的一个随机高端口号
- 用于UPnP/NAT-PMP映射的一个随机高端口号
这意味着你的对等方可以在任何端口上监听。为了直接与它们通信,你需要能够发送到任何端口。
7. 是否需要在路由器中转发端口?
不需要。让ZeroTier和UPnP、NAT-PMP和IPv6自动处理端口转发。
8. 系统防火墙和安全软件
如果你的计算机有本地防火墙,请允许与UDP端口9993的流量进出。某些情况下(比如Windows内置防火墙),如果使用我们的安装包之一安装,ZeroTier会自动执行此操作。在其他情况下,比如Linux iptables,我们将此任务留给用户,因为有太多的变化,我们不想尝试手动修改用户设置以避免意外损坏。
一些系统可能还有安全软件,只允许特定应用程序与互联网通信。在这种情况下,你可能需要找到ZeroTier服务二进制文件并进行授权。
最后,需要注意的是,ZeroTier One的虚拟网络端口对于你的系统就像正常的LAN或WiFi端口一样,并受到本地防火墙规则的约束。如果一切看起来正常但你无法访问本地服务,比如SSH或HTTP,请检查本地防火墙规则,确保允许虚拟网络本身上的所需流量。
9. 如何判断我的设备是否在中继?
查看ZeroTier Central的网络成员列表。如果一个成员没有列出物理IP,那么它可能在进行中继。
如果你熟悉命令行,可以尝试使用以下命令行界面:zerotier-cli命令(可能需要管理员/超级用户权限):
zerotier-cli info -j
:是否为“tcpFallbackActive” true?TCP回退是中继的最慢形式,是最后的手段。zerotier-cli listpeers
:查找你要通信的设备的节点ID,并查看 下是否列出了IP地址。如果没有IP地址,则正在进行中继。
结论
通过本教程,你已经学会了如何配置路由器以优化ZeroTier网络连接,确保你能够获得最佳性能。这些配置和技巧将有助于你解决ZeroTier网络中的连接问题,使其更加稳定和高效。
希望这个教程对你有所帮助。如果你有任何其他问题或需要更多的帮助,请随时联系我们。祝你在使用ZeroTier时取得出色的结果!