Nagios Server 在 Docker 容器中运行。它通过网络内各个主机上运行的 NRPE 进行主机检查。
docker 主机是 10.10.100.100
Iptables 仅允许从 10.10.100.100 进入 tcp 5666 进行入站 NRPE 检查
来自 Nagios 的 nrpe 检查成功通过了防火墙。这证明数据包源地址确实是 10.10.100.100
NRPE配置有:
server_port=5666
allowed_hosts=10.10.100.100
当进行 NRPE 呼叫时,NRPE 系统日志显示:
Oct 20 18:42:32 dockerz01 nrpe[13382]: Allowing connections from: 10.10.100.100
Oct 20 18:42:59 dockerz01 nrpe[13411]: Host 172.20.0.2 is not allowed to talk to us!
这意味着发送到 NRPE 的数据包的源地址为 172.20.0.2(这是 Docker 容器 IP,位于 docker 桥接网络内)。如果是这样,它将如何穿过防火墙?!
这不太合理,我有点困惑
当然,通过allowed_hosts=172.20.0.2
在 NRPE 配置中进行设置可以解决这个问题,但这不是持久的,也不能真正解决这个问题。
Nagios 是否发送了它的内容想' 是 NRPE 数据包中的“源” IP,并且 NRPE 以此来判断“源”地址?如果是这样,那该如何改变?我这里遗漏了什么?我的目标是将 Docker 主机作为 allowed_host,因为我知道它是静态的并且不会改变。
答案1
在具有多个地址的主机上,您可以check_nrpe
通过选项选择从哪一个地址发送请求-b
。
就你的情况来说,-b 10.10.100.100
除此之外,它只是遵循路由规则。