Classic Tools

阅读完本文之后,将可以:

  • 标识并且描述常见的TCP/IP连接工具
  • 使用连接工具排查问题
  • 解释SSH和Telnet的目的
  • 描述一些常见的网络管理协议

连接问题

具有代表性的前四个网络连接问题变化:

  • 协议功能障碍或配置错误:协议软件不工作或(无论什么原因)未正确配置地运行在网络上。
  • 线路问题:网线未插入或不正常工作。集线器,路由器或交换机未正常工作。
  • 错误的名字解析:域名系统(DNS)或NetBIOS名字不能被解析。资源能够通过IP地址进行访问但是不能通过主机名或DNS名字(quantuminit.com)。
  • 流量过大(Excessive traffic):网络是工作状态,但是工作很慢。

下面分别讨论解决这些常见连接问题的工具及技术。

Protocol Dysfunction and Misconfiguration

TCP/IP协议组提供许多有用的工具帮助确定TCP/IP是否功能正常并且正确配置,比如

  • ping:该工具是初始化一个简单的网络连接测试的诊断工具并且能够报告其他计算机或网络设备是否响应。
  • Configuration information utilities:每一个OS厂商提供某有种显示TCP/IP配置信息的工具并且可以用于检查是否IP地址,子网掩码,DNS服务器和其他参数是否正确配置。
  • arp:这个工具可以用于查看并且配置地址解析协议(ARP)缓存表的内容,缓存表中将IP地址和物理(MAC)地址关联起来。

Ping

ping工具能够初始化最小的网络连接测试。它发送一则消息给另外一台计算机,说”Are you there”并且等待其他计算机响应。

ping命令的基本形式:

1
ping IP_address  # IP_address是想要连接的那台计算机的地址。

