主机问题
Windows下的命令行工具在网络故障检测中的应用
很多网络爱好者都知道,在Windows 2000和Windows 9x的命令提示符下可使用Windows系统自带的多种命令行网络故障检测工具,比如说我们最常用的ping。但大家在具体应用时,可能对这些命令行工具的具体含义,以及命令行后面可以使用的种种参数还缺乏深入的了解。在本文中,笔者将采用实例分析的方式,对Windows 2000和Windows 9X的命令行工具的使用方法及其重要参数进行介绍。
Windows 2000所包含的命令行网络故障检测工具有13个,分别是Ping、PathPing、tracert、nbtstat、netstat、nslookup、 ipconfig、lpq、lpq、route、arp、netsh和shutdown。本文中,一些大家耳熟能详的工具就只简单地做一下介绍,应用比较深一点的我们将采用实例剖析的方式来给大家讲解。
1、ping
作用:验证IP的配置情况并测试IP的连通性。该命令只有在安装了下CP/IP协议后才可使用。
主要参数Ping[一t][一a][一r count][-f][-i ttl][一w timeout]远程计算机的IP地址或主机名(如192.168.0.1或hero)
说明:一t Ping指定的计算机直至中断。
一a ping目的主机的IP地址,并将IP地址解析成主机名。
一f ping所发送的数据包中加入了“不要分段”的标志,使数据包不能被网关分段。
一r count Ping目的主机时设立“记录路由”字段,用来记录传出和返回数据包的路由,count的值可在1—9中选择, 即最多可以记录9台路由器的IP地址。
一i ttl ping目的主机时指定所发送数据包的“生存时间”,即所发送的数据包经过多长时间后若无响应就被网络自动抛弃。
一w timeout 默认情况下,在显示“请求超时”之前,ping等待数据包返回的时间为1000毫秒。若Ping特殊的远程地址,可用此参数适当延长等待时间。
Ping命令在Windows 9X,Windows 2000, Windows XP下均可使用。
2、pathping
作用:跟踪数据包到达目标所采用的路由,并显示路径中每个路由器的数据包损失的信息。该命令只有在安装了TCP/IP协议后才可使用。
主要参数:PathPing[一n][一h][一P][一q][一w]远程计算机的IP地址或主机名说明:一n 不将IP地址解析成主机名。
一h 指定与目的主机之间需要统计的最大跃点数。跃点就是每一台路由器的IP地址。
一p 指定发送数据包之间等待的毫秒数。
一q 指定在每一个跃点进行多少次查询以便于统计。
—w 与ping的—w功能类似。
PathPing在Windows 9x中还没提供,是Windows 2000中新加入的。它结合了Ping和tracert所共有的一些功能,可以对数据包进行跟踪,并且在一段时间内探测路由上每个跃点,可以显示数据包的延迟与丢失。
3、tracert
作用:跟踪数据包到达目标所采用的路由,功能与Pathping类似。但tracert亦可在Windows 9X下使用,而pathping则只适用于Windows 2000。
主要参数:trscert[一h][一W][一j]远程计算机的IP地址或主机名
说明:一h和一w的作用与psthping中的参数类似。
一i 可用来指定发送的数据包所采用的路径中要经过的路由器的列表。在解决网络问题时常常指定多条路径使数据包到达同一个点从而判断究竟是哪一个路由器出了问题。
下面我们来看一个使用trscert来追踪路由转发数据包,解决网络故障的实例。
网络情况如图1所示.
有两个网段 一个IP地址为10.0.0.1—10.0.0.6,子网掩码为255.0.0.0;另一个为192.168.0.1—192.168.0.5,子网掩码为255.255.255.0;均为手动指定静态IP地址,主机与主机之间均为对等关系。很明显两个网段不在同一个子网中,必须使用路由器实现两网段中不同主机之间的通信。现采用一台高性能的PC机,装上Windows 2000 Server,配置成独立的服务器,利用Windows 2000 Server自带的路由服务,安装两块网卡,绑定不同的IP地址,提供两个子网接口,一个为10. 0.0.1,用来转发10.0.0.2—10.0.0.6的数据包 一个为192.168.0.1,用来转发192.168.0.2—192.168.0.5的数据包。
故障表现:10.0.0.2与192.168.0.2不能互相通信。
解决方法:首先检查这两台计算机有天配置TCP/IP,只有TCP/IP才具有路由功能。随后看两台主机的TCP/IP是否安装正确,使用本文介绍的Ping命令,键入Ping 127.0.0.1(127.0.0.1为TCP/IP所特有的自环地址),得到“repiy from1x 0.0.1 ……”的回应,收到回应的数据包,说明TCP/IP安装正确;再ping本机的网卡IP,收到回应的数据包,说明TCP/IP已绑定到网卡;然后在10.0.0. 2上Ping192.168.0.2,此时显示“destination host unreachable”,这说明此网络地址不可到达,而ping本网段的其他主机均有回应。由此可见,问题集中在主机与路由器的通信上 路由器没有把来自10.0. 0.2的数据包转发到另一个子网中去。这种情况有可能是传输介质的故障,但可能性更大的是路由器配置不当。如果是路由器配置不当,那问题又出在哪一个网络接口呢?或者两个网络接口都有问题7为了进一步检测,使用我们刚刚提到的tracert命令,对发送至路由器的数据包进行跟踪,在10.0.0. 2的命令提示符下键入trscert192.168.0.2,得到结果为:
Tracing route to 192.168.0.2
Over a maximum over 5 of 30 hops:
0 10.0.0.2
1 10.0.0.1
Destination net unreachable
由此可见,数据包到达了第一个网络接口10.0.0.1,但没有被第二个网络接口192.168.0.2转发,至少可以断定第二个网络接口存在问题。通过更换第二块网卡,重新绑定192.168.0.1,再次跟踪数据包,得到结果为:
Tracing route to 192.168.0.2
Over a maximum over 5 of 30 hops:
0 10.0.0.2
1 10.0.0.1
2 192.168.0.1
3 192.168.0.2
Trace complete
数据包成功地经过两个跃点,到达目的地,随后两机之间再用PathPing检验,结果如下:
Pathping 192.168.0.2 over a maximum over 5 of 30 hops:
0 10.0.0.2
1 10.0.0.1
2 192.168.0.1
3 192.168.0.2
computing statiatcs for 450 seconds:
Source to Here This Node/Link
Hop RTT Lost/Sent=Pct Lost/Sent=Pct Address
0 10.0.0.2 0/100=0%
1 101ms 0/100=0% 0/100% 10.0.0.1 0/100=0%
2 121ms 0/100=0% 0/100% 192.168.0.1 0/100=0%
3 130ms 0/100=0% 0/100% 192.168.0.2 0/100=0%
Trace complete
Pathping首先显示出路由器正常工作的情况,均能收到回应。随后给出数据包一路上经过节点的时间统计,没有明显的延迟或数据包的丢失,证明两机之间已可互传数据,网络故障排除。
4、nbtstat
作用:显示本地NetBIOS名称表与NeIBIOS名称缓存, 该命令只有在安装了TCP/IP协议后才可使用。
主要参数:nbtstat[一n][一c][一s][一a]
说明:一n 列出本地NetBIOS名称, 给出信息中的“已注册就是指该名称已被广播或已被WINS注册。
一c 列出NetBIOS名称缓存的内容并指出每个名称的IP地址。NetBIOS名称高速缓存用于存放与本计算机最近进行通信的其他计算机的NetBIOS名称和IP地址。实际上,如果想通过nbtstat查看最近有谁通过“网络邻居”的方式访问了万机上的资源,这个参数就变得尤为有用。
s 显示客户端与服务端的对话并列出双方NlP地址:
-s 通过IP显示另一台计算机的物理地址和名字列表你所显示纳内容就像对方计算机自己运行nbtstat —n —样。
nbtstat除了可以统计出计算机的NetBIOS名称和计算机所属的工作组之外,还可以显示计算机网卡的MAC地址。如果我们的计算机IP地址是192.168.0.1,键入nbtstat —a192.168.0.1 可以看到结果如下:
NetBIOS Remote Machine Name Table
Name Type Status
HERO UNQUE Registered
WORKGROUP GROU Registered
HERO UNIQUP Registered
HERO UNQUE Registered
WORKGROUP GROUP Registered
WORKGROUP UNIQUE Registered
_MSBROWSE_ GROUP Registered
MAC Address=52-54-AB-10-CA-B3
可以看到,前两行就是本地计算机的NetBIOS名称以及所届的工作组,最后一行就是计算机网卡纳MAC地址。而MAC地址在某些网络应用方面,如使用交换机在同一IP网段内划分VLAN、创建无盘网络终端的远程启动数据库等等,就显得尤为重要。此时,获取MAC地址就成为必不可少的步骤。
接下来,我们再通过一个网络检测实例看看nbtstat在其他方面的应用。
网络情况如图2所示:
在一个局域网中,共有三台工作站与一台服务器,IP地址为10.0.0.1—10. 0.0.4,服务器可以提供局域网内的Web服务,通过键入服务器的IP地址10.0.0.1可以看到服务器所提供的局域网内部网站的网页。同时,局域网采用一个全向QLl680(自带路由功能)的ADSL Modem共享Internet出口带宽。由这一个AOSL Modem负责Intsrnet与内网边界的数据包转发工作。
故障表现:现在局域网内所有计算机共享ADSL Modem出口带宽,连接到Internet正常,而且局域网内各台计算机之间的连接也正常,可以互传文件。但是从浏览器在地址栏中输入httP://10.0.0.1企图浏览局域网Web服务器网页时,要求输入用户名和密码,而我们设定的Web服务是允许匿名访问的。键入Web服务器管理员的帐号与密码, 系统提示无效,浏览不到服务器的Web页面。
解决方法:在确定了Web服务器权限设置无误的情况下,查看服务器事件日志,发现有一条警告信息:系统检测到网络中IP地址10.0.0.1与网络硬件地址00:90:04.E2:28:78有冲突,本机接口已经禁用。然而键入Pingl0.0.0.1,却能收到正常的返回数据包。很明显,根据服务器的日志判断,说明网络上某台设备的IP地址与服务器的IP地址有;中突,然而通过ping无法检测到此台设备究竟在网络中哪一个位置。使用我们刚刚介绍的nbtstat,键入nbtstat —a 10.0.0.1看看网络上这一台IP地址;中突的设备究竟主机名是什么,属于哪一个工作组。然而得到的回答却是host not found。
由以上结果,故障已经逐步缩小了范围。对于冲突的网络设备,由于检测不到它的NetBIOS名与所届的工作组,而网络中各台计算机又确定连接无故障的情况下,问题就集中在了ADSL Modem上。查阅全向QL 1680的设置资料,发现这一款ADSL Modem提供了Web页面的管理方式, 我们可以通过浏览器来设置QLl680的参数,但是这个Web服务器却不能匿名访问,同时,这一台QL 1680内置的IP地址也是10.0.0.1,因此,当我们在浏览器的地址栏中输入http://10.0.0.1时QLl680默认给出了它的管理界面,导致我们局域网内部的Web服务器不能发挥作用,在把QL 1680的内置IP地址改为10.0.0.220之后,网络故障排除。 nbtstat命令在Windows 9x,Windows 2000,Windows XP下均可使用。
5、netstat
作用:显示当前TCP/IP网络连接,并统计会话信息。该命令只有在安装了TCP/IP协议后才可使用。
主要参数:netstat[一s][一s][P协议名][一r]
说明:一s显示所有连接与侦听端口。
一s显示每个协议的统计。默认情况下显示TCP.UDP,ICMP,IP的统计。
一P协议名 显示由“协议名“指定的协议的连接,可与—s配合使用。
一r显示路由表的内容。
一n以数字格式显示地址和端口号(而不是尝试查找目标主机名称)。
netstat可以用来查看目前主机与网络的连接情况,防止不安全的外部网络连接。我们可以键入netstat—an同时使用“a”和“n”两个参数来查看端口的统计信息。
举例来说,网络中一台主机使用。etstst—an统计出的结果如下
Active Connections
Proto local Address Foreign Address State
TCP hero:nbsession HERO:0 LISTENING
TCP hero:1158 HERO:0 LISTENING
TCP hero:1071 msgr—cs158.msgr.hotmail.com.1863 ESTABLISHED
TCP hero:15951 HERO:0 LISTENING
TCP hero:1399 207.188.24.150.80 CLOSE_WAIT
TCP hero:138 HERO:0 LISTENING
TCP hero:nbsession HERO:0 LISTENING
TCP hero:10385 HERO:0 LISTENING
UDP hero:4000 *: *
UDP hero:nbdatagram *: *
UDP hero:1072 *: *
由这个统计列表,计算机与外部网络连接的端口开放情况就可一目了然。其中Active Connections是指当前本机活动连接,Proto是指连接使用的协议名称,Local Address是本地计算机的IP地址和连接正在使用的端口号,Foreign Address是连接该端口的远程计算机的IP地址和端口号,State则是表明TCP连接的状态UDP连接则没有。ESTABLlSHED表示端口与网络外部的连接已经建立,CLOSE_WAIT表示端口暂时关闭,而LISTENING则表示此端口已经准备就绪,正在监听外部网络发出的连接请求 等待与外部网络连接。如果我们发现自己的计算机上打开了值得怀疑的端口,就要当心。就事我们看到的这台计算机端口统计来说它的138端口处在监听状态,很容易被不怀好意的人利用网络共享的工具来入侵计算机的共享资源。
netstat命令在Windows 9x,Windows 2000,Windows XP下均可使用。
6、nslookup
作用:诊断域名服务器是否能正常工作。该命令只有在安装了TCP/IP协议后才可使用。
说明:nslookup后若键入IP地址,则向默认的域名服务器查找此主机的信息,若此主机记录为A或PTR则返回主机名;若键入主机名(如hero)则在当前域中向域名服务器要求解析此主机的IP地址;若要解析不在当前域的计算机,则须键入域名(如hero.com.cn)。
具体如何应用nslookup呢?我们来看一个利用nslookup来检测DNS服务器的实例。
网络情况如图3所示:
在此局域网中,已经架设好了一个DNS服务器,主要为网络中各台主机提供公司内部网站域名www.company.com的解析。网站Web服务器的IP地址为192.168.0.1,这是我们平时用得比较多的正向解析功能。
检测过程 :在命令提示符下键入nslookup www.company.com ,回车之后即可看到如下结果:
Server: linlin
Address: 192.168.0.5
Name: www.company.com
Address: 192.168.0.1
以上结果显示,正在工作的DNS服务器的主机名为linlin它的IP地址是192.168.0.5,而域名www.company.com所对应的IP地址为192.168.0.1。那么,在检测到DNS服务器linlin已经能顺利实现正向解析的情况下,我们往往还要进一步测试它的反向解析功能,反向解析就是把IP地址解析为域名的一种服务。在本例中,我们就是要检测DNS服务器能否把IP地址192.168.0.1反向解析为域名www.company.com。在命令提示下键入,nslookup 192.168.0.1得到结果如下:
Server: linlin
Address: 192.168.0.5
Name: www.company.com
Address: 192.168.0.1
这说明,DNS服务器linlin的反向解析功能也正常。
然而,有的时候我们键入nslookup www.company.com却出现如下结果:
Server: linlin
Address: 192.168.0.5
***linlin can’t find www.company.com; Non-existent domain
这种情况说明网络中DNS服务器linlin在工作,却不能实现域名www.company.com的正确解析。此时, 要分析DNS服务器的配置情况,看看是否www.company.com这一条域名对应的IP地址记录已经添加到了DNS的数据库中。
还有的时候,我们键入nslookup www.company.com,会出现如下结果:
***Can’t find server name for domain: No response from server
***Can’t find www.company.com; Non-existent domain
这时,说明测试主机在目前的网络中,根本没有找到可以使用的DNS服务器。此时,我们要对整个网络的连通性作全面的检测,看看当前主机是否可以与DNS服务器正常连通。还要检查DNS服务器是否处于正常工作状态采用逐步排错的方法,找出DNS服务不能启动的根源。
nslookup命令只能在Windows 2000/XP下使用。
7、ipconfig
作用:显示本地主机的IP地址配置。该命令只有在安装了TCP/IP协议才可使用。
主要参数:ipconfig[/all][/ernew适配器名称][/release网络适配器名称]
说明:/all 显示IP配置的完整信息。
/renew网络配器名称,此命令只在DHCP的客户机上可用,作用是更新DHCP服务器分配给客户机的配置参数。适配器名称可由ipconfig/all获得。
/release适配器名称 此命令只在DHCP的客户机上可用,作用是禁用客户机所得到的DHCP配置参数,这样一来,客户机就不受DHCP服务器所分配的网络参数的约束了。
ipoconfig常用来检测DHCP工作站的IP地址分配是否正确当服务器上的DHCP服务开始启动,要看一下工作站是否接受到了DHCP地址池中分配过来的IP地址,只需在命令行下键入ipoconfig/all就全清楚了。
poconfig命令在Windows 9x、Windows 2000、WindowXP下均可使用。
8、lpq
作用:获得连接到网络中的打印机的信息。
主要参数:[—s][—P][—]
说明:—s 连接打印机的主机名称或者IP地址
—P 打印机名称
—I 所指定的打印机的完整信息。
9、lpr
作用:把打印任务发送到网络中的打印机。
主要参数:[—S][—P][—J]
说明:—S 连接打印机的主机名称或者IP地址
P打印机名称
J确定打印任务的名称
显而易见,lpq与lpr是关联使用的两个命令。可以用在需要使用网络打印机的场合。下面,我们来看一个运用这两个命令来使用网络打印机的实例。
网络情况,如图4所示:
在此局域网中,打印服务器的主机名为linlin,IP地址为10.0.0.5,客户机需要将自己的两个文本文件a.txt与b.txt提交到网络打印机去打印。
键入以下命令:
Ipr-S IinIin -P Canon priner -J task a.txt b.txt 这个命令的含义是什么呢?把打印任务命名为tesk 送到打印服务器linlin,与之相连的打印机名称为Canon printer在这一个打印队列中将要打印两个文档,分别是a.txt与b.txt。
由以上可见, 在把文件送到打印服务器打印之前,必须了解足够的打印服务器相关信息。如果不清楚打印服务器的相关信息,甚至不知道打印机是否已经启用。那么,可以用lpq命令来查询。命令实例如下:
Ipr -S 10.O.O.5 -P Canon printer
在使用lpq与lpr的时候要注意-s, -P均为大写, 然而附带的参数-1却是小写。
lpq与lpr命令只能在Windows 2000/×P下使用。
10、route
作用:显示或修改本地路由表。该命令只有在安装了TCP/IP协议后才可使用。
主要参数:route[一f][一p]操作符目的主机IP地址子网掩码网关
说明: -f 将路由表清零。
P 此参数与add操作符一起使用,使路由在系统引导程序之间长久存在。而在默认情况下,系统重新启动时不保留路由。
操作符:add 添加路由
delete 删除路由
change 更改路由
print 打印路由
route在Windows中用得最多的场合就是用来管理静态路由。出于Windows 2000 Server自带了路由功能的服务,因此可以用route来设置路由表。我们用一个管理路由的实例来看看route的应用。
网络情况如图5所示:
有三个网段,IP地址分别是10.0.0.1—10.0. 0.5 192.168.0.1—192.168.0.10 172.16.0.1—172.16.0.5。网段之间采用Windows 2000 Server架设的软件路由器互联。我们知道 路由器可以实现网段之间的寻址功能,当下一个网段仍然没有包含数据包的目的地址,路由器可以把数据包转发到下一个网段的网关,由以后的路由器继续寻址并转发数据包。如图中所示的那样,如果我们要让10.0.0.2的计算机向172.16.0.2的计算机取得联系。就要告诉第一台路由器第三个网段的地址,也要告诉第二台路由器第—个网段的地址。这就是“静态路由器”路径由我们事先设计好路由表也由我们手动来更新。而route命令此时就派上了用场。
解决方案:在第一台路由器中可以找到第一个网段的网关IP地址是10. 0. 0.1我们要在路由表中加入第三个网段的网络地址172.16.0.0(注意:这是网络号,不是主机IP地址,因此最后一位是0)。按照前文所述的route命令规则。我们键入如下命令
route add l72.16.0.0mask255.255.10.0.0.1 metric 1
最后一位metric是跃点数, 我们在此选取跃点数1。
同理,在第二台路由器中也要找到第三个网段的网关172.168.0.1,添加第一个网段的网络地址10.0.0.0键入命令:
route add l0.0.0.0 mask 255.0.0.0 172.16.0.1 metric 1
然后可以键入route print命令查看蹈由表的更新情况能够发现路出表中已经添加了新的网络路径。加入要删除这一条路径的话,只需键入
route delete 172.16.0.0
route delete 10.0.0.0
这样一来,三个网段已经互相连通,两台路由器已经被我们手动指定好网络路径。那就是10.0.0.0-192.168.0.0 172.16.0.0,而且这一条网络路径是双向的无论数据包要到达三个网段中任何一个网段路由器都可以将它们转发必要时,可以一个路由器接一个路由器地传送数据包。
route命令只能在Windows 2000/XP下使用。
摘自《网管员世界》2002年11月