![如何在不打开防火墙端口的情况下监控远程客户的 Windows/Linux PC/服务器?](https://linux22.com/image/520239/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E6%89%93%E5%BC%80%E9%98%B2%E7%81%AB%E5%A2%99%E7%AB%AF%E5%8F%A3%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E7%9B%91%E6%8E%A7%E8%BF%9C%E7%A8%8B%E5%AE%A2%E6%88%B7%E7%9A%84%20Windows%2FLinux%20PC%2F%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我在一家 IT 服务提供商工作 - 我们为客户站点上的一系列 Windows 和 Linux 服务器/PC 提供支持。我正在寻找一种方法来监控这些设备上的基本内容(例如磁盘空间使用情况、CPU 利用率、正常运行时间等)并在中央界面收集数据。
我查看了 Zabbix 并阅读了 Nagios。但是,两者似乎都要求我们的客户拥有静态外部 IP 地址,并且要求在客户的防火墙上打开特定端口以允许双向流量。对于大多数客户来说,这是不可能的。
有没有办法配置 Zabbix 或 Nagios,使其将数据从 Windows 代理发送到我们的中央服务器(打开相关传入端口),而无需在客户防火墙上打开端口进行双向通信?我试用了 Pandora FMS,它可以做到这一点,但我总体上不喜欢这个产品。据我所知,这需要预先配置代理应发送的数据,但从阅读文档来看,我不能 100% 确定。
提前感谢你的任何建议,
马特
答案1
zabbix 为您提供的选项:
使用主动代理。本机 zabbix 代理可以在大多数平台上运行,包括 Linux 和 Windows。在主动模式下,它们连接到端口 10051 上的服务器,请求检查事项,然后发送任何收集到的数据。没有从服务器到代理的连接。
使用 zabbix 代理。在这种情况下,专用系统将收集所有数据并将其传输到 zabbix 服务器。在正常的主动模式下,只有 zabbix 代理连接到 zabbix 服务器(再次在端口 10051 上) - 因此无需允许来自所有 zabbix 代理的连接,只需允许来自代理的连接。额外的好处是能够监控无代理系统,如交换机、路由器、打印机和其他任何东西。
从 zabbix 1.8.3 开始,如果无法反向连接,您还可以选择让 zabbix 服务器连接到 zabbix 代理(仍为端口 10051)。
在您的情况下,主动 zabbix 代理可能是最好的选择,因为如果与 zabbix 服务器的网络连接中断,它也会在本地保存收集的数据。代理只能在类 unix 系统上运行,因此您可能有几个选择 - 要么在现有的 Linux 机器之一上安装代理,要么设置专用代理。
鉴于这些是客户的系统,我建议使用专用系统。您可以拥有一个运行 zabbix 代理的小型嵌入式系统。您可以将它们作为监控设备分发给客户,他们只需将它们插入,允许从端口 10051 上的代理与 zabbix 服务器建立传出连接 - 就这样。无需在代理端进行更多配置。
答案2
作为允许您使用任何所需代理软件的解决方案,您可以考虑使用 VPN 技术来启动从客户网络到监控网络的连接。由于连接将源自客户防火墙后面,因此无需转发外部端口。同样,由于客户正在启动连接,因此客户端不需要静态 IP 地址或动态 DNS。
您可以使用 OpenVPN 轻松且廉价地完成此类操作。您可以在每个客户的网络上选择一个单独的主机作为监控 VPN 网关,并在客户的边缘路由器中设置路由,以将管理流量发送到该 VPN 网关主机。
在您的前端,您可以使用防火墙规则将来自客户站点的流量限制为仅监控/管理流量(因为您的客户可能会从他们的 LAN 开始探测您的管理网络)。使用像 iptables 这样的状态防火墙将允许您允许来自管理网络内部的客户网络连接,同时拒绝来自客户网络内部的非管理相关主机/端口的传入连接尝试。
假设您使用不同的 IP 子网来寻址所有客户的 LAN(我在“托管服务”式的公司工作时总是这么做),您可以完成我在此处描述的所有操作,而无需任何有趣的 NAT 游戏等。