PHP SNMP v2 Walk Fragmenting / Blocked

时间:2014-09-22 21:17:37

标签: php ubuntu-12.04 snmp net-snmp ip-fragmentation

如何在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

(删除敏感数据)。

1 个答案:

答案 0 :(得分:0)

它没有出现告诉PHP请求自定义最大重复设置的方法。此外,PHP接下来的工作并不顺利,因为它将继续通过SNMP树进入下一个分支(即如果你正在遍历.17.x,最后一个在17上.z会给你18.1)。

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