【问题标题】:snmpd.conf clientaddr not working for sending trap /inform with given IP source addresssnmpd.conf clientaddr 无法使用给定的 IP 源地址发送陷阱 /inform
【发布时间】:2018-12-13 17:55:25
【问题描述】:

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

rwcommunity 私有 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 与 IP 源 192.56.168.1 而不是 ...128(下面是 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 处理程序暂时未注册

但是网络消息来源说:

snmp.conf

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

snmpd.conf

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

我还阅读了一些旧帖子,例如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 堆栈的滥用?

【问题讨论】:

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


    【解决方案1】:

    经过长时间的挣扎,我可能有答案,我写了一个简短的笔记,因为我刚刚找到了一个窍门

    snmpd.conf

    中的 clientaddr 似乎没有正确解析wherever

    (我也试过不在 trapsess 行内)

    但它似乎是 snmpd 的命令行中的有效选项

    就像它是 snmptrap 命令行中的一个有效选项。所以我认为这可能是两者的相同解析机制。

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

    这意味着

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

    似乎完全解决了我的问题。

    我会进行更多测试,如果格式准确,这个答案会更好一点,但它似乎是一个很好的提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多