Windows Server 2008 网络诊断架构及工具
 
         企业网络的用户通常依靠网络连接来执行他们被授予的工作与职责,如果网络发生问题可能会对企业的生产力造成显着的影响。当企业网络发生问题时,网络管理员需要快速的诊断出问题所在,此时可以从Windows Server 2008计算机诊断与解决许多常见的网络错误与问题。
很多人认为Vista和08中的“网络诊断框架(Network Diagnostics Framework;NDF)”非常不好用,但对一个经验不足的管理员来说这是一个协助你恢复和解决网络连接问题的可延展性架构。NDF是一组技术和准则,能够让一组“疑难解答员(也称为协助程序类别)”协助诊断并可能自动更正网络连接问题。对于以TCP/IP为基础的通讯,NDF可为用户提示一系列选项,以排除可能的原因,直到最终确定问题的根源或排除所有的可能性。NDF可诊断与TCP/IP相关的具体问题如“IP地址不正确”、“默认网关不可用”、“不正确的默认网关”、“NetBIOS over TCP/IP名解析错误”、“不正确的DNS配置”、“本机的端口已被占用”、“DHCP客户端服务未执行”、“远程端口未开”“媒体已中断”、“本机端口被封锁”、“内存不足”等。
         诊断TCP/IP协议是否可以正确连接是最基本的排除网络故障工作,系统管理员可以使用ipconfig、ping等命令来检查主机TCP/IP的连接状况,建议检查的方式与步骤依序如下:

Setp01. 执行ipconfig /all:这个命令可以显示目前TCP/IP的详细配置是否有误。
● 用户应该仔细检查是否有网络适配器的MAC地址、IP地址、子网掩码、默认网关、DNS服务器等配置信息,以及是否正确。例如:如果发现IP地址为0.0.0.0,那可能是发生IP地址冲突的问题。如果IP地址为169.254开头的地址,则表示系统因为无法于网络上取得有效的IP地址(DHCP发生问题)而自动启动APIPA功能。
● 如果是自动分配IP地址的网络环境,则请仔细查看DHCP服务器与取得的IP地址是否正确,因为如果租用到非经授权的DHCP服务器的IP地址也会导致连接问题。

Setp02. Ping 127.0.0.1检测本机的TCP/IP协议运行是否有问题。

Setp03. Ping本地计算机的IP地址。例如:本地计算机的IP地址为10.0.1.241,则请ping 10.0.1.241。

Setp04. Ping默认网关的IP地址。例如:默认网关的IP地址为10.0.1.254,则请ping 10.0.1.254。默认网关如果没有办法连通,那么你将无法与其他网段的主机进行连接。发生问题的原因有可能默认网关IP地址配置错误,也有可能是计算机配置启动了封包过滤的功能机制所导致。

