【问题标题】:Timeout in SNMP GETSNMP GET 超时
【发布时间】:2017-08-08 04:23:14
【问题描述】:

我使用 Python 使用 pysnmp 测试了以下 SNMP GET 命令的代码

g = getCmd( SnmpEngine(),
            CommunityData( 'escom' ),
            UdpTransportTarget( ( 'localhost', 161 ) ),
            ContextData(),
            ObjectType( ObjectIdentity( 'SNMPv2-MIB', 'sysDescr', 0 ) ) )

next( g )

当我使用localhost127.0.0.1 运行它时,它可以工作,但是当我使用计算机的IP 时,我得到一个超时错误。

我还测试了一个使用 Java (snmp4j) 找到的示例,它是相同的:它适用于 localhost127.0.0.1,但不适用于 IP。如果我对 IP 进行 ping 操作,它会起作用,所以我不明白为什么会发生这种情况。

我使用的是 Windows 10,并按照this tutorial 配置了 SNMP 代理。

有没有办法避免我使用IP时超时?

【问题讨论】:

  • 什么电脑的IP?网络是什么样的?两个端点之间有哪些防火墙,它们是如何连接的?另一端正在运行什么 SNMP 代理,它是如何配置的?如果是同一台计算机,除了防火墙和代理如何配置(因为服务侦听特定接口)之外,您可以忽略这些问题。

标签: snmp pysnmp snmp4j


【解决方案1】:

第一件事——您确定您的远程 SNMP 代理已配置为响应您吗?您使用的 SNMP 社区名称和 SNMP 版本是否与您的远程代理配置使用的相同?

这也可能是网络连接问题。在我的脑海中,这可能是一个防火墙规则,它丢弃传入的 SNMP 数据包(例如响应)或不对称路由,这意味着您从一个本地接口发起 SNMP 数据包,而响应来自另一个接口。

要测试第二个假设,您可以尝试在demo.snmplabs.com 查询公共 SNMP 代理。如果它没有响应您,则表明您没有收到响应数据包。

您可以采取的另一个方向是在您的本地计算机上设置 Wireshark 并查看 SNMP 流量(UDP,端口 161)是否正在返回给您。

【讨论】:

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