1.SNMP的工作方式:
管理员需要向设备获取数据,所以SNMP提供了“读”操作;管理员需要向设备执行设置操作,所以SNMP提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了“Trap”操作。
2.SNMP的基本思想:
为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
3.SNMP被设计为工作在TCP/IP协议族上
SNMP基于TCP/IP协议工作,对网络中支持SNMP协议的设备进行管理。所有支持SNMP协议的设备都提供SNMP这个统一界面,使得管理员可以使用统一的操作进行管理。
4.使用net-snmp作为学习SNMP的工具,搭建一个net-snmp环境。Net-snmp是一个开源的SNMP项目。
注,有两个重要的安装,net-snmp.x86_64 、net-snmp-utils.x86_64 一个是net-snmp软件包,另一个是snmp的工具包。
5.下面是常用的配置选项:主配置文件:/etc/snmp/snmpd.conf
//常用定义项:
(1).首选是定义一个共同体名(community),这里是public(多数SNMP设备或服务默认都是是用public),及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:) ,source 在net-snmp中用来对来源IP加以控制,即哪些可以获取SNMP信息
# sec.name source community
com2sec notConfigUser default public
(2).定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
sec.model:安全模式,可选值为v1/v2c/usm。
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3).定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
view all included .1 #表示可以查看.1节点下的所有设备信息
注:
incl/excl:对下面的MIB子树是包括还是排除。
subtree:视图中涉及的MIB子树。
mask:掩码
(4).定义notConfigUser这个组在all这个view范围内可做的操作(即权限),这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all none none
注:
context:上下文,v1、v2c中始终为空。
sec.model:安全模式,可选值为v1/v2c/usm。
sec.level:安全级别,可选值为auth/noauth/priv,v1、v2c中只能为noauth。
prefix:前缀,指定context如何与PDU中的context匹配,v3使用。
read:授权的读视图。
write:授权的写视图。
notif:授权的trap视图。
(5).端口: 标准的SNMP服务使用161和162端口,厂商私有的实现一般使用199、391、705和1993端口,net-snmp用udp 161。
6.常用命令:
(1).snmpget命令
snmpget [OPTIONS] AGENT OID [OID]...
选项:
- v 1|2c|3 指定SNMP版本
-c COMMUNITY 指定community string
-m MIB[:...] 指定MIB文件
注,snmpget 不同于 snmpwalk ,必须在命令行给出 <object>.<instance> 的格式,不能只给出 object。
案例:snmpget -v 2c -c public localhost system.sysDescr.0 #获取设备的描述信息。
(2).snmpwalk/snmpbulkwalk 命令
snmpwalk /snmpbulkwalk [OPTIONS] AGENT [OID]
选项:
- v 1|2c|3 指定SNMP版本
-c COMMUNITY 指定community string
-m MIB[:...] 指定MIB文件
注,snmpbulkwalk命令: 获取snmp服务器的mib-2各种资讯,snmpbulkwalk用于通过SNMPv2 的SNMP GET BULK请求命令与其它网络实体通信,只能用于snmpv2,速度快于snmpwalk
案例:snmpbulkwalk -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.1 #获取mib-2的system的数据。
(3).snmpwalk命令
注,获取snmp服务器的HOST-RESOURCES的各种资讯。
案例:snmpwalk -v 2c -c public localhost system
#这条指令用于查看本机系统信息。
(4).snmpdelta命令
注,监控网卡流量等信息, 指定共同体为public,协议为snmpv1,以表格的方式输出结果,显示时间戳。
案例:snmpdelta -c public -v 1 -Cs -CT 127.0.0.1 IF-MIB::ifInUcastPkts.2 IF-MIB::ifOutUcastPkts.2
#监控IF-MIB::ifInUcastPkts(输入流量),IF-MIB::ifOutUcastPkts(输出流量),如监控本地的第二块网卡instance为2。
snmpdelta -c public - v 1 -Cs -CT 127.0.0.1 ifInDiscards.2
#监控ifInDiscards(已经丢弃的收到的数据包的总数),格式同上。
(5).snmpnetstat命令
注,查看snmp服务器的端口连接信息, 协议为snmp 2c。
案例:snmpnetstat -v 2c -c public -Can -Cp tcp 127.0.0.1
#获取127.0.0.1的TCP协议的开放端口状态
(6).snmptranslate 命令
注,在MIB OID 在数字和文字名称之间进行转换。
例子,
snmptranslate -On -IR HOST-RESOURCES-MIB::hrSystem
#用snmptranslate把symbol 格式的HOST-RESOURCES-MIB::hrSystem 转换为 numberic 格式的oid,用-On(输出数字格式的oid),使用 -IR(允许“随机”访问 MIB)
snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem
#用snmptranslate把symbol 格式的HOST-RESOURCES-MIB::hrSystem 转换为symbol 格式的 oid,用-Onf(输出符号格式的oid)
snmptranslate -Td iso.org.dod.internet.mgmt.mib-2
#用snmptranslate输出该对象(iso.org.dod.internet.mgmt.mib-2)的详细定义,用-Td(包括文字名称、所属 MIB、类型、状态、读写权限、描述信息,数字格式的 OID)
来源:oschina
链接:https://my.oschina.net/u/1442209/blog/208818