在本文中,作者将向我们展示如何用snmp代理监视网络设备,甚至发送软件警告。


网络上很多代理在为我们服务。只要我们开启UDP/161,162端口,这些代理就会以Management Information Base (MIB)的形式给我们提供大量的网络设备信息。

有兴趣的话,你可以在网上找一堆带有SNMP (Simple Network Management Protocol) 代理监听器的网络管理软件,如SpiceWorks, Net-SNMP, NetXMS, Nagios, Zenoss等,然后找个提供Wi-Fi的网络咖啡店。如果运气好,你能找到一大堆各种各样的网络设备和同时使用网络的其它终端。

SNMP considerations

下面是我列出的使用snmp代理的优点和不足,具体情况我会在后面详细说明。

优点

l 入侵检测

l 快速网络扫描

l 交换机单点故障检查

l 硬件故障预先报警

l 性能监控

l 软件故障和异常检测

l 工业化标准,设备交互的最佳实践

不足

l 误报

l 日志管理

l 信息太多,不方便筛选

l 复杂的监控环境

l 配置管理

l 代理认证和默认的公共设置

l 多种代理信息格式

SNMP 基础

SNMP的本质是基于代理的通告系统。每个设备,甚至是很多低端的交换机和打印机,都支持这种基于代理的通告。这种通告,或者所谓的 "trap,"是由设备厂商所开发的代理功能来生成的,监听软件可以监控系统的特殊事件,比如事件日志中的某类特殊事件,然后将通告发送给SNMP处理器或者其他网络管理工具。

SNMP可 以看做是目前众多功能类似的网管框架之一,此类管理框架还包括Microsoft Windows Management Instrumentation (WMI),Web Based Enterprise Management (WEBM) 以及 Common Information Model (CIM)。CIM 已经发展成一个完整的对象模型,采用DMTF并使用UML语言。

Windows 或 Linux下的SNMP

Microsoft在WMI中完全兼容CIM 模型。比如,在Vista, Windows 7, 或 Server 2008系统中,打开命令行窗口输入以下命令:

winrm enumerate wmicimv2/Win32_ComputerSystem

这个命令会显示出电脑系统的基本硬件信息,比如主板厂商名称,另外还包括域成员名称,管理账户密码状态,服务器角色,当前用户名,主机名,启动项等各种内容。通过 WMI,用户可以对系统信息了如指掌。图 A 所显示的是开启SNMP的图表。类似的监控功能在Linux上也存在。比如,免费的WebNMS就带有一套snmp代理功能,同时还提供了通过HTTP的管理方式。

图片来自SNMPBOY.MSFT.NET

是否值得

心急的网管们这时候可能就会问,到底学习SNMP和相关内容需要多少成本呢。Distributed Management Task Force (桌面管理任务组,DMTF)是SNMP的知识库也是与SNMP关 系最密切的组织,他们坚持认为,他们的教材适用于"管理应用程序开发者,架构开发者,信息技术经理以及系统管理员。" 这可能有点夸张。而CIM Road Map Task Force 的Scott Neumann则将CIM称为"描述网络的最成熟和广泛接受的模块"。也就是说,这个模块像网络一样深入、复杂、宏大和特异。

SNMP软件

snmp代理程 序并不只针对硬件。实际上, Oracle Enterprise Manager (OEM)被修改后,可以针对来自于Oracle VM, Oracle Database, 或 Fusion Middleware的警告信息作出反应。这里所说的是Oracle提供的 Contact Center Anywhere (CCA) 程序。他不但可以让 SNMP用户拥有常用的与电话相关的管控能力,还提供诸如软件许可失败,"恶意呼叫追踪",自动呼叫分布语音信箱等功能。也就是说,SNMP程序是可以被调整的,以便让管理者更好的理解其性能,也可以拥有在一定条件下自动升级的能力,或者适应于企业特定的工作流程。软件通过设计,能够实现令人兴奋的结果。

不过这个谍对谍的世界总是充满了风险。SNMP最初的设计者对周围的环境过于信任,并没有考虑安全问题。SNMP的"community strings"功能就像管理者和代理之间的密码。community string出现在这两者之间通信的所有数据包中。不要冒险让你的snmp代理变 成双面间谍。也不要接受默认的"public" 或 "private"的community strings。 "Private"尤其容易出问题,因为它可以允许攻击者修改设备配置。如果不得不采用默认的"private"的community strings,那么就要限制能够访问SNMP的IP地址,从而确保通信安全。SNMP Version 3新增了代理加密功能,可以有效降低man-in the-middle类型的攻击,但并不是所有网络设备都支持这种功能。

