在 CentOS 6.7 服务器上,由 EPEL 安装的 Nagios 3.5.1 监控完全启用 IPv6 双栈的网络。受监控的主机运行 NRPE 代理,所有代理都配置为作为守护进程运行(而不是通过 xinetd),配置行如下
allowed_hosts=bombur.example.com
Nagios 服务器的 FQDN在哪里bombur.example.com
,它在 DNS 中解析为 IPv4 和 IPv6 地址:
% host bombur
bombur.example.com has address 192.0.2.28
bombur.example.com has IPv6 address 2001:db8:f00:ba8::28
对于运行 NRPE 2.15 之前的版本(不支持 IPv6 且仅接受 IPv4 连接)的主机,此方法可行。但在运行 NRPE 2.15 的主机(支持 IPv6)上,Nagios 服务器的连接会被拒绝,并显示以下日志消息:
nrpe[21665]: Host 2001:db8:f00:ba8::28 is not allowed to talk to us!
显然,该allowed_hosts=<hostname>
指令仅允许给定主机的 IPv4 地址,而不允许其 IPv6 地址。
这个推论正确吗?有没有办法解决此问题,最好不要在所有 NRPE 代理配置中对数字 IPv6 地址进行硬编码?
答案1
看起来,当 NRPE 启动时,它会查找bombur.example.com
并使用第一个(在本例中为 IPv4)地址作为条目allowed_host
。
最简单的解决方法是只使用两个主机名。例如,创建 bombur4.example.com 和 bombur6.example.com,它们分别仅解析为 IPv4 和 IPv6 地址。
如果由于某种原因这不是一个选项,那么您必须明确列出两个 IP(并且希望使用配置管理系统)。