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
2、使用v2通讯时,有个更简单的配置命令。在被监控的机器上,我们大多只需要读取的访问权限。因此,可以直接增加如下配置命令。
rocommunity snmpmonitor 192.168.1.200
命令具体含义可以在下面相关资源2中查阅。
3、