snmpd.conf clientaddr 无法使用给定的 IP 源地址发送陷阱/通知
snmpd.conf clientaddr not working for sending trap /inform with given IP source address
鉴于以下 sample/simple snmpd.conf(RHEL 7.4 上的 Net-SNMP 5.7.2)
rwcommunity private 192.168.56.101
trapsess -Ci --clientaddr=192.168.56.128 -v 2c -c private 192.168.56.101:162
启动 SNMP 守护程序时
snmpd -f -Lo -D -C -c data/snmpd_test.conf udp:192.168.56.128:161
我们获取''Start Up'' InformRequest with IP source 192.56.168.1 而不是 ...128(下面的 WireShark 快照)
这并不奇怪,因为 -D 选项允许我们输出调试信息说
trace: netsnmp_config_process_memory_list(): read_config.c, 696:
read_config:mem: processing memory: clientaddr 192.168.56.128
trace: run_config_handler(): read_config.c, 562:
9:read_config:parser: clientaddr handler not registered for this time
但是网络资源说:
...snmpd 在生成通知时也使用此值。
陷阱[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
- 此选项在置于 snmp.conf 时也有效(注意这里没有 'd'),然后它适用于 snmpset 和 snmpget(可能还有其他)
所以我的问题是:这是文档错误、错误还是对 Net-SNMP 堆栈的误用?
经过长时间的斗争,我可能会有一个答案,我写了一个简短的笔记,因为我刚找到一个窍门
It seems that clientaddr is not parsed correctly wherever in the snmpd.conf
(我试过不也在trapsess行里面)
But it seems to be a valid option in the command line of snmpd
好像它是 snmptrap 命令行中的一个有效选项。所以我假设两者可能是相同的解析机制。
a condition also is that the IP addres must be valid one
这意味着
snmpd -f -Lo -D -C -c data/snmpd_test.conf --clientaddr=192.168.56.128 udp:192.168.56.128:161
似乎完全解决了我的问题。
我会进行更多测试,如果格式准确,这个答案会好一点,但这似乎是一个很好的提示。
鉴于以下 sample/simple snmpd.conf(RHEL 7.4 上的 Net-SNMP 5.7.2)
rwcommunity private 192.168.56.101
trapsess -Ci --clientaddr=192.168.56.128 -v 2c -c private 192.168.56.101:162
启动 SNMP 守护程序时
snmpd -f -Lo -D -C -c data/snmpd_test.conf udp:192.168.56.128:161
我们获取''Start Up'' InformRequest with IP source 192.56.168.1 而不是 ...128(下面的 WireShark 快照)
这并不奇怪,因为 -D 选项允许我们输出调试信息说
trace: netsnmp_config_process_memory_list(): read_config.c, 696: read_config:mem: processing memory: clientaddr 192.168.56.128 trace: run_config_handler(): read_config.c, 562: 9:read_config:parser: clientaddr handler not registered for this time
但是网络资源说:
...snmpd 在生成通知时也使用此值。
陷阱[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
- 此选项在置于 snmp.conf 时也有效(注意这里没有 'd'),然后它适用于 snmpset 和 snmpget(可能还有其他)
所以我的问题是:这是文档错误、错误还是对 Net-SNMP 堆栈的误用?
经过长时间的斗争,我可能会有一个答案,我写了一个简短的笔记,因为我刚找到一个窍门
It seems that clientaddr is not parsed correctly wherever in the snmpd.conf
(我试过不也在trapsess行里面)
But it seems to be a valid option in the command line of snmpd
好像它是 snmptrap 命令行中的一个有效选项。所以我假设两者可能是相同的解析机制。
a condition also is that the IP addres must be valid one
这意味着
snmpd -f -Lo -D -C -c data/snmpd_test.conf --clientaddr=192.168.56.128 udp:192.168.56.128:161
似乎完全解决了我的问题。
我会进行更多测试,如果格式准确,这个答案会好一点,但这似乎是一个很好的提示。