什么是SNMP?在Linux上安装和配置SNMP

简单网络管理协议(SNMP)是一种Internet标准协议,可用于远程获取路由器和防火墙的操作统计信息。通常支持SNMP的设备包括路由器,交换机,服务器,工作站等。

诸如MRTG和cacti之类的监视工具使用SNMP从路由器获取信息并绘制图形。本教程描述了在Linux(CentOS 7,Ubuntu 16.04,Ubuntu 18.04)上SNMP的安装和简单配置。

基本概念

SNMP是在网络堆栈的应用层实现的协议。管理和监视网络元素的一种广泛接受的协议。创建该协议是为了以一致的方式从非常不同的系统收集信息。

通常,由SNMP配置的网络主要由包含SNMP代理的设备组成。代理是一个程序,可以收集有关硬件的信息,将其组织到预定义的条目中,并使用SNMP协议响应查询。 SNMP需要几个基本组件才能起作用。

  • 受管设备: 一台配置为轮询SNMP代理以获取信息的计算机。可以使用可以使用正确的凭据将查询请求发送到SNMP代理的任何计算机。 SNMP管理器的主要功能:查询代理,从代理获取响应,设置代理变量,检查来自代理的异步事件
  • 代理商: 这些是在受管设备上运行的软件。您负责收集有关本地系统的信息,并将其以可查询的格式存储。数据库更新称为 “管理信息库”(MIB)
  • 网络管理站(NMS): 运行监视和控制受管设备的应用程序。

MIB 遵循标准的数据库,经理和代理遵循。每个SNMP代理都有一个描述被管理设备参数的信息数据库。 SNMP管理器使用此数据库从代理请求特定信息,并进一步转换网络管理系统(NMS)所需的信息。该数据库通常在代理和管理器之间共享,是一个MIB。

SNMP版本

当前,有SNMP的三个版本。

  • SNMP版本1答:这可以在不消耗大量系统资源的情况下提供设备统计信息和错误报告。安全仅限于社区字符串和基于查询服务器的IP地址的访问控制。数据通信未加密。
  • SNMP版本2答:这称为v2c,它可以增加支持的错误代码的数量,增加用于跟踪数据的计数器的大小,并执行将数据更有效地加载到响应数据包中的批量查询。
  • SNMP版本3答:此版本比以前的版本提供更好的安全性和远程配置功能。由于引入了用户名和密码,因此访问权限不仅限于只读和读/写访问权限的单个社区字符串。还提供了对加密的SNMP数据传输和传输错误检测的支持。

目录

  • 1)在Linux上安装snmp
  • 2)SNMP配置
  • 3)SNMP服务测试
  • 结论

1)在Linux上安装snmp

在ubuntu和centos上引入snmp安装

  • 的Ubuntu
# apt-get install -y snmpd snmp
  • 美分
# yum install -y net-snmp net-snmp-utils

2)SNMP配置

SNMP服务的配置文件位于: /etc/snmp/snmpd.conf。修改文件之前,请使用命令制作文件副本

# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

以下是可用于配置SNMP的基本配置参数。

  • 设置 社区字符串 对于SNMP:类似于允许访问设备统计信息的用户ID或密码。客户端计算机使用此字符串来检索数据(生成监视图)。这是必需的配置参数。您可以确定它出现的位置 共同体 。默认值 该值是“ public”并且是不安全的,因为默认情况下每个人都知道它。
  • 听音地址: 您可以将SNMP代理配置为仅侦听特定IP地址,如下所示: agentAddress udp:ip_address:161。 SNMP侦听的默认端口是 161。代理的默认行为是在所有接口上侦听标准UDP端口。
  • 系统信息: 监控个人信息,进程/磁盘,
    • syslocation:这是 [typically physical] 系统位置。
    • syscontact:这是管理员联系信息。

更改的信息如下。请注意,该文件还有其他默认值,因此不会在此处显示

  • 的Ubuntu
#  Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161

#  ACCESS CONTROL
#
view   all  included   .1.3.6.1.2.1.1
view   all  included   .1.3.6.1.2.1.25.1

#rocommunity public  localhost
                                  #  Default access to basic system info
 rocommunity my_password  default    -V all
                                  #  rocommunity6 is for IPv6
 rocommunity6 my_password  default   -V all

sysLocation    linoxide
sysContact     Me 

#  ACTIVE MONITORING
#
                                  #   send SNMPv1  traps
 trapsink     localhost public
                                  #   send SNMPv2c traps
 trap2sink    localhost public
  • çentos
#       sec.name  source          community
com2sec notConfigUser  default       my_comm

# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1.3.6.1.2.1
view    systemview    included   .1.3.6.1.2.1.25.1

##        incl/excl subtree mask
view all    included   .1    80

# variables through the snmpd.conf file:
syslocation centos linoxide
syscontact admin 

要更改配置,您需要重新启动SNMP服务(/etc/snmp/snmpd.conf)举行。可以按照以下步骤进行:

# service snmpd restart

用systemd做

# systemctl restart snmpd.service

3)SNMP服务测试

您可以使用snmpwalk命令测试SNMP是否可以读取系统和接口MIB。

  • 的Ubuntu
# snmpwalk -c my_password -v2c -O e 127.0.0.1
iso.3.6.1.2.1.1.1.0 = STRING: "Linux ubuntu-01 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (1544) 0:00:15.44
iso.3.6.1.2.1.1.4.0 = STRING: "me "
iso.3.6.1.2.1.1.5.0 = STRING: "ubuntu-01"
iso.3.6.1.2.1.1.6.0 = STRING: "linoxide"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The MIB for Message Processing and Dispatching."
iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The SNMP Management Architecture MIB."
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (9971483) 1 day, 3:41:54.83
iso.3.6.1.2.1.25.1.2.0 = Hex-STRING: 07 E1 04 08 01 30 16 00 2B 00 00 
iso.3.6.1.2.1.25.1.3.0 = INTEGER: 393216
iso.3.6.1.2.1.25.1.4.0 = STRING: "BOOT_IMAGE=/boot/vmlinuz-4.4.0-66-generic root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0
"
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 1
iso.3.6.1.2.1.25.1.6.0 = Gauge32: 121
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
  • Centos
# snmpwalk -c my_comm -v1 -O e 127.0.0.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos-01 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (304) 0:00:03.04
SNMPv2-MIB::sysContact.0 = STRING: admin  (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: centos-01
SNMPv2-MIB::sysLocation.0 = STRING: centos linoxide
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (8) 0:00:00.08
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB

一旦确认SNMP正常运行,就可以配置SNMP统计信息以收集MRTG等软件来创建流量的在线图。

结论

在本教程中,您将学习如何在Linux上安装和配置snmp来监视网络设备。希望您喜欢阅读,并在下面的评论部分中留下您的建议。

另请阅读:

  • 如何在Ubuntu 16.04上安装和设置Cacti
  • 如何在Ubuntu 18.04上安装和配置MRTG
Sidebar