你的网络的秘密生活,第二部分
很多人确实将所有东西都放在一个网络中,因此监视该网络是值得的。不幸的是,发生了很多事情,而且很难想象这一切看起来是什么样子。
我在上一篇文章中尝试做的事情之一是表明我们不应该忘记系统自带的基本工具。许多那些很棒的炫酷程序在其光鲜亮丽的表面之下都使用了这些工具——我们为什么不也这样做呢?我们很快就会变得炫酷起来;但现在,我想看看其他一些不太引人注目的网络监控工具,并向您展示它们所具有的一些强大功能。然后我们会搞一些炫酷的东西,我保证。
好的,你们都知道 ping 命令。ping 的官方目的是向远程主机发送 ICMP ECHO_REQUEST 数据包。这个名字来源于潜艇发送的雷达 ping,用于探测水下的其他潜艇或船只。在其最基本的形式中,ping 可以让我们知道是否可以访问远程主机。如果我想查看 www.linuxjournal.com 是否在线(除了使用浏览器这种聪明的方法之外),我可能会使用以下命令
$ ping -c 4 www.linuxjournal.com
-c 标志告诉 ping 只发送四个数据包。回复看起来像这样
PING www.linuxjournal.com (64.39.18.136) from 192.168.22.100 : 56(84) bytes of data. 64 bytes from 64.39.18.136: icmp_seq=0 ttl=241 time=76.4 ms 64 bytes from 64.39.18.136: icmp_seq=1 ttl=241 time=73.0 ms 64 bytes from 64.39.18.136: icmp_seq=2 ttl=241 time=74.8 ms 64 bytes from 64.39.18.136: icmp_seq=3 ttl=241 time=74.8 ms --- www.linuxjournal.com ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 73.0/74.7/76.4 ms
我们会得到一个很好的小显示,告诉我们数据包往返时间,以及在四个 ping 过程中该时间的平均值。好吧,如果我对本地网络上的主机(在本例中是一台运行 Windows 95 的笔记本电脑)执行此操作,我会得到类似于上面的响应(当然,往返时间要短得多)。该 PC 的地址为 192.168.22.3。
64 bytes from speedy (192.168.22.3): icmp_seq=0 ttl=32 time=782 usec
好的,那么除了告诉我 PC 已启动(很好)并且响应时间非常惊人(也很好,但它是本地网络)之外,这还能告诉我什么呢? 好吧,首先它已经更新了我的 Linux 服务器的 ARP 表。ARP 代表地址解析协议。ARP 的作用是将您计算机的 IP 地址映射到每个物理网络设备都具有的 以太网 地址。人们使用术语“IP 地址”来表示与“以太网地址”相同的事物并不少见。不幸的是,这并不完全正确。例如,虽然更改您的 IP 地址非常容易,但更改您的以太网地址需要您获得一张新的以太网卡。顺便说一句,该地址更常被称为 MAC 地址(媒体访问控制)。MAC 或以太网地址属于物理网卡,并且在全世界是唯一的(或者它应该是)。IP 地址被分配给以太网地址。到目前为止还好吗?
那么这与之前的 ping 命令有什么关系呢?
正如我所提到的,您的 ARP 表已因该 ping 而更新。由于该表是动态的,因此条目会从表缓存中消失,而 ping 会刷新表中该条目。在大多数情况下,人们实际上并不查看以太网地址或从以太网地址的角度来思考。让我们看一下 ARP 表,看看我们可以从中发现什么样的信息。
$ /sbin/arp -a
上面的命令将显示 ARP 缓存的内容。当我第一次发出该命令时,我只看到了名为 testsys 的系统。在我的 ping 之后,笔记本电脑(“speedy”)出现在缓存中,如下所示。
speedy (192.168.22.3) at 00:C0:4F:EE:4A:9D [ether] on eth0 testsys (192.168.22.10) at 00:00:E8:8B:45:E6 [ether] on eth0
speedy 的以太网或 MAC 地址是“00:C0:4F:EE:4A:9D”。关于 MAC 地址中这些数字的一个有趣的注释。有关这些数字实际含义的信息可以在 RFC1700(分配的号码)中找到。这里有很多信息,因此向下滚动页面,直到到达标题为“ETHERNET VENDOR ADDRESS COMPONENTS”的部分。您将看到如下所示的表格
00000C Cisco 00000E Fujitsu 00000F NeXT 000010 Sytek 00001D Cabletron 000020 DIAB (Data Intdustrier AB) 000022 Visual Technology 00002A TRW
正如您可能想象的那样,制造这些网卡的公司和制造商的数量有所增加。因此,您可能需要查看标准文档,以更全面地了解当前的情况,http://standards.ieee.org/regauth/oui/oui.txt。
让我们看一下这些网卡。使用以太网地址的前六位数字,让我们向下滚动列表,直到找到“0000E8”。我们发现,我的机器在地址 192.168.22.10(使用 rtl8139 驱动程序)中的通用以太网卡可能是一家名为 ACCTON TECHNOLOGY CORP 的公司制造的。直到现在,我才知道他们甚至存在。让我们看看 speedy 上的下一张网卡。它的以太网地址前缀是“00C04F”。在我的列表中,它显示为 DELL COMPUTER CORPORATION。事实证明,这台笔记本电脑是 Dell Latitude。
我提到所有这些的原因是,您的网络流量不仅仅是 IP。通信发生在许多不同的层(今天我不会谈论 OSI 参考模型)。所有这些关于数据包来回飞行的东西都很好,但有点难以可视化。因此,我们已经打开了与 www.magauniversal.dom 的连接,但是该连接上到底发生了什么?我们正在谈论什么样的影响?当我们试图将整个事情在我们的大脑中描绘出来时,我们的服务器正在与多少台机器通信?
这就是 EtherApe(由 Juan Toledo 和其他人编写)发挥作用的地方。EtherApe 是一款图形化网络监视器,可让您查看网络连接上发生的活动。EtherApe 以一种让您可视化哪些连接比其他连接更繁忙的方式显示实时连接。随着更多流量通过您的网络,节点会显得更大。它支持各种适配器类型,包括 PPP、光纤、以太网等。有三种显示模式;您可以指定 IP、TCP 和另一个级别,以太网(链路层)。我个人很喜欢以太网显示,因为我也可以看到非 IP 协议的显示,从而提供更丰富的景象。
在我写这篇文章时,EtherApe 的最新版本是 0.7.6。您可以从 http://etherape.sourceforge.net/ 获取最新副本。
如果您想节省一些时间和精力,该站点确实有 RPM 和 Debian 格式的预编译二进制文件。由于我个人无法解释的原因(而且我没有问),Debian 软件包被认为是不稳定的。当然,您可以下载源代码并自行构建。对于那些决定走这条路的人,您还需要安装几个先决条件库,包括 gnome-libs、libglade 和 Gtk。此外,您还需要安装 libpcap 数据包捕获库。
在试用这个程序时,我使用了 RPM 安装。要启动该程序,只需键入 etherape &。您应该会看到一个类似于下图的窗口。您在那里看到的是我在网络上所做事情的图形快照。我正在做一些 X11 的事情,撰写这篇文章,进行一些网页浏览以及通过 RealAudio 收听广播电台。流量方面有点安静,但这确实让您了解了可能性。
由于当时只有少数几个连接处于活动状态,因此很难从图像中准确判断 EtherApe 可以显示多少协议和服务。我不会在这里列出所有内容,但是您可以期望看到所有明显的服务,例如 DNS、IP、IRC、NETBIOS、SNMP、HTTP 等等。说到协议,如果您单击顶部的小按钮(标有“Prot”的按钮),则可以在如下所示的表格中显示流量的数字表示形式。您也可以单击“View”,然后单击“Show protocols”。
如果您发现自己正在使用特定模式,您可能不希望每次启动程序时都重置视图模式。在 shell 提示符下键入带有 --help 的命令将为您提供所有命令行参数。例如,如果您始终希望在以太网视图模式下启动,则命令如下
etherape --mode=ethernet &
正如您可能从版本号中猜到的那样,这是 beta 代码,但仍然值得一看。这个小应用程序的潜力是显而易见的。这也是重新审视您的系统以及您周围发生的事情的好方法。
但是等等!还有更多。不幸的是,我们将不得不等到下次我们在网上最阳光的角落,系统管理员专栏 <在此处插入适当的笑脸> 相遇。在那之前,请记住问问自己……如果您不监视您的网络,谁会监视呢?
正在查找本系列过去的文章吗? 点击此处查看列表。
电子邮件:ljeditors@ssc.com