ping工具的命令行选项根据实现和系统不同而不同。ping工具使用互联网控制消息协议(ICMPEcho Request命令发送一则消息到接收计算机。如果接收计算机存在并且运行,它会使用Echo Reply消息进行响应。

ping是一个最小的应用。它只需要TCP/IP协议栈中的网络接入层,该层与OSI模型中的底部三层相关。ICMP是一个OSI的三层协议。可能问题发生在传输控制协议(TCP),用户数据报(UDP),或是更上层的应用层并且ping依然能够正常运行。

Ping提供许多特别有用的选项用于网络问题排查。可以这么做有如下步骤:

  • 使用称为loopback地址(127.0.0.1)的特殊IP地址ping本地IP软件。如果命令ping 127.0.0.1成功,则TCP/IP协议软件能够正常运行。
  • ping自己的IP地址。如果能够ping通分配给网络适配器(网卡)的IP地址,就可以知道网卡已经正确配置并且正常地与TCP/IP软件进行交互。
  • 通过主机名来ping。大部分系统允许使用一个主机名替换ping命令中的IP地址。如果能够通过IP地址ping通一台计算机,但是不能通过它的主机名ping同样的计算机,就可以知道问题是和名字解析有关系。

在典型的网络问题排查场景中,一个网络管理员会执行如下ping命令:

  1. ping loopback地址(127.0.0.1)来验证TCP/IP在本地计算机上能够正常工作。
  2. ping本地IP地址来验证网络适配器处于运行状态并且配置了本地IP地址。
  3. ping默认网关来验证计算机能够与本地子网通信并且验证网关的是处于运行状态的。
  4. ping在默认网关外的一个地址来验证网关能够成功地转发超出本地网络段的数据包。
  5. 通过主机名ping本地主机和远程主机来验证名字解析功能是正常的。

某些管理员更喜欢反方向按步骤执行这些ping命令。其目的都是一样的:隔离出通信失败的地方。所有的Unix和Linux系统,包括MacOS都含有ping命令,旧版本地Windows系统也使用ping。在Windows PowerShell环境中,Test-NetConnection命令等同于经典的ping。

ping发送ICMPEcho Requests并输出响应,偶尔丢失的数据报不能将其考虑为网络连接失败,因为ICMP不保证传输的可靠性。然而,丢失的响应暗示网络过于拥挤。一些ping工具版本用毫秒来表示从发送Echo Request消息到Echo Reply消息返回所用的时间。响应时间短表示数据报不必要经过太多的路由器或慢速的网络。如果ping命令返回一个接近于0的Time To Live(TTL),可能表示连接靠近TTL的阈值并且一些数据报丢失了或重新发送了。

Configuration Information Utilities

UNIX和Linux系统使用ifconfig命令来显示地址信息。如果一台计算机含有两个网卡,就会有两个IP地址。ifconfig命令显示和每个网卡相关连的地址信息。

使用ifconfig显示IP地址信息:

1
ifconfig interface_name

interface_name是想要查看地址信息的网卡的名字。(在Unix和Linux中,每个网卡通过定义接口的配置文件分配一个名字并且通过那个名字进行引用。)例如,

1
ifconfig eth0  # 显示eth0当前的IP地址和子网掩码等等

使用ifconfig给网卡配置IP地址,子网掩码:

1
ifconfig eth0 <IP_address> netmask <netmask>

ifconfig upifconfig down选项能够用于启用和停用网卡。例如

1
2
ifconfig eth0 up
ifconfig eth0 down

使用man ifconfig查看更多的关于ifconfig更多可用选项。旧版本的Windows系统使用ipconfig。在PowerShell环境中,Get-NetIPConfiguration命令最接近等同于ipconfig。

更新的并且更加通用的ip工具逐渐替换ifconfig成为Unix/Linux系统上基本的TCP/IP配置工具。

Address Resolution Protocol

在TCP/IP网络上每台主机维护一个ARP缓存表——一个用于关联IP地址到物理地址的表。使用arp命令查看本地计算机或另外一台计算机的ARP缓存表的内容。大部分情况下,协议软件负责更新ARP缓存表并且使用arp命令进行网络故障排障的情况很少。

可以使用arp命令来手动设置想要的物理/IP地址对。这个方法有助于减少网络上的流量(尽管在小型网络上没必要这么做)。ARP缓存表中的条目默认是动态变化的:条目自动添加到缓存中无论何时发送数据报并且一条当前条目不存在目的计算机的缓存表中。缓存条目一旦输入即开始过期。缓存条目可以通过执行另一台计算机或路由器的ping来添加。使用arp命令查看缓存条目:

  • **arp -a**:用于查看所有的ARP缓存条目
  • **arp -g**:用于查看所有的ARP缓存条目
  • **arp -a <IP_address>**:如果有多张网卡,可以通过使用arp -a加上网卡接口的IP地址来查看和这个接口关联的ARP缓存条目
  • **arp -s**:手动添加一个永久的静态条目到ARP缓存表中。此条目保持有效直到计算机重启并且如果使用手动配置物理地址时产生错误,条目将会被自动更新。例如,arp -s 192.139。10.1 00-9f-ef-ac-23-79
  • **arp -d <IP_address>**:用来手动删除一条静态条目。例如,arp -d 192.139.10.1

Line Problems

网络集线器或网线问题实际上不是TCP/IP问题。但是依然可以使用TCP/IP工具比如ping来诊断网络线路问题。通常情况下,如果网络过去都是能正常工作的并且突然停止工作,原因可能就是网路线路出故障了。大多数的网卡,集线器,交换机以及路由器都有暗示这个设备处于工作状态并且准备接收数据的显示灯。集线器,路由器或交换机的每个端口都有一个显示是否有活跃的网络连接通过这个端口处于运行状态的连接状态灯。

可以使用ping来隔离网络线路问题。如果一台计算机能够ping通自己的地址但是不能ping网络上任何其他地址,问题的可能存在在连接计算机到本地子网中的网络线路中。

Name Resolution

名字解析问题发生在当发送一则消息给一台主机时主机名不能够在网络上被解析出来。事实上,大多数常见名字解析问题的共性是源计算机能够通过IP地址到达目标计算机,但是不能通过主机名到达目标计算机。作为实际问题,在今天互联网上的资源是通过主机名进行读取的,并且第一次尝试连接一台主机可能是通过名字。如果尝试失败,可以通过ping的问题排查步骤来解决问题。如果仍然能够通过IP地址连接,那么可能问题出在了名字解析上面。

一些名字解析问题常见的原因:

  • hosts文件丢失或不正确
  • 名字服务器掉线或不可达
  • 在客户端配置中名字服务器没有被正确地引用
  • 尝试到达的主机在名字服务器中没有主机名条目
  • 在命令中使用的主机名是不正确的

如果在一个使用名字解析的网络上正经历名字解析问题,通过ping名字服务器来确保它在线是一个很棒的做法。如果名字服务器在本地子网之外,通过ping网关来确保名字解析请求能够到达名字服务器。多次检查输入的名字确保它是资源的正确名字。如果这些方法都不能得出一个解决方案,则可能需要使用nslookup工具来查询关于指定主机名条目的名字服务器。nslookup工具工作模式。PowerShell中等同于nslookup的工具是Resolve-DNSName。使用hostanme查看当前工作计算机的主机名。

Network Performance Problems

因为TCP/IP协议通常使用TTL设置限制网络上一个数据包的时间,网络性能低能够导致丢包并且因此丢失连接。即使为丢失连接,低效的网络性能可能是一个烦恼并且生产力下降的源头。造成糟糕的网络性能的通常原因是过多的流量。因为网络上有太多的计算机,所以可能网络中流量过于繁重,或者这个原因可能是一个有故障的设备比如一个网卡在网络上创建不必要的流量,在网络上又称为广播风暴(broadcast storm)。有时候,造成糟糕的网络的原因是一个宕机的路由器停止转发流量并在网络中某处产生了瓶颈。

Traceroute

traceroute工具用于跟踪当数据报从本地计算机通过多个网关到达目的地要经过的路径。如果要使用域名系统(DNS),经常可以从响应中确定城市的名字,区域以及通用的运输人。traceroute工具利用ICMP协议来定位每个处在客户端计算机和目的计算机之间的路由器。TTL的值告知一个数据包经过的路由器后网关的数量。通过操作在发送出去的ICMPEcho信息中的TTL的值,traceroute能够找到路径上的每个路由器,如下:

  1. 一个ICMPEcho消息被发往目的IP地址,TTL的值设置为1。第一个路由器从TTL值中减去1,这造成TTL的值为0.
  2. 因为TTL值现在被设置为0,路由器知道不应该做转发数据报的任何尝试并且简单地丢掉它。数据报的TTL值已经过时。路由器发送一个ICMP TIme Exceeded-TTL Expired In Transit消息回给客户端计算机。
  3. 运行traceroute命令的客户端计算机显示这个路由器的名字,然后发送出另外一个含有值为2的TTL的ICMP Echo消息。
  4. 第一个路由器从TTL值中减去1,并且如果可以,则沿着路径转发数据报到它的下一跳(next hop)。当数据报到达第二个路由器时,TTL值又再次减1,导致TTL的值为0。
  5. 第二个路由器,像第一部中一样,简单地丢弃数据包并使用和第一个路由器使用同样的方式返回一个ICMP消息给发送端。
  6. 随着traceroute不断增加TTL的值并且路由器不断减小这个值直到数据报最终到达它的目的地,这个过程都在在持续地进行。
  7. 当目的计算机接受ICMPEcho消息时,它发送会一个ICMP Echo Reply消息。

除了定位数据报通过的每个路由器或网关,traceroute工具还记录到达买个路由器所用的round-trip时间(RTT)。根据实现方式的不同,`traceroute可能实际上发送多于一个Echo消息到路由器,目的是为了能够更好地判断round-trip时间。

不应该使用通过traceroute获得的round-trip时间值来明确地评判网络的性能。许多路由器会简单地给ICMP流量更低的优先权并消耗大量的处理时间来转发更多重要的数据报。

traceroute命令使用例子,命令后面跟IP地址,DNS名字或一个URL:

1
2
traceroute 193.138.240.91  # 跟IP地址
traceroute quantuminit.com

旧版本的Window系统使用tracert命令作为等同于traceroute的命令工具。在Powershell系统上,TraceRoute是一个Test-NetConnection命令的选项:

1
test-NetConnection www.example.com -TraceRoute

Route

大多数路由器使用特殊的路由协议来交换路由信息并且动态地有周期地更新它们的路由表。在路由器和计算机上可以手动多次地添加路由条目到路由表中。

route命令在TCP/IP网络中有许多用得到的地方。可以使用route来显示路由表中来自一台主机的数据包不能够被高效地路由的情况。如果traceroute命令显示出一个反常的或不高效的路径,可能需要route来确定为什么正在使用的那条路径并且可能得配置一条更高效的路由路径。

route命令也可以用于手动添加,删除并更改路由条中路由条目。Windows系统上route命令使用例子:

  • route print:显示路由表中的当前的路由条目。

https://i.quantuminit.com/7e3f5ca7c9b64dd6.png

  • route add添加一条新的路由条目到路由表中。例如,为了指定一个路由到目的网络202.34.17.0是5跳的距离并且首先传进一个带有在本地网络192.59.66.5上的一个IP地址的路由器并且子网掩码是255.255.255.224,输入如下命令:
1
route add 207.34.17.0 mask 255.255.255.224 192.59.66.5 metric 5

手动添加的路由条目,在计算机或路由器重启之后会丢失。经常将一系列的route add命令放到一个开机启动脚本中,这样每次启动的时候,都能够使用这些路由。

  • route change:更改路由表中的条目。下面的例子是更改数据路由到一个有更多更直接的three-hop路径到目的地的不同的路由器:
1
route change 207.34.17.0 mask 255.255.255.224 192.59.66.7 metric 3
  • route delete:从路由表中删除一个条目。
1
route delete 207.34.17.0

Netstat

netstat工具显示和IP,TCP,UDP以及ICMP协议相关的统计数据。统计数据显示比如发送的数据报,接收的数据报以及各种各样可能已经发生的错误。

计算机有时候会接收到的引发错误,丢弃或是失败的数据报。产生丢弃是因为数据报传输到了错误的位置。如果是一个路由器,当在路由的数据报中的TTL值到达0时,也会丢弃数据报。重组失败发生是在所有的分片数据基于接收的数据报中的TTL值一段时间内不能到达。

netstat命令选项描述:

  • netstat -s:用于分协议显示每个协议的统计数据。
  • netstat -e:用于显示关于以太网的统计数据。列出来的项目包括总共的字节,错误,丢弃数据,定向数据报的数量以及广播数量。这些统计数据都是发送和接收的数据报。
  • netstat -r:用于显示与route print命令相似的路由表信息。除了活跃的路由之外,还显示当前活跃的连接。
  • netstat -a:用于显示所有活跃连接,包括建立的连接和那些正在监听的连接请求。
  • netstat -n:显示所有的活跃的连接
  • netstat -p TCP:用于显示建立的TCP连接
  • netstat -p UDP:用于显示建立的UDP连接

https://i.quantuminit.com/0b1132c475d849a9.svg

Windows PowerShell environments 使用等同于netstatGet-NetTCPConnection命令。

Telnet

telnet是一系列提供terminal-like访问一台远程计算机的组件。他曾经是最常见的用于达到使用命令行访问一台远程计算机的方式。然而最近几年,更加安全的SSH协议成为终端访问的标准。

Telnet会话需要一个充当远程终端的Telnet客户端和一个接收连接请求并且允许连接的Telnet服务器。

https://i.quantuminit.com/ac16e131fdcb42c5.svg

Telnet也是一个协议——一个定义在Telnet服务器和客户端之间交互的规则系统。

在Unix系统上,telnet命令像下面一样在命令提示符后面输入:

1
$ telnet hostname  # hostname是想要连接的计算机的名字。hostanme可以换成IP地址。启动telnet应用程序。

telnet也提供一些可以在Telnet会话中使用的特殊命令:

  • close:用于关闭连接
  • display: 用于显示连接设置,比如,终端模拟器的端口
  • envriton:用于设置环境变量。由操作系统使用的环境变量来提供机器指定或用户指定的信息。
  • logout:用于登出远程用户和关闭连接
  • mode:用于在ACSII或二进制文件传输模式中进行切换。ASCII模式设计用于文本文件的高效传输。二进制模式用于其他的文件类型,比如可执行文件和图形图像。
  • open:用于连接一台远程计算机
  • quit:用于推出Telnet
  • send:用于发送特殊的Telnet协议序列给远程计算机,比如一个终止序列,一个间断序列或一个文件结束(end-of-file)序列
  • set:用于设置连接参数
  • unset:用于复原连接参数
  • ?:用于打印帮助信息

Berkeley Remote Utilities

Berkeley Software Distribution Unix实现,称作BSD Unix,是Unix发展过程中的主要步骤。BSD Unix的理念中的一个是设计用于提供远程访问的一小部分命令行工具。这些工具又称作Berkeley r*工具,因为每个工具的名字的开头都是表示remote的r。

一些Berkeley r*工具:

  • Rlogin:允许用户远程登录
  • Rcp:提供远程文件传输
  • Rsh:通过rshd守护程序执行一个远程命令
  • Rexec:通过rexecd守护程序执行一个远程命令
  • Ruptime:显示运行时的系统信息以及连接的用户数量
  • Rwho:显示当前连接的用户的信息

r*工具使用一个称为trusted access的概念。Trusted access允许一台计算机信任另外一台计算机的验证。如下图所示,如果计算机A将计算机B指定为一台信任的主机,那么登录到计算机B的用户可以使用r*工具在不提供密码的情况下访问计算机A。计算机A也可以指定特定的用户为信任的用户。被信任的主机和用户被标识在用户尝试访问的计算机上的/etc/hosts.equiv文件中。每个用户主目录中的rhosts文件也能够被用于授予访问到该用户帐号的权限。

https://i.quantuminit.com/41aa727931764c37.svg

hosts.equiv和rhosts文件的脆弱性是r*工具不再被认为是安全的原因之一。

Secure Shell

当今网络上,远程shell会话常常通过一套协议和在集中在Secure Shell(SSH)集合下的工具来管理。SSH本质上等同于只是携带了公钥加密的Berkeley r*工具的实现。SSH集合中的主要部分:

  • ssh:一个替代rlogin,rshtelnet的远程shell程序
  • scp:一个替代Rcp的文件传输工具
  • sftp:一个替代FTP的文件传输工具

最受欢迎的SSH实现是自由的OpenSSH项目,该项目在Unix,Linux,Windows以及Mac OS上都可用。OpenSSH含有一些用于管理密钥签名和加密的额外工具。使用Openssh并在提示符后面提供密码登录到一个远程系统之后,就可以像在本地命令shell一样操作。

除了提供安全的远程shell连接,SSH也支持端口转发的形式,目的是其他不安全的应用程序能够通过SSH的加密连接安全地运行。
大部分的现代的操作系统都带SSH客户端程序,但是不能连接一个远程计算机除非SSH服务运行在远程系统上。

Network Management

管理大量计算机的的IP专家需要效率更好的管理工具作为第二种选择。网络管理工具让用户配置,监控并且管理远程系统和来自单一接口的设备。这些工具不仅是等待用户查找出问题。运行在远程系统上的代理用户程序能够自动地发挥状态信息,以及如果硬盘空间,资源使用或网络性能超过与预先设置的阈值时,系统甚至会通过邮件或文本消息来警告用户。

两个经常被许多网络管理工具使用的协议——简单网络管理协议(SNMP)和远程监控(RMON)协议。自从像SNMP这样子的工具发展以来,得到许多网络硬件和软件公司支持的DMTF已经推出了比如WBEM以及CIM等标准,这些标准给开发者和硬件厂商开发出与网络管理工具通信的驱动程序提供了更通用的方案。

Simple Network Management Protocol

SNMP是一个设计用于管理并且监控网络上的远程设备。SNMP支持一个让一个网络管理员管理从单个工作站到远程管理并监控计算机,路由器以及其他设备的系统。

SNMP架构的主要部分:

  • Network monitor:一个称为管理员或网络管理的控制台的管理控制台提供一个用于管理网络上的设备的中心位置。网络网络监视器尝试是一个安装了必要的SNMP管理软件的普通计算机。
  • Nodes:网络上的设备
  • Community:在常见的管理网络中的一组结点。

https://i.quantuminit.com/04e38dabad224e5b.svg

协议给通信提供方案,但是实际的交互发生在运行在通信设备的上的应用程序。在SNMP例子中,一个称为代理的程序运行在远程结点上并且与运行在网络监视器上的管理软件进行通信。

https://i.quantuminit.com/94cf26bf255f4925.svg

监视器和代理使用SNMP协议来通信。SNMP使用数据报(UDP)协议端口161和162。通过community name来提供安全,社区的名字又称为community string。(你得知道连接的community string)。在某些情况下,也可以配置代理只接收来自特定IP地址的数据。最新办的SNMP版本,SNMP v3,为系统提供了验证,隐私以及更好的完整的安全。

SNMP定义大量的管理参数。网络监视器使用这个管理信息基础(MIB)来请求来自代理的信息并且更改配置设置。

The SNMP Address Space

SNMP进程都是在监视器和代理软件上运行的,它们能够交换关于在MIB中的特定的可寻址位置的信息。MIB允许监视器和代理准确并且无二异性的交换信息。监视器和代理需要相同的MIB结构,因为他们必须能够独一无二地识别一个特定单元的信息。

https://i.quantuminit.com/e4dc8016a4bd4bce.svg

MIB是一个含有每小块信息的一个唯一地址的层次地址空间。注意MIB地址不像网络地址一样,在地址中它们表示一个位置或实际的设备。MIB使用点状助记符号标识在MIB对象中的每个唯一的地址。

大部分的在MIB中的可寻址的位置涉及到计数器(counter),该计算器明显是数字。例如ipForwarding,或计算接收到的进来的数据报数量的ipInReceives。

MIB是有层次地安排进入一个地址空间的一个参数集合。层次性的地址结构确保了所有的SNMP设备以同样的方式查询特定的设置。这个方法还方便于去中心化。

MIB信息可以存在任何多种形式:数字(numeric),文本(texual),IP地址等等。MIB结构是一个总是起始于根(root)并沿着层次结构向下处理直到能够唯一识别想读取设置的地址。例如为了处理ipDefaultTTL以及ipInReceiveMIBs,SNMP监视器会发送如下MIB地址该SNMP代理:

.iso.org.dod.internet.mgmt.mib.ip.ipDefaultTTL
.iso.org.dod.internet.mgmt.mib.ip.ipInReceives

每一个MIB树中的位置也有一个同等的数字地址。可以通过一个字母数字字符串或它的数字地址查询到一个MIB。事实上,网络监视器向代理查询信息时使用的是数字的形式。

.1.3.6.1.2.1.4.2
.1.3.6.1.2.1.4.3

SNMP Commands

网络监视代理软件能够响应三个命令:getgetnextset。它们的命令功能:

  • get:指导代理读取并从MIB中返回一个特定的信息单元。
  • getnext:指导代理读取并且从MIB中返回下一个序号的信息单元。例如,可以用于读取一个有许多个值的表。
  • set:指导代理设置可配置的参数或重设一个对象,比如一个网络接口或一个特定的计数器。

SNMP软件实际上根据网络管理员的需求能够用多种不同的方式运行。不同类型的SNMP行为:

  • 网络监视器代理总是以查询/响应的方式运行。它能够接收来自监视器的请求并且响应监视器的请求。代理收到getgetnext命令的两者中的一个并从一个可寻址的位置返回信息。
  • 尽管有第二种选择,代理经常配置为当发生异常事件时发送未经请求的信息给网络监视器。这些未经请求的消息又称为陷阱信息(trap messages)或陷阱(traps)。例如,SNMP代理软件总是运行在监控是否超过固定阈值的模式中。阈值可以使用set命令来设置确定。一个阈值被超过的事件中,代理捕获到该事件,然后构造并发送一个未经请求信息给网络网络监视器,标识事件发生的计算机的IP地址,还有被超过的哪个阈值。
  • 代理也能够接收来自监视器请求来执行确定的动作,比如重置一个路由器上的一个特定端口或设置使用在捕获事件中的阈值等级。再次强调,set命令用于设置可配置的参数或重置计数器或接口。

在很多SNMP系统上,默认的社区名字是public

SNMP缺点:

  • 不能看到更低的协议层:SNMP处在UDP上面的应用层,所以不能看到发生在协议栈中更底层发生的事情,比如发生在网络接入层的事情。
  • 需要一个运行的(operational)协议栈:SNMP监视器和代理需要一个完全运行的协议栈来进行通信。如果有阻止这个栈正常运行的网络问题,SNMP不能协助排查这个问题。
  • 会产生大量的网络流量:SNMP使用的查询响应机制会引起大量的网络流量。尽管当繁盛重要时间时,才会发送未经请求的信息,但实际中网络监视器生成固定的数量的网络流量,因为它们向代理查询特定的信息。
  • 提供的数据太多以及信息量太少:在一个MIB中含有数以千记的地址位置,因此能够获取到很小部分的信息。然而,需要功能强大的管理控制台来分析这些细节并且能够提供关于发生在特定机器上的事情的有用的分析。
  • 提供一个计算机视角而不是网络:SNMP设计用于系统关于特定设备的信息。不能直接地看到发生在网络段上的事情。

Remote Monitoring

RMON是MIB地址空间的一个扩展并且为了远程局域网络(LANs)的监控和维护而开发。不想SNMP,它提供从单台计算机获取来的信息,RMON直接从网络媒体获取数据并且因此提供关于LAN的整体的观察。

RMON MIB在地址位置 .1.3.5.1.2.1.16处开始并且当前被分割成20个组,.1.3.6.1.2.1.16.1到.1.3.6.1.2.1.16.20。由IEFT开发的RMON使用来解决SNMP的缺点的和给在远程局域网络上的流量提供更广阔的可见性。

RMON版本:

  • RMON 1:RMON 1面向于监视以太局域网。所有在RMON 1中的组关注于监视OSI模型中的底下两层,即物理层和数据链路层(与TCP/IP模型的网络接入层相对应)。
  • RMON 2:RMON 2 提供RMON 1的功能并且也能够让用户监视OSI模型中的更上面的五层(与TCP/IP中的网络层,传输层,应用层相对应)。

RMON的目的是捕获网络流量数据。一个RMON代理(或者probe)监听一个网络段并且转发流量数据到一个RMON控制台。如果网络含有多个段,不同的代理监听每个段。RMON信息被手机在和不同类型的信息相关的统计数据组中。RMON 1组名字如下:

  • 以太网统计数据:这个统计数据组拥有以表的形式给每个和代理相连的网络段的统计信息。在这个组中的一些计数器跟踪数据包的数量,广播的数量,冲突的数量,过小以及超大的数据包的数量等等。
  • 以太网历史:以太网历史组拥有阶段性编辑以及为了将来的读取而存储的统计信息。
  • 历史控制:历史控制组含有管理数据样本的控制。
  • 警告:警告组联合事件组一起工作。警告组阶段性的检查来自监视器(probe)内部变量的统计样本并且将它们与设置阈值进行比较;如果超过了这些阈值,则生成能够用于通知网络管理员的事件。
  • 主机:主机组为网络段上的每个主机维护统计数据;通过检查数据报中的源以及目的物理地址来知道这些主机。
  • 前n组主机:主机前n组用于生成报告。该报告基于在特定分类中的前n台主机的统计数据而生成。例如网络管理员想要知道哪台主机出现在最多的数据报中,或哪台主机发送最大或最小的数据报。
  • 矩阵(matrix):矩阵组为每个网络上被监视的数据报构造一个含有源物理地址和目的物理地址对的表。那些地址对定义了在两个地址间的通信。
  • 过滤器(filter):过滤器组允许生成能够用于匹配,或过滤来自网络的数据报的二进制模式。
  • 包捕获(packet capture):数据包捕获组允许捕获由过滤组选择数据报,以供以后网络管理员进行检索以及检查。
  • 时间(Event):事件组与警告组联合工作,在一个被监视对象的阈值被超过时生成能够通知网络管理员的事件。

小小的总结

  • SNMP主要使用UDP端口161;端口162用于SNMP的陷阱(traps)。
  • SNMP最初拥有监控网络设备。RMON直接总网络媒体捕获数据并且因此总是用于监控网络流量的更好的选择。
  • arp查看ARP缓存表。
  • netstat -r打印出路由表,等同于使用route命令。
  • netstat -t打印出通过TCP连接的主机。

上一篇
下一篇