所以我过去实施的代理面临着这个问题。 当我有 2 台服务器加入集群时,发布服务器无法在 IPv6 上提供轮询服务。在 IPv6 上运行轮询可以在发布者本地进行,但不能在外部进行。它确实在集群中的订阅者服务器外部工作。 这是我的 nmsagent 实现代码。
class SNMPAgent(BaseSNMPAgent):
SNMP_AGENT_PORT = 1161
def __init__(self):
BaseSNMPAgent.__init__(self)
self._build_transport()
self._build_access()
self._build_context()
def _build_transport(self):
''' Open a UDP socket for SNMP requests '''
# UDP over IPv4
config.addTransport(self._snmp_engine, udp.domainName, udp.UdpTransport().openServerMode((BaseSNMPAgent.SNMP_AGENT_SRC,
SNMPAgent.SNMP_AGENT_PORT)))
我需要单独为 IPv6 实现传输吗?有哪些潜在的解决方案可以解决这个问题。 问题是它确实遍历了我的系统 mib 中的第一个对象,但一直循环遍历它,因此 snmpwalk 超时。
我需要单独为 IPv6 实现传输吗
是的。官方示例已经说明了,
顺便说一句,不确定你从哪里得到的
BaseSNMPAgent
但这不是 PySNMP 的一部分。要使用 PySNMP 创建代理,您应该遵循
https://github.com/lextudio/pysnmp/blob/v6.0.9/tests/agent_context.py