From the net-snmp snmpd.conf
man page:
The SNMPv3 protocol defines "engineIDs" that uniquely identify an agent. The
string must be consistent through time and should not change or conflict
with another agent's engineID. Ever.
Internally, Net-SNMP by default creates a unique engineID that is based off of
the current system time and a random number. This should be sufficient
for most users unless you're embedding our agent in a device where these numbers won't vary between boxes on the devices initial boot.
EngineIDs are used both as a "context" for selecting information from the device and SNMPv3 with USM uses it to create unique entries for users in its user table.
In other words, changing the engine ID invalidates all existing SNMPv3 user entries and the "context" for information requests, so changing it is a big deal. When changing the engine ID, it has been my experience that you must recreate any existing SNMPv3 users, or else their SNMPv3 passwords stop working. (In other words, the engine ID seems to be used by the SNMPv3 password hashing algorithm.)
I would expect that restarting snmpd
would be mandatory when changing the engine ID.
The error message tells you that you cannot change the Net-SNMP engine ID using SNMP.
However, you can change the engine ID by using the engineID
, engineIDType
and/or engineIDNic
settings in the snmpd.conf
file, but the man page carries a warning that "you should know what you're doing" if you use them.