路由器专家:创建网络详细清单(三)

日期: 2009-04-27 作者:Michael J. Martin翻译:曾少宁 来源:TechTarget中国 英文

在创建网络详细清单(二)中,我们探讨了收集网络清单数据的过程。接下来我们要探讨的是生成一个良好的清单报告。   然而,在我们探讨之前,我先阐明和修改一些评论。第一,事实上,所得到的报告将比上文中所探讨的看起来更好些。

这是因为,我们现在使用Perl脚本来为我们工作,而不需要一步步做那些繁琐的文件整理过程。当然,有得必有失。为了使用报告脚本,我们必须使用更新的ouilookup.sh脚本,与老的版本相比较,它对数据的格式化稍微有所不同。这种改变是很值得的,因为报告脚本可以获得一个好的制表符定界文件,而该文件可以导入到Excel上创建一个好的报告: IP MAC OID ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

创建网络详细清单(二)中,我们探讨了收集网络清单数据的过程。接下来我们要探讨的是生成一个良好的清单报告。

  然而,在我们探讨之前,我先阐明和修改一些评论。第一,事实上,所得到的报告将比上文中所探讨的看起来更好些。这是因为,我们现在使用Perl脚本来为我们工作,而不需要一步步做那些繁琐的文件整理过程。当然,有得必有失。为了使用报告脚本,我们必须使用更新的ouilookup.sh脚本,与老的版本相比较,它对数据的格式化稍微有所不同。这种改变是很值得的,因为报告脚本可以获得一个好的制表符定界文件,而该文件可以导入到Excel上创建一个好的报告:

IP MAC OID DNS
172.30.71.1 0000.0c07.ac05 CISCO SYSTEMS INC. gw.outlan.net
172.30.71.100 0004.ac5e.4810 IBM CORP. obiwan,outlan.net
172.30.71.14 000b.cd83.53f6 Unknown OUI dirserv.outlan.net
172.30.71.60 0008.02a1.4d80 Compaq Computer Corporation foo.outlan.net
172.30.71.2 0001.812b.fe08 Nortel Networks Unresolved
172.30.71.3 0005.5fe7.0800 Cisco Systems Inc. Unresolved

  这样就可以删除运行多个独立文本格式化程序和使用机密Unix diff命令的需要。刚开始,我们必须收集与上面列出的相似的文件:

Trinity$ ls
172.30.100-IPdump-outlan-rs01-12-05-04.txt
Vlan-list-outlan-rs01-12-05-04.txt
172.30.100-dnsdump-12-05-04.txt    
172.30.100-ARPdump-outlan-rs01-12-08-04.txt
172.30.100.1-acthost-12-05-04.txt       
172.30.100-IPdump-fny-rs01-12-07-04.txt
oui-join.txt
Trinity$

  让我们快速地浏览下我们所获得的文件:

  Vlan-list-*.txt是 vidump.sh脚本的输出。它生成一个列表的路由器物理接口或者交换机的VLAN接口,通过它们,我们就可以确定哪些网络必须审计。

  *-IPdump-date.txt是有“-ir”标记的 arpextract.sh的输出报告,它生成路由器或者第三层交换机的一个IP地址表。

  *-dnsdump-date.txt是activehosts.sh脚本的输出,一个调用fping来在一个IP地址范围中执行ICMP ping扫描的Shell脚本。

  *ARPdump-date.txt是有“-ar”标记的arpextract.sh输出,它生成路由器或者第三层交换机的一个IP和MAC地址表。

  oui-join.txt是 ouilookup.sh的输出。这是Perl脚本ouiresolv.pl的封装脚本,它解析48字节以太网MAC地址的OUI部分。

  生成清单报告,只需要acthost、arpdump、oui-join和dnsdump数据文件。使用报告脚本gen-net-inv.pl。命令语法是gen-net-inv.pl < acthost> < arpdump> < oui-join> < dnsdump>:下面是一个CLI例子;

Trinity: # perl gen-net-inv.pl 172.30.71-acthost-01-24-05.txt 172.30.71-
ARPdump-outlan-rs01-01-24-05.txt oui-join.txt 172.30.71-dnsdump-01-24-05.txt
Done
Trinity: #

  当脚本运行结束后,它会向CLI报告“完成”并退出。报告的名称是由acthost文件和网络名称派生的。如果有其中一个报告资源文件在CLI中丢失时,会出现“无法打开文件”的错误并退出。

