snmpd.conf clientaddr无法使用给定的IP源地址发送陷阱/通知

时间:2018-12-13 17:55:25

标签: snmp net-snmp rhel7 snmp-trap snmpd

给出以下示例/简单的snmpd.conf(RHEL 7.4上的Net-SNMP 5.7.2)

  

rwcommunity专用192.168.56.101

     

捕获-Ci -clientaddr = 192.168.56.128 -v 2c -c专用192.168.56.101:162

启动SNMP守护程序时

  

snmpd -f -Lo -D -C -c data / snmpd_test.conf udp:192.168.56.128:161

我们获得IP源为 192.56.168.1 而不是 ... 128 的``启动'' InformRequest strong>(下面的WireShark快照)

InformRequest with source 1 instead of 128

不足为奇,因为 -D 选项允许我们输出调试信息,说明

  

跟踪:netsnmp_config_process_memory_list():read_config.c,696:   read_config:mem:处理内存:clientaddr 192.168.56.128   跟踪:run_config_handler():read_config.c,562:   9:read_config:parser:当前未注册clientaddr处理程序

网络消息却说:

snmp.conf

... snmpd在生成通知时也使用此值。

snmpd.conf

捕获[SNMPCMD_ARGS]主机 提供了一种更通用的定义通知目的地的机制。 SNMPCMD_ARGS 应为等效的命令行选项 snmptrap(或snmpinform)命令发送所需的通知

我还阅读了一些旧线程,例如this one

  • 但是此选项与snmptrap一起使用时效果很好
      

    snmptrap -D -Lo -Ci --clientaddr = 192.168.56.128 -M + path_to_my_mibs -v 2c -c private 192.168.56.101:162“” .1.3.6.1.4.1.a.b.c.d.e.f.0 i 0

correct snmpinform with ip source 128

  • 将此选项放在snmp.conf中时也起作用(请注意,这里没有'd'),然后将其应用于snmpset和snmpget(以及其他)

所以我的问题是:这是文档错误,错误还是Net-SNMP堆栈的滥用?

1 个答案:

答案 0 :(得分:0)

经过长时间的奋斗,我可能会得到一个答案,并写了一条简短的便条,因为我刚刚找到了窍门

  

snmpd.conf

中的任何地方似乎都无法正确解析 clientaddr

(我也尝试不在陷阱行内)

  

但这似乎是 snmpd

的命令行中的有效选项

就像在 snmptrap 命令行中的有效选项一样。因此,我认为两者可能是相同的解析机制。

  

一个条件也是IP地址必须是有效的

这意味着

  

snmpd -f -Lo -D -C -c data / snmpd_test.conf -clientaddr = 192.168.56.128 udp:192.168.56.128:161

似乎可以完全解决我的问题。

我将执行更多测试,如果格式正确,此答案会好一些,但这似乎是一个很好的提示。