snmpnet-snmprhel7snmp-trapsnmpd

snmpd.conf clientaddr not working for sending trap /inform with given IP source address


Given the following sample/simple snmpd.conf (Net-SNMP 5.7.2 on RHEL 7.4)

rwcommunity private 192.168.56.101

trapsess -Ci --clientaddr=192.168.56.128 -v 2c -c private 192.168.56.101:162

when starting a SNMP Daemon

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

We obtain ''Start Up'' InformRequest with IP source 192.56.168.1 instead of ...128 (WireShark snapshot below)

InformRequest with source 1 instead of 128

It is not surprising as the -D option allows us to output the debug information saying that

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

Web sources however say:

snmp.conf

...This value is also used by snmpd when generating notifications.

snmpd.conf

trapsess [SNMPCMD_ARGS] HOST provides a more generic mechanism for defining notification destinations. SNMPCMD_ARGS should be the command-line options required for an equivalent snmptrap (or snmpinform) command to send the desired notification

I read also some old threads like this one

correct snmpinform with ip source 128

So my question is: Is it a documentation error, a bug, a misuse of the Net-SNMP stack ?


Solution

  • After a long struggle I may have an answer and I write a short note as I just found a trick

    It seems that clientaddr is not parsed correctly wherever in the snmpd.conf

    (I tried not also inside the trapsess line)

    But it seems to be a valid option in the command line of snmpd

    like it was a valid option in the snmptrap command line. So I assumed it could be the same parsing mechanism for both.

    a condition also is that the IP addres must be valid one

    which means that

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

    seems to fully solve my problem.

    I will perform more tests and if accurate format this answer a little bit better but it seems a good hint.