Setp05. Ping远程主机的IP地址。此步骤可以验证你的主机可否通过路由器通讯,通常在这个步骤是建议ping远程主机的FQDN(例如: www.vfast.com.cn 因为这样也可以同时测试公司的DNS服务器是否可以正确提供主机名解析的服务。
 
     另外,许多公司基于安全上的考虑会在防火墙或计算机本身配置拒绝接收“ICMP ECHO Request”封包的机制,因此,如果你想要从因特网连接公司内部重要的系统访问资源时,可能会无法得到Ping或Tracert命令的请求信息响应,或是显示“请求超时(Request Time Out)”的错误信息。
另外,如果网络发生过度拥挤状况也会引起Ping命令”要求等候超时”的错误响应消息,此时,你可以利用Ping –t或是Ping –w的命令再尝试连接。如果你的网络基本配置与一般连接都没有问题,但是却无法顺利连接至某些远程计算机时,你可以利用Tracert命令来追踪问题可能的故障点。Tracert命令会利用逐层递增的“生存时间(TTL)”值来发送“ICMP ECHO Request”信息至目的地,以决定到达目的地的路径,同时Tracert也显示了来源主机与目的地之间的路径列表,因此可让你清楚的查看并判断哪个中间路由器发生问题或转发延迟。
 
以下列出常见的网络问题,而其后所列的是最有可能用来区别、诊断、以及解决这些问题的工具。下面介绍这些工具:
■ 部分客户端无法连接至服务器:Arp、Ipconfig、Nbtstat、Netstat、“网络监视器(Network Monitor)”、Nslookup、PathPing、Portqry、Telnet Client、“Windows网络诊断(Windows Network Diagnostics)”。
■ 所有客户端都无法连接至服务器:Ipconfig、网络监视器、Portqry、Telnet Client、Windows网络诊断。
■ 客户端无法连接至共享文件夹:Ipconfig、Nbtstat、Net、Nslookup、网络监视器、Portqry、Telnet Client、Windows网络诊断。
■ 客户端无法连接至网络:Ipconfig、Windows网络诊断。
■ 网络运行缓慢:网络监视器、Performance Monitor、PathPing、Resource Monitor、Task Manager。
 
要知道,许多因素都会影响网络的效率与可靠性,包括远程连接、硬件配置(网卡或是物理网络连接),以及设备的驱动程序等。而网络所碰的问题经常与通信协议配置错误有关。例如说,在TCP/IP网络中使用不正确的配置,可能会影响IP寻址、路由、以及IP安全等。

Windows Server 2008提供多个可以用来监控、测试网络性能,以及诊断与排错网络问题的工具,说明如下:
■ Arp:一个用在诊断在局域网络中的两台计算机无法通过路由器互相通讯时相当有用的命令提示字符工具。此外,Arp在诊断客户端与网关之间的问题也很有帮助。它以广播查询的方式来获得IP地址和物理地址的对应。你可以执行“arp -a”的命令来查看Arp cache中的IP与网卡地址的对应是否有问题。然后执行”arp -d”的命令清除该条有问题的数据。而更多有关arp命令的用法,可以通过执行“Arp”命令取得。

■ ipconfig:是一个用来处理当使用DHCP获取IP配置时碰到问题,非常有用的排错工具。你可以使用它来显示目前的IP配置,或是识别APIPA功能是否被启动,以及使用“ipconfig /releasec”来释放,或是“ipconfig /renew”更新指定网卡的IPv4地址,而如果是使用IPv6则可以执行“ipconfig /release6”与“ipconfig /renew6”。你可以通过执行“ipconfig /all”命令显示所有网络接口最完整详细的TCP/IP信息。而使用“ipconfig /?”命令可以获得所有参数的使用信息。

■ Nblookup:“Windows Internet Naming Service;WINS”是一个NetIOS名称解析的通信协议。在几年前,WINS名称解析是Windows计算机用来在网络找寻其他计算机的方式。然而,在Active Directory域环境中,DNS是主要找寻其他计算机的方式,而WINS适用于支持较旧版本的Windows系统或是应用程序。当网络环境中仍然靠着WINS Server执行名称解析找寻网络上的其他计算机,则Nblookup是一个非常有用于诊断WINS名称解析问题的命令提示字符工具。Nblookup不包含在Windows Server 2008,但是可以通过 http://support.microsoft.com/kb/830578知识库文件查看其信息并下载。你可以执行“Nblookup COMPUTER1”命令,通过配置好的WINS服务器行计算机名称为COMPUTER1的NetBIOS名称解析。当企业网络中有多台WINS服务器时,可以指定”特定的WINS服务器IP(后面范例中的192.168.1.101)”执行NetBIOS名称解析,例如“Nblookup /s 192.168.1.101 COMPUTER2”。
NetBIOS“Name(名称)”实际上是用来识别服务,而不是计算机。如果你要尝试解析NetBIOS名称对应至特定的NetBIOS服务,可以使用 /x 参数,并指定该NetBIOS服务的”代号(suffix)”。例如,执行“Nblookup /x 1C DOMAIN1”命令,找寻DOMAIN1域中的”域控制器(其NetBIOS的代号为1C)”。而通过执行“nblookup /?”命令可以得到最详细的使用方法的相关信息。

■ Nbtstat:是一个用于当NetBIOS名称解析发生问题时,排错的命令提示字符工具。NetBIOS名称解析是网络上常见的问题,你可以使用Nbtstat来显示本地计算机或远程计算机的NetBIOS名称信息,用以协助你在进行排错时确认该计算机NetBIOS服务是否有启动,以及其名称是否被正确的解析。
通过执行“nbtstat -c”可以查看NetBIOS name cache,“nbtstat -n”可查看本机所提供的NetBIOS服务名称,若要查看远程主机的NetBIOS名称,可以执行”nbtstat -a SERVER1”命令,或者是通过IP地址查看,例如执行“nbtstat -A 192.168.1.102”命令。

■ Net:是一个用于修改网络配置、启动或停用服务,以及查看共享文件夹非常有用的命令提示字符工具。虽然其他相同功能的工具提供了比Net更友好的操作界面,但是,Net在快速提供本机或远程计算机有效的共享资源信息时是非常有用的工具。当你在执行共享资源连接排错工作时,该工具在确认共享资源是否有效,以及确认资源的共享名时是非常有用的工具。例如,可以执行“net share”命令查看本机共享资源信息,执行“net view RemotePComputerName”查看远程计算机的共享资源信息。

■ Netsh:是一个可用于配置许多不同网络相关配置且功能强大的工具。而当它被用于执行网络连接问题排错时也是极具价值。例如,为了能在执行无线网络问题诊断时,找到最有可能问题的所在,应该从可能引发问题的根源进行诊断,你可以执行“netsh wlan show drivers”命令来确认无线网卡的驱动程序是使用“原始Wi-Fi驱动程序(Native Wi-Fi drivers)”驱动程序,若显示是采用“Legacy Wi-Fi drivers”,则有可能是驱动程序造成问题的原因。你也可以执行“netsh advfirewall show domainprofile”命令查看域中有关防火墙功能的配置,如果因为配置防火墙而导致问题,可执行“netsh advfirewall reset”命令让防火墙还原为最初默认值。此外,在进行远程访问服务排错时,可执行“netsh ras show user”快速了解哪些用户可以连接至远程访问服务器,然后再进一步确认问题。

■ Netstat:是一个用于识别网络服务及其使用的端口时非常有用的工具。当要列举一台计算机已开启的端口,来确认某个网络服务是否使用默认的端口提供服务时非常有用。你可以执行“netstat -a -n -o”来查看已开启并且有访问连接的端口。如果同时想知道开启某个端口的程序是哪一个,则可以执行“netstat -a -n -o -b”命令。

■ Network Monitor:Network Monitor是一个由Microsoft免费提供的具有分析复杂网络通讯能力的工具,它可以通过Microsoft Download下载具。该工具是一个具有“捕捉(Capturing)”Windows Server 2008计算机所接收或发送封包的每一个字节的通信协议分析工具。有经验的管理员可以使用Network Monitor针对“网络性能问题”、“TCP连接问题”、“IP通信协议堆栈配置问题”、“因设置网络过滤器所导致的问题”、“以文字为基础的通信协议,例如,HTTP、POP3、SMTP等在应用层所遇到的问题” 等等。Network Monitor通过识别在网络上的不同通信协议,对大量捕捉到的信息执行解析,甚至可以解释大部分应用层的通信协议。使用Network Monitor分析网络流量的步骤如下:
Setp01. 在 http://www.microsoft.com/downloads/ 下载并安装Network Monitor。
Setp02. 点击“开始”,点击“所有程序”,点击“Microsoft Network Monitor 3.3”文件夹,然后点击“Microsoft Network Monitor 3.3Microsoft Network 3.3”启动。
Setp03. 检查 “Tools“菜单下的“Options“ 选项,并确保“Capture ”页面中的勾选“Enable Conversations ”选项,并在启动抓包前确保勾选一或多块网卡。
Setp04. 在图中的操作界面上点击“New Capture”或者下方的“New Capture tab…”,建立新的捕获面板。
  Windows Server 2008 网络诊断架构及排错工具大全_第1张图片

图:新建Network Monitor捕获
Setp05. 点击“Play”按钮,开始捕捉经过所勾选网卡的封包,并执行应用程序以产生流量。
Setp06. 在“Capture”窗口中,点击“Stop”,并查看其内容。下图显示使用Network Monitor查看所捕捉到的“Telnet request”封包的内容。
 
Windows Server 2008 网络诊断架构及排错工具大全_第2张图片
图使用Network Monitor查看捕获到的封包内容
 
■ Nslookup:是一个用来验证DNS名称解析问题,以及能提供执行DNS名称解析及产生报告结果的命令提示字符工具。此外,它会显示DNS服务器响应的结果,同时指定特定的DNS服务器执行名称解析操作。当使用Nslookup对下列问题排错时,它是一个修复性提示的工具:
  •  客户端需花上用去几秒的时间建立与初始化对服务器的连接。
  • 部分客户端可与服务器建立连接,但是有些则是连接遇到问题。
  • DNS服务器配置正确,但是客户端却解析到不正确的主机名。

你可以执行“nslookup hostname”命令来解析该主机名所对应到的IP地址,或执行“nslookup ipaddress”命令解析该IP地址所对应的主机名。此外,也可以执行“nslookup hostname server_name_or_address”指定特定的DNS服务器执行名称解析,以及执行“nslookup "-set type=mx" microsoft.com”命令查询microsoft.com域的“邮件服务器记录(即MX记录)”。另外,你也可以执行“nslookup "-set vc" microsoft.com”命令,让Nslookup使用“虚拟线路(Virtual Circuit)”的方式,也就是使用TCP的连接连至DNS服务器。这种测试尤其对预期所提出的DNS查询会有大量的响应记录时特别有用。

■ Ping:是简单监控网络连接能力的最佳工具。你可以使用”ping -t hostname”命令连续不断送出Ping要求,藉此简单的判断是否你目前有连上目标主机。

■ Pathping:是一个在排查从客户端连接至远程问题的命令提示字符下最有用的工具。可以协助诊断名称解析、网络连接、路由、以及网络性能。也因为这些原因,所以它应该是第一个你用来排错网络问题的工具。可以执行“pathping www.microsoft.com”命令,来测试本机对 www.microsoft.com的连接状况。而PathPing显示的测试结果分成两个部分,第一个部分在执行完命令后,会立即显示从本机至目的主机经过的每一个有响应的网关。你可以加上-n参数,略过解析每个网关的IP地址与其对应的名称,以加快结果显示的速度,例如“pathping -n www.microsoft.com”。而第二个部分的输出结果从“计算统计信息已经过 xxx 秒.”的信息开始,而这段计算统计信息期间,将依照Pathping所找到网关数量的少,需要几秒钟至几分钟不等。在这段期间内,Pathping会查询每个设备,并依照设备是否响应与响应速度来计算性能数据。

■ Performance Monitor:你可以使用“性能监视器(Performance Monitor)”查看Windows系统,提供数以千计的实时计数器中所包含关于本机或是远程计算机的信息。当在执行网络性能问题排错时,使用比任务管理器或资源监视器提供较详细的方式的性能监视器,来查看“目前带宽使用率(Current Bandwidth Utilization)”。而性能监视器额外提供检测“retries”、“errors”,以及更多状况检测。

■ Portqry:使用Portqry及Telnet Client两个排错工具可以查询远程主机的服务是否能访问,而Portqry因为可以用来查询TCP与UDP端口,所以较有弹性也较容易使用。你可以执行”portqry -n www.microsoft.com -e 80”命令确认该主机的80号端口是否有开启,或是执行“portqry -n 192.168.1.103 -o 23、139,445,3389”查询该主机的23、139、445、3389四个端口是否有开启,也可以执行“portqry -n 192.168.1.111 -p UDP -e 53”测试该台主机的UDP端口53是否有开启。
提示:我的Windows Server 2008 中未包含Portqry工具,读者可在微软网站上搜索“PortQry Command Line Port Scanner Version 2.0”工具下载,并将其解压到System32目录中即可。

■ “资源监视器(Resource Monitor)”:Windows Server 2008提供“资源监视器(也称为可靠性和性能)”让你可以查看CPU、磁盘、网络,以及内存使用率等系统组件的信息。而它所提供有关网络组件的信息,在解决网络问题时是很有帮助。资源监视器中的”网络”部分所提供的相关信息,显示每一分钟计算机内的程序所传送与接收的字节数量。而这个信息,可让你识别计算机中是否有未经授权的程序正在大量传送数据至网络,进而解决相关的问题。

■ Route:所有以IP为基础的网络设备,包括计算机都有“路由表(Routing Tables)”。路由表可用在网络间转送封包的局域网络、远程网络、以及网关。你可以执行“route print”命令显示本地计算机的路由表。此外,可以使用Route命令诊断路由问题,以及测试不同路由配置。

■ Tracert:追踪网络连接路由,用于判断IP封包到达目的地所经过的路径。Tracert命令会使用IP“存活时间(TTL)”字段及ICMP错误信息,以判断A主机至B主机在网络上的路由。

■ Telnet Client:虽然Telnet Client不是网络问题的主要排错工具,但是如果用来从客户端诊断服务器中一个以TCP为基础的网络服务是启动时,则是非常有用的工具。但是无法用来对以UDP为基础的网络服务提供排错协助。不过,该工具默认并未安装于Windows Server 2008系统,你可以通过执行“start /w pkgmgr /iu:"TelnetClient" ”命令,或依次选择“服务器管理器→功能→添加功能→Telnet客户端”手动安装。然后执行“telnet www.microsoft.com 80”命令测试该主机的端口80是否有开启,并通过输入“quit”离开其操作环境。

■ Test TCP:你可以使用Ttcp在不需安装应用程序或服务的情形下,执行“ttcp -r -pPort”,让计算机开启特定的TCP端口,例如:“ttcp -r -p80”或UDP端口,例如:”ttcp -r –p53 -u”,以协助在服务安装之前测试特定通信协议的连接状况是否符合需求。也可以通过执行“ttcp -t -p80 www.microsoft.com”命令,测试远程计算机的TCP端口80是否有开启。若单独执行”Ttcp”命令,可以获取最详细的参考信息。
提示:遗憾的是Windows Server 2008中未包含Ttcp工具,因此熟悉Windows Server 2003 的老用户可以在Windows Server 2003 CD中的“Valueadd\Msft\Net\Tools”目录内可以找到它。

■ Netdiag:Netdiag是Windows Server 2003的support.cab支持工具文件内,提供的一个功能强大的命令行命令,可以用来执行网络的完整测试,也可以执行特定网络项目的诊断与测试。虽然Windows Server 2008并不提供该工具,但仍可从Windows Server 2003的支持工具压缩文件取得。netdiag命令语法简单而且易用,你可借助执行“netdiag /?”显示其完整用法。以下列出几个netdiag的范例以供参考:
 netdiag /v:提供详细而完整的网络信息收集和诊断结果。不过这个选项的输出虽然包括网卡、协议与服务的完整诊断输出,不过却太过冗长繁杂不易查看,一般而言会采用“/test”选项来针对特定网络项目诊断输出。
 网卡查询测试:netdiag /v /test:ndis
 远程访问连接测试:netdiag /v /test:wan
 测试DNS服务:netdiag /v /test:dns