Trinity: # perl gen-net-inv.pl 172.30.71-acthost-01-24-05.txt 172.30.71-
ARPdump-outlan-rs01-01-24-05.txt oui-join.txt
Cannot open file
Trinity: #

  在我们开始继续探讨脚本(以及为什么)生成的报告之前,我们必须记住一件事情。脚本读取文件的顺序是固定的。一份准确的报告必须按照下面的顺序进行文件处理:
1. acthost
2. arpdump
3. oui-join
4. dnsdump

  如果文件没有按照正确的顺序进行处理,那么将生成错误数据的报告。下面这个例子就是dnsdump和oui-join文件交换了位置后产生的结果:

Trinity: # perl gen-net-inv.pl 172.30.71-acthost-01-24-05.txt 172.30.71-
ARPdump-fny-rs01-01-24-05.txt 172.30.71-dnsdump-01-24-05.txt oui-join.txt
Done
Trinity: #

  这个脚本已经生成了一个报告,让我们看看下面的输出:

Trinity: # more 157.191.5.1_consolidated_report.txt
IP      MAC     OID     DNS
172.30.71.1     0000.0c07.ac05  Empty   ->
172.30.71.100   0004.ac5e.4810  Empty   ->
172.30.71.14    000b.cd83.53f6  Empty   ->
172.30.71.15    0008.02a1.4d80  Empty   ->
172.30.71.16    0050.8b2c.f25e  Empty   ->
Compare the above to what the output should look like:
Trinity: # more 172.30.71_consolidated_report.txt
IP      MAC     OID     DNS
172.30.71.1     0000.0c07.ac05  CISCO SYSTEMS INC.           Unresloved
172.30.71.100   0004.ac5e.4810  IBM CORP.                    overload.outlan.net
172.30.71.14    000b.cd83.53f6  Unknown                      OUI foo.outlan.net
172.30.71.15    0008.02a1.4d80  Compaq Computer Corporation  home.outlan.net
157.191.5.16    0050.8b2c.f25e  COMPAQ COMPUTER CORPORATION  obiwan.outlan.net

  这其中的原因是因为脚本会比较每个文件中的数据并将它们解析到一个报告集中,以便获得某些特定的值。如果缺少其中的数据,它会将这个丢失的数据作为一个有效或者错误读取,并报告它。如果数据存在,但却是错误的,那么它也同样会报告它。这还远远不够,因为我们想要看到非一致性的数据,但是我们又无法确定它们是什么样的。同时我们也不想通过要求输入文件满足某些明确的标准来减少脚本的功能。只需记住,为了正确的报告,文件必须以正确的顺序处理。

  所有这些数据都为我们提供了什么?网络清单的报告方面必须包含三个内容:

  1在运行清单时IP子网上所有活跃主机列表。

  2子网的ICMP集和路由器/交换机可见度之间的不一致性信息。

  3子网和DNS之间活跃的不一致性内容。

  根据环境,还有第四个有价值的部分:网络硬件信息,它可以协助读取网络审计数据的结果来确定某些结果的有效性,以及协助网络漏洞扫描测试的配置。总之,了解得越多,我们对于结果就越有信心。为了满足上面的报告标准,脚本生成了三个文件:

  *_consolidated_report.txt,正如它文件名所表示的,它是一个报告中所有清单数据的合集,包含IP信息、ARP信息、OUI信息和DNS信息。

  *_dns_err_report.txt是一个没有任何DNS信息的主机IP地址列表。这个报告被以电子邮件方式发送给管理主机,使得问题可以得到处理。

  *_icmp_err_report.txt是由ICMP扫描收集的IP主机数据与ARP表报告之间的差异。正常情况下,这个报告应该是空的。如果由于某些原因确实出现了非一致性信息,那么我们就必须使用Unix diff命令。

  IPdump报告是用来解决*_icmp_err_report.txt文件中发现的非一致性问题的。使用Unix diff命令来比较IPDump和acthost文件。这是一个语法例子:

  Trinity$ diff *-IPdump*.txt *-acthost*.txt

  这个命令将ARP表中活跃主机结果与使用ICMP PING找到的结果进行比较。如果有不同点出现,那么往往就是在acthost”文件缺少某些主机。这是由于路由器网关的ICMP过滤或者某种类型的ICMP处理规则所造成的。Diff操作将文件A->文件B进行比较。它通过分析两个文件,作出提示文件A应该如何修改才能变成与文件B一样。因此“主”文件应该是文件B。Diff会报告对于它的不同修改建议,使用“c”来表示某一行中所需要的修改,“a”表示是文件的特定行中需要增加的信息,或者“d”则是表示需要删除的行。毋庸质疑,实际上是需要一些方法来简化diff操作,因为它的输出是比较费解的。

  让我们来看看“acthost”(这是我们想要进行输出匹配的文件)到“ipdump”(这是“acthost”必须匹配的文件)的匹配结果:

