Как установить максимальный размер сообщения при использовании snmp v2 в PHP?
Я использую PHP для выполнения SNMP-обхода устройств, и в моей организации установлены очень жесткие брандмауэры. Я сталкиваюсь с проблемой, когда (snmp2_real_walk или snmp2_walk) приводят к таймаутам с моего производственного сервера, если пакеты больше и становятся фрагментированными. Мне интересно, есть ли способ установить максимальный размер пакета на что-то меньшее, чтобы предотвратить фрагментацию.
Я использую php 5.4.10 в Ubuntu 12.04 и Net-SNMP 5.4.3.
Когда я фиксирую трафик, оказывается, что 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
(конфиденциальные данные удалены).
Не похоже, что есть способ сказать PHP запросить пользовательскую настройку max-repetitions. Кроме того, PHP get next не работает должным образом, так как он будет продолжать проходить по дереву SNMP в следующую ветвь (т. Е. Если вы пересекаете .17.x, последний из 17.z даст вам 18.1).
Чтобы обойти эту проблему, я использовал exec и очистил данные, чтобы убедиться, что никакие переменные не могут перехватить систему.
Других решений пока нет …