日期:2014-05-16  浏览次数:20708 次

linux+snmp安装及配置说明

NMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。

?

SNMP的安装

?

安装
# yum install -y net-snmp net-snmp-utils net-snmp-devel

?

启动

# service snmpd start

?

查看监听状态

# netstat -lnp |grep snmpd

?

snmpd.conf说明


在RHEL中,SNMP的配置文件地址是/etc/snmp/snmpd.conf。snmpd.conf的配置项很多,但是真正常用的就那么几个,下面来逐个介绍。

com2sec命令,它的基本语法是“com2sec NAME SOURCE COMMUNITY”。这里要提一下SNMP的安全策略,其实SNMP的安全性并不好(可以为其设置防火墙,指定允许访问IP,设置参考《Linux防火墙iptables设置》 ),在这个协议中使用COMMUNITY这个东西来做访问控制的。简单来理解就是现在有一个帮会的一个人找去了总舵,那么这个人怎么跟总舵相认呢?他们直接约定一个“暗号”,例如见面就说“床前明月光”,那么总舵的前台就会带你去“床前明月光”想对应的地方。现在回过头来看这行配置,假如有以下一句话:

com2sec  notConfigUser default  public
?

意思就是做一个映射,把public这个COMMUNITY串和notConfigUser这个名字做好一对映射,那么以后在调用SNMP的时候,只要你声明你就是public,那么就可以获得相应的权限了。有了映射以后下面需要做的是建立一个从notConfigUser到组的一个映射,用到的命令是group,它的基本语法是“group NAME MODEL SECURITY”

group  notConfigGroup v2c  notConfigUser

?

上面这句话的意思就是把notConfigUser放到组notConfigGroup里面,用的协议是v2c,插一句,SNMP现在通常用的有3个版本。那好了,组建好了下来要做什么呢?就是要建立一个VIEW,VIEW的基本语法是“view NAME TYPE SUBTREE [MASK]”

view  systemview  included  .1.3.6.1.4.1.9129

??
像上面这句话的意思就是赋予systemview这个view能够查看1.3.6.1.4.1.9129下面所有节点的权限。最后要做的是设定哪些组的人,哪些view的用户可以做什么具体的事情,用access来设置,基本语法是“access NAME CONTEXT MODEL LEVEL PREFX READ WRITE NOTIFY”。

access   notConfigGroup   “”   any   noauth   exact   systemview   none   none

?

由于例子中用的是v2c版本的协议,所以CONTEXT必须为空,MODEL也就是协议的版本号,在这里例子里面可以是any也可以是v2c,还是由于v2c的缘故,所以LEVEL是noauth;READ、WRITE和NOTIFY分别需要指定一个view或者什么都不指定;在这里的设置就是systemview这个view可以对前面设置好的节点进行读和写操作。

到此,服务端的配置已经完成,重启一下snmpd就可以了,下面看看如何通过SNMP得到我们想要的数据

snmpwalk -v 2c -c public localhost 1.3.6.1.4.1.9129.1.2.2

?

snmpwalk可以便利指定节点下的所有子节点,-v 参数指定SNMP的协议版本,这个跟我们之前配置服务器的版本是要一致的,也就是2c,然后-c参数就指定了community的字符串,也就是刚才定义的public,然后就是主机地址,由于我在本机测试,所以用的localhost,实际中可以填上IP,最后就是OID的值。搞定!

对于刚刚接触SNMP的朋友来说,理解community的作用是关键,其实说的通俗点就是接头暗号,而且还是个明文的“暗号”。

?

相关说明

?

1、默认情况下,access配置是关闭的‘# access? notConfigGroup ""? any auth exact? systemview none none’,如果想通过默认配置(Community 默认为public)访问,需要将access前面的注释符‘#’去掉并重启snmpd。

?

2、使用v2通讯时,有个更简单的配置命令。在被监控的机器上,我们大多只需要读取的访问权限。因此,可以直接增加如下配置命令。

rocommunity snmpmonitor 192.168.1.200

命令具体含义可以在下面相关资源2中查阅。

?

3、

?

相关资源

?

1、本文配置说明来自:《Linux下的snmpd.conf配置说明》

?

2、关于snmp的v3及安全设置可以参考:《监控宝安全指引-linux_snmp》

?

?