如何在PHP中使用snmp v2時設置最大消息大小?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
(敏感數據刪除)。
有問題的數據包大小不是您發送的請求,而是您收到的響應,對不對?除了在請求中設置「max-repeaters」標誌之外,您無法決定對方如何決定回答。我的建議是避免在此網絡上使用get-bulk,並使用get-next請求。這樣,答案會小很多。 (但是仍然不能保證它們不會被分割。) – Jolta 2014-09-23 08:25:19
奇怪的是,我可以從同一臺機器上運行getBulk的cli版本到相同的目標主機,並且它不會產生也是太多的數據包大。我還需要在我的步行中使用OID,以便我可以將它們連接到共享OID的相同部分的其他信息。 (最後一部分)。 – Trenton 2014-09-24 12:49:15
我明白了你對中繼器的意義......如果我在命令中使用-C r20,我現在能夠從CLI複製碎片。現在看看是否有可能讓我告訴PHP減少它的重複。 – Trenton 2014-09-24 18:11:25