0

在 PHP 中使用 snmp v2 时如何设置最大消息大小?

我正在使用 PHP 对设备进行 SNMP 遍历,并且我的组织有非常严格的防火墙。我遇到了一个问题,如果数据包更大并且碎片化,(snmp2_real_walk 或 snmp2_walk)会导致我的生产服务器超时。我想知道是否有办法将最大数据包大小设置为更小以防止碎片。

我在 Ubuntu 12.04 和 Net-SNMP 5.4.3 上使用 php 5.4.10。

当我捕获流量时,事实证明 snmp2_real_walk 正在使用 getBulkRequest。我收到一个响应,说数据包是分段的,以及一个较小的后续数据包。在我的本地机器上,除了防火墙之外的相同环境,这有效。在我的生产机器上,它失败了。

var_dump(snmp2_real_walk("a.b.c.d", "public", '.o.i.d'));

如果我通过命令行调用它,它适用于较小的数据包。我不明白为什么。必须有一种方法来设置数据包/消息的大小,对吧?

snmpbulkwalk -v2c -cpublic a.b.c.d .o.i.d

(删除敏感数据)。

4

1 回答 1

0

似乎没有办法告诉 PHP 请求自定义最大重复设置。此外,PHP 的 get next 也不能​​很好地工作,因为它会继续通过 SNMP 树进入下一个分支(即,如果您正在遍历 .17.x,则 17.z 上的最后一个将为您提供 18.1)。

为了解决这个问题,我最终使用 exec 并清理数据以确保没有变量可以劫持系统。

于 2014-09-26T13:19:07.630 回答