NET-SNMP
简介
-
简单的网络管理协议,属于应用层上的协议。
-
采用UDP协议在管理端和代理端之间进行通信。
-
主要有两大部分构成: SNMP管理端(manager) 和 SNMP代理端(agent)。
-
manager(NMS :网络管理工作站)
-
查询代理商
-
GET:获取来自代理端的响应。
-
SET:在代理中设置变量。
-
Trap: 接受 代理端主动向管理端通报重要事件。
-
-
agent
-
收集本地环境的管理信息。
-
存储和检索MIB中定义的管理信息。
-
向管理端发送事件信号。
-
-
MIB(管理信息库)
-
可以理解为agent维护的管理对象数据库
-
按层次结构组织的树状结构,每个被管理的对象对应树形结构的一个叶子节点。(称为 :object)
-
MIB文件是 manager可以向agent询问的一些问题(管理对象的信息和状态)。
-
agent在本地收集这些数据,并将其存储在MIB中。
-
-
-
通常情况下:由服务器(manager)请求而获得的数据由服务器的161端口接收。代理端,主动向服务器发送消息,通常是往服务器的162端口发。
-
MIB Browser操作:
-
Get 获取当前OID的值
-
Get Next 获取下一个OID的值,会自动增加OID序号
-
Get Bulk 分页批量获取,一次获取10个值,会自动增加OID序号
-
Get Subtree 获取OID下面的所有子树的值
-
Set 设置OID的值
-
Walk 获取OID的值,会自动增加OID序号,且一直持续查询
-
-
netstat -an | grep 161 //看端口 netstat -lntup | grep snmp
-
ps aux | grep snmp
iptables –L –n 查看当前iptables规则
iptables -I INPUT -p udp --dport 161 -j ACCEPT命令添加UDP 161端口到iptables防火墙
SNMPD 常用命令
-
snmptrap -v 2c -c public 10.1.1.165:162 0 .1.3.6.1.4.1.2354 1.3.6.1.4.1.2354.1 s "hello!"
-
2c 是选择snmp协议的版本
-
public 是共同体
-
10.1.1.165:162 是发往的ip和端口,端口也可以不指定,默认是162
-
0 是uptime
-
.1.3.6.1.4.1.2354 是TrapOID
-
.1.3.6.1.4.1.2354.1 是数据OID
-
s 是要发送的内容的类型(s代表 string)
-
hello! 是数据值
-
-
snmptranslate 在数字和文本之间转化MIB的OID的名字
-
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.6
- 把 .1.3.6.1.4.1.2021.9.1.6 下的所有OID列出来。
-
snmpget -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.6.1
- 查询一个节点OID
-
snmpget -v -2c -c public tcp:localhost:1611 .1.3.6.1.4.1.2021.9.1.6.1
-
tcp #选择tcp协议
-
1611 #选择端口号
-
默认不指定tcp的话采用 udp协议
-
snmpd.conf
-
配置开放的端口 选择启用udp和tcp
- agentaddress udp:161,tcp:1611
-
配置监控磁盘信息
-
disk / 20%
-
includeAllDisks 10%
-
-
可以访问的路径
- view systemonly included .1 #表示.1一下左右的oid都可以访问
-
扩展OID
- pass .1.3.6.1.4.1.866.9.8.0.0 /bin/bash /tmp/passtest6002
OID扩展
-
对配置文件的更改 (snmpd.conf)
-
需要include : view systemonly included .1.3.6.1.4.1.2021.6000
-
使用pass eg:pass .1.3.6.1.4.1.2021.6000.1.0 /bin/bash /tmp/passtest6000.sh
-
.1.3.6.1.4.1.2021.6000.1.0 是要扩展的OID
-
/tmp/passtest6000.sh 管理端要执行get/set 等操作时,运行此脚本,并有两个传入参数
-
例如:snmpget -v 2c -c publuc localhost .1.3.6.1.4.1.2021.6000.1.0
-
snmpget命令执行之后 会自动执行以下命令
-
/tmp/passtest6000.sh -g .1.3.6.1.4.1.2021.6000.1.0
-
-
/tmp/passtest6000.sh 该脚本 的返回值,必须有的三个:OID和TYPE和VALUE
-
-
注意:pass 最后的.sh脚本文件,不能放在家目录中(否则扩展失败)。
配置v3
-
步骤
-
1、停止snmpd服务
-
2、net-snmp-config --create-snmpv3-user -a SHA -A 00001227 -x AES -X pri001227 wpx
-
2.1 使用net-snmp-config 来生成需要配置的内容
-
2.2 --create-snmpv3-user #生成v3的用户
-
2.3 -a SHA #选择密码加密算法(有两种 SHA和MD5)SHA算法安全等级更高
-
2.4 -A 00001227 #设置密码 对长度有要求,不能太短,最短8位。
-
2.5 -x AES #选择数据加密算法 (AES 和 DES)
-
2.6 -X pri001227 #设置数据加密的密钥
-
2.7 wpx #设置用户名称
-
2.8 执行该命令之后,会生成两行需要配置的内容。
-
2.8.1 createUser wpx SHA "00001227" AES pri001227
-
2.8.2 rwuser wpx
-
将2.8.1 和 2.8.2 的内容添加到 snmpd的配置文件/etc/snmp/snmpd.conf
-
-
-
3、service snmpd start 或 systemctl start snmpd.service启动snmpd服务
-
-
验证
-
snmpget -v 3 -u wpx -l authPriv -a SHA -A 00001227 -x AES -X pri001227 tcp:localhost:1611 1.3.6.1.4.1.2021.4.6.0
-
-u wpx #用户名
-
-l authPriv #选择登录模式
-
noAuthNoPriv (没有身份验证,没有数据加密)
-
authNoPriv (有身份验证,没有数据加密)
-
authPriv (有身份验证,有数据加密)
-
-
-a SHA -A 00001227 #密码加密的算法和密码
-
-x AES -X pri001227 #数据加密的算法和对应的密码
-
tcp:localhost:1611 #选择tcp协议 服务器是本机 端口号是1611
-
1.3.6.1.4.1.2021.4.6.0 #要查询的oid。
-
-
访问控制
-
v3的访问控制:
-
rwuser wpx auth -V wpxview (控制wpx用户,只能访问,wpxview中定义的oid)
- 注意: -V要大写
-
-
v2c 的访问控制
-
rocommunity wpx default -V testview(只能访问,wpxview中定义的oid)
- wpx 为v2的用户名。
-
-
相同的用户名可以用作v2 也可以用用作 v3 ,但是最终这个用户能get到哪些oid的信息,取决于登陆方式。
附:snmpd.conf 配置man帮助:Manpage of SNMPD.CONF