Trinity$ diff 172.30.100-acthost-12-05-04.txt 172.30.100-IPdump-fny-rs01-12-
05-04.txt
2a3
> 172.30.100.101
10c11
< 172.30.100.2
---
> 172.30.100.22
Trinity$

为了更简便地进行比较,可以将这两个文件放在一起看:

172.30.100.1      172.30.100.1
172.30.100.100     172.30.100.100
172.30.100.14     172.30.100.101
172.30.100.15     172.30.100.14
172.30.100.16     172.30.100.15
172.30.100.17     172.30.100.16
172.30.100.172     172.30.100.17
172.30.100.18     172.30.100.172
172.30.100.19     172.30.100.18
172.30.100.2      172.30.100.19
172.30.100.3      172.30.100.22
172.30.100.4      172.30.100.3
172.30.100.5      172.30.100.4
172.30.100.83     172.30.100.5
172.30.100.85     172.30.100.83
            172.30.100.85

  Diff的2a2输出显示“IPdump”文件的第3行需要添加到“acthost”文件的第2行后。而我们的清单,我们需要调查除了网关或者本地ICMP过滤,为何172.30.100.101没有向ICMP响应。同时,主机可能已经不是活跃的了(而它的ARP条目可能仍然位于ARP表中),或者有可能主机只是在某个时间里无法响应。

  Diff的10c11输出显示在“acthost”的第10行和“IPdump”文件的第11行(假设我们已经修正了第一处不同点)之间是不匹配的。Diff推荐将第10行修改来对应第11行。然而关于审计,它表示另一个需要调查的点。ARP表中有主机172.30.100.22,而ICMP扫描中有主机172.30.100.2。这就表示了主机172.30.100.22与172.30.100.101的行为是相似的。而对于主机172.30.100.2,它会响应ICMP,但是并不在ARP表中。如果ICMP扫描是在连接到目标子网的主机上运行的,那么很可能主机只是刚刚连线,并且还没有向子网传送信息。在这种情况下,网关就不会看到任何来自该主机的流量,同时也将不会在APR表中注册MAC。

  对于这两个例子,第一个会较为常见些。我举这两个例子的目的是为了说明,来自两个报告的数据可能并不是一致的,这样我们就必须做一些调查来解决这个问题。任何时候发生了差异,我们首先应该做的是验证“奇怪的”主机是可达的。然后,回到ICMP扫描和arpdump,再次比较结果。如果问题继续存在,那么检查 “奇怪的”主机是否正在运行过滤软件,或者有一个响应ICMP流量的本地策略。如果所有验证都没有发现问题,那么要通过使用exec命令<clear ip arp>来清理路由器或交换机上的ARP表,这样问题就应该不会出现。忠心希望,你不会老遇上这样的问题。但是,如果真的遇上了,那么就必须检查。这种情景也是接入点或者网络监控点的指示器。

  现在我们已经完成了网络清单,可以准备运行网络服务审计了。请继续阅读这个过程的下一个章节。同时,如果你有任何问题、评论或者文章建议,请邮件联系我们

 

作者

Michael J. Martin
Michael J. Martin

Michael J. Martin作为网络和Unix信息管理员已经在信息技术领域工作了17多年。他早期在研究和ISP方面进行的设计、实现和支持MIS基础架构的经历,为他当前在大型因特网和安全架构的工作上提供了独特的视角。作为一个网络架构师,他已经为多家公司设计过高速、高可用的LAN/WAN网络,如ANS/AOL、Philips和Edgix Corporation等,它也给许多业务和区域ISP提供网络顾问服务。Michael也撰写了很多关于网络和安全问题的文章。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