SNMP4J的SNMP消息:指定读取社区和写入社区?

时间:2012-12-06 14:20:25

标签: java snmp snmp4j

我创建了一条snmp消息(SNMP4J),我需要设置Read Community Public和Write Community Private。

通过示例设置社区:

// Specify receiver
Address targetaddress = new UdpAddress("10.10.10.10/162");
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setVersion(SnmpConstants.version2c);
target.setAddress(targetaddress);

但是这并没有说明它是写社区还是读社区。有没有办法单独定义它们?

2 个答案:

答案 0 :(得分:1)

不,社区字符串就像密码,只读社区字符串和读/写社区字符串为您提供不同的设备访问权限。如果您只想从设备获取值,则使用只读社区,如果您不仅想要获取值并且还想要更改值,则必须使用读/写社区。 SNMP4j不知道你想要什么样的访问权限,所以它给你留下了选择,你不能同时设置它们。

答案 1 :(得分:0)

您只是设置用于与SNMP代理通信的社区字符串。这不是在框上创建新社区字符串的set-request(在SNMP代理配置文件中)。我想你的盒子已经定义了RW私有和RO公共社区(在大多数情况下是默认的)。要添加新的社区字符串,您必须使用企业特定的OID发送set-request,这会添加新的社区字符串(如果完全支持此功能)。由于安全问题,没有标准的基于RFC的MIB允许 - 任何人都可以添加她/他的RW社区字符串并将其用于进一步的配置更改。但是,每个人都可以嗅探SNMPv1流量(它没有加密!):-)但如果有人可能会执行中间人攻击,那么问题比仅使用未加密的SNMPv1更大;-)。而已。如果要添加新的社区字符串,则必须要求SNMP代理开发人员使用特定的MIB表或标量,或者直接进入设备并将这些字符串添加到SNMP代理配置文件中。