给出以下示例/简单的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快照)
不足为奇,因为 -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处理程序
网络消息却说:
... snmpd在生成通知时也使用此值。
捕获[SNMPCMD_ARGS]主机 提供了一种更通用的定义通知目的地的机制。 SNMPCMD_ARGS 应为等效的命令行选项 snmptrap(或snmpinform)命令发送所需的通知
我还阅读了一些旧线程,例如this one
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
所以我的问题是:这是文档错误,错误还是Net-SNMP堆栈的滥用?
答案 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
似乎可以完全解决我的问题。
我将执行更多测试,如果格式正确,此答案会好一些,但这似乎是一个很好的提示。