snmp 使用

本贴最后更新于 1311 天前,其中的信息可能已经时移世改

SNMP (simple network mangment protocol)简单网络管理协议,是为了应对如防火墙,路由器,交换机,F5 或者服务器甚至 PC 等品种繁多的网络设备而产生的一种通用协议。

介绍

设备中有许多基本信息,比如接口,主机名,ip 等,这些信息我们都可以使用 snmp 获取。那么在 snmp 中这些信息应该怎么被我们有规则的检索到呢?这时候就用到了 MIB 了,任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB 是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个 SNMP 设备(Agent)都有自己的 MIB。

我们可以通过对象标识来检索 MIB 数据库获得我们想要的信息。对象标识是一个整数序列,以点(.)分割,这些整数构成了一个树状结构,类似于 DNS 或者 Unix 的文件系统,对象标识从树的顶部开始,顶部没有标识。树上的每个节点同时还有一个文件名,为了方便阅读,MIB 变量名是以对象标识来标识的,都是以 1.3.6.1.2.1 开头,如下图:

image.png

也就是说我们只要知道我们所需要信息的对象标识,就可以通过 snmp 获取。

SNMP 报文

SNMP 定义了

  1. get 从代理进程提取一个或者多个参数值
  2. get-next 获取一个或者多个参数的下一个参数值
  3. set 设置代理进程的一个或者多个参数值
  4. get-response 获取前三个操作的响应
  5. trap 由代理主动进行推送的报文,通知事件发生,可预定触发的阈值

SNMP 往往使用 UDP 协议,默认端口 161

image.png

image.png

image.png

Centos 下安装 SNMP

使用 yum 安装

yum install -y net-snmp net-snmp-utils

启动 snmp

service snmpd start

关于 public 只能获取 system 信息的问题

打开 snmp 配置文件

vim /etc/snmp/snmpd.conf

如果想获取 ip 或者其他信息的话需要进行配置,centos 只允许查看系统信息,请注释掉一下两行,在加上一行允许 查看 .1 后面的所有节点信息。

#view    systemview    included   .1.3.6.1.2.1.1
#view    systemview    included   .1.3.6.1.2.1.25.1.1
view    systemview   included  .1
rocommunity public default

重启 snmp

systemctl restart snmpd

example

通过 snmp 获取主机名,通过谷歌可知 oid 为 1.3.6.1.2.1.1.5

可以通过 snmp 的 get 命令或者 walk 命令获取

snmpwalk -c public -v 2c -m ALL localhost .1.3.6.1.2.1.1.5
snmpget -c public -v 2c -m ALL localhost .1.3.6.1.2.1.1.5.0

如果请求的数据有多个 比如有多个接口请使用 walk 命令

下图是 windows 下的命令,需要下载工具 snmputil

snmputiljb51.rar

image.png

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...