购买注意事项

全面的购买指南肯定要比本文详细的多,所以我在这里只提供几个重要的购买注意事项:

l 记住就算一个很小的网络也会拥有上百甚至上千个"设备"。如果价格是根据设备的数量来定的,那么要注意了。

l "自动网络发现"是一个很好的概念,但是它是假设所有状况都是理想情况,比如所有的代理和管理者能彼此看到对方。

l SNMP监控有托管方式的,也有网络内部自己管理的。

l 要把时间成本加入其中。虽然不比一次搞定所有设置,但是在SNMP警告信息的简历方面,可能耗时比较多。

snmp获取设备相关管理信息的更多相关文章

  1. ios 获取设备相关的信息

    .获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name; //获取设备所有者的名称 NSStr ...

  2. C# 获取操作系统相关的信息

    本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件.硬件相关信息,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Envir ...

  3. 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]

    使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...

  4. 获取设备和 App 信息

    设备对照表:https://www.theiphonewiki.com/wiki/Models 获取设备和 App 信息代码: NSLog(@"设备信息如下"); NSLog(@& ...

  5. [Android]获取设备相关信息

    public static int screenWidth(Activity activity) { DisplayMetrics dm = new DisplayMetrics(); activit ...

  6. iOS ---------- 获取设备的各种信息

    一.目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前系统名称 获取当前系统版本号 获取通用的唯一识别码UUID 获取当前设备IP 获取总内 ...

  7. iOS 获取设备的各种信息的方法

    一.目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前系统名称 获取当前系统版本号 获取通用的唯一识别码UUID 获取当前设备IP 获取总内 ...

  8. ios 获取手机相关的信息

    获取手机信息      应用程序的名称和版本号等信息都保存在mainBundle的一个字典中,用下面代码可以取出来 //获取版本号 NSDictionary *infoDict = [[NSBundl ...

  9. Android开发之获取设备的屏幕信息和px dp之间的转换

    DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metr ...

随机推荐

  1. javascript之分时函数

    在一些开发场景中,我们可能会一次性向文档中注入上千个节点,在短时间内向浏览器中大量添加DOM节点可能会让浏览器吃不消,结果往往会让浏览器卡顿或吃不消,解决方案之一便是使用分时函数(timeChunk) ...

  2. UVA-11212 Editing a Book (IDA*)

    题目大意:将一个数字序列以最少的剪切次数粘贴成另一个数字序列. 题目分析:很显然,最坏的情况是需要n-1次剪切,搜索层数不多,但每一层的状态数目又非常庞大,适宜使用IDA*.考虑每一个序列后续不正确的 ...

  3. 大于号转义符>---小于号转义符<

    < < < 小于号 > > > 大于号 ≤ ≤ ≤ 小于等于号 ≥ ≥ ≥ 大于等于号 " " " 引号 “ “ “ 左双引号 ” ” ...

  4. winform学习目录

    Winform混合式开发框架的特点总结 伍华聪 2016-02-26 10:47 阅读:1966 评论:2     代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能  ...

  5. javascript递归导致的堆栈溢出

    function foo() {foo(); //setTimeout(foo, 0);   } foo() 原因是每次执行代码时,都会分配一定尺寸的栈空间(Windows系统中为1M),每次方法调用 ...

  6. 20181009-6 选题 Scrum立会报告+燃尽图 05

    Scrum立会报告+燃尽图(05)选题 此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2195 一.小组介绍 组长:刘莹莹 ...

  7. 自定义ViewPagerIndicator

    1. 简介 学习Android,自定义View不可避免,之前一直忽视这块内容,现在开始学,应该不算太晚.从常见的ViewPagerIndicator开始,当然,万能的Github上包罗万象,好用的in ...

  8. Winform工具栏ToolStrip和状态栏StatusStrip

    工具栏和状态栏的设置与前面的菜单基本相似 1.ToolStrip 从工具栏选项卡上拖一个放入窗体即可,位置也是通过其Dock设置的.先上一张图,红色部分就是工具栏,工具栏中可以放置如图下拉菜单中的Bu ...

  9. 回测框架pybacktest简介(一)

    pybacktest 教程 本教程让你快速了解 pybacktest's 的功能.为此,我们回测精典交易策略移动平均线MA交叉. MA快线上穿慢线时,买进做多 MA快线下穿慢线时,卖出做空 进场规则, ...

  10. [QT][SQLITE]学习记录一 querry 查询

    使用 QSqlQuery query ; query("SELECT id FROM TABLE1 WHERE id = '2017'); 的到的结果集就是query本身,此时需要使用 qu ...