fix: set listen IP in _action_fix_snmp so snmpd binds to management IF

Without an explicit listen address, os-net-snmp on OPNsense may not
respond on non-loopback interfaces. The fix sets
listen = {self.hostname: {"selected": 1}} which is always the
management IP used to reach this device in netOrk.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Manivong
2026-06-20 03:46:48 +02:00
co-authored by Claude Sonnet 4.6
parent 9f9fafb6f5
commit 629822c055
+8 -1
View File
@@ -1579,6 +1579,12 @@ class OPNsenseDriver(FirewallDriver):
lines.append("[install] os-net-snmp already installed — skipping reinstall") lines.append("[install] os-net-snmp already installed — skipping reinstall")
# 2. Configure SNMP # 2. Configure SNMP
# The listen field must contain the management IP so that snmpd binds
# to the correct interface. Without it snmpd may not respond on any
# non-loopback address.
# The API expects {"<ip>": {"selected": 1}} — we use self.hostname
# which is always the device's management IP in netOrk.
listen_val: dict = {self.hostname: {"selected": 1}}
try: try:
self._post("/api/netsnmp/general/set", { self._post("/api/netsnmp/general/set", {
"general": { "general": {
@@ -1588,9 +1594,10 @@ class OPNsenseDriver(FirewallDriver):
"location": "Managed by netOrk", "location": "Managed by netOrk",
"sysobjid": "", "sysobjid": "",
"bindip": "", "bindip": "",
"listen": listen_val,
} }
}) })
lines.append("[config] SNMP enabled with community 'public'.") lines.append(f"[config] SNMP enabled with community 'public', listen={self.hostname}.")
except Exception as exc: except Exception as exc:
logger.debug("SNMP config failed: %s", exc) logger.debug("SNMP config failed: %s", exc)
lines.append(f"[config] error: {exc}") lines.append(f"[config] error: {exc}")