路由器配置不当导致客户端无法获得IP地址
故障现象
笔者曾负责过一个工程。交换机用的是CISCO Catalyst 2924,路由器用的是CISCO 3640。交换机按端口划分为两个虚拟子网VLAN1和VLAN2。VLAN1的IP地址范围为192.168.0.XXX,子网掩码为255.255.255.0;VLAN2的IP地址范围为192.168.1.XXX。子网掩码为255.255.255.0。交换机1口设为虚拟子网间的主干路(Trunk)。与CISCO 3640路由器的以太网口连接,2~20口被划分在VlAN1中。21~24口被划分在VLAN2中。客户端使用的是Windows98操作系统,安装TCP/IP协议,接入VLAN1;服务器端使用的是windows 2000 Server+DHCP服务器,同时在VLAN2中安装TCP/IP协议接入VLAN2。客户端的IP地址用自动获得IP地址的方式,通过路由器做中继代理,由DHCP服务器分配一个IP地址。服务器的IP地址是192.168.1.8,子网掩码是255.255.255.0。交换机的IP地址是192.168.1.9,子网掩码是255.255.255.0。路由器IP地址是192.168.1.10,子网掩码是255.255.255.0.
CISCO 3640路由器支持子口的设置(子口就是在单个物理接口上建立并保持多条逻辑连接),最初的路由器配置如下:
interface FastEthernet1/0
ip address 192.168.0.1255.255.255.0
no ipdirected-broadcast
fair-queue 64 256 0
!
interface FastEthernetl/O. 1
encapsulation dotIO 1
ip helper-address 192.168.1.8
no ip directed-broadcast
!
interface FastEthernetl/O.2
encapsulation dot1Q 2
ip address 192.168.1.1 255.255.255.0
no ip directed-broadcast
router eigrp 100
passive-interface Serial0/0
network 168.0.0.0
no auto-summary
硬件连接好后,在客户端用Window98自带的winipcfg命令获取IP地址时,问题出现了:客户端无法获取IP地址。
诊断过程
从硬件连接看,问题可能出在网卡,网线、交换机、路由器四个方面。将客户端手工设置IP地址,能够ping通服务器,交换机、路由器,说明网卡、网线、交换机、路由器都工作正常:那问题会出在什么地方呢?会不会是路由器的配置语句不对呢?经查阅随机文档配置语句本身没有问题。为缩小问题的范围,笔者把客户端接入VLAN2中,这时客户端就能获取IP地址了,再将客户端接入VLAN1中,又不能获取IP地址了,看来是VIAN出现了问题。
我们知道客户端第一次获取IP地址,要经过4步。每一步的信息传输都是用广播发出的,其中任何一步在VLAN的传输中受阻都会使客户端无法获取IP地址,那么如何查看广播包在交换机中传输呢?在TCP/IP协议中,传输协议分为TCP和UDP,TCP是面向连接的协议,UDP是非面向连接的协议。从广播的性质来分析,广播包应该是UDP包,广播要通过路由器,而路由器又能监测UDP包,这样就可通过路由器查看广播包在VLAN间的传输了。输入路由器监测UDP包的命令"Debug ip udp"后发现,IP租用请求信息(DHCPDISCOVER)仅发送到了VLAN1中,没有传送到VLAN2中,这应该是客户端无法获得IP地址的要害。
在路由器的配置中,"ip helper-address 192.168.1.8"这条命令的作用是负责指明UDP包传输的目的地址,IP租用请求信息没有被传送到VIAN2中,就是由于这条命令没起作用。再次查看随机文档,这条命令确实没写错。正在百思不得其解时,笔者发现路由器以太网口的第二子口设置了IP地址,第一子口未设置IP地址,而母口却设置了IP地址,也就是说第一子口的IP地址是由母口决定的。那"ip helper-address 192.168.1.8"这条命令是否也应该设到母口上呢?笔者于是将路由器的配置改写如下:
interface FastEthernet1/0
ip address 192.168.0.1 255.255.255.0
ip helper-address 192.168.1.8
no ip directed-broadcast
fair-queue 64 256 0
!
interface FastEthernet1 /0. 1
encapsulation dotIO 1
no ip directed-broadcast
!
interface FastEthernet1/0.2
encapsulation dot1Q 2
ip address 192.168.1.1 255.255.255.0
no ip directed-broadcast
router eigrp 100
passive-interface Serial0/0
network 168.0.0.0
no auto-summary
如此设置后,客户端就能够获得IP地址了。后来笔者查阅了一些有关书籍,证实CISCO 3640路由器第一子口的配置信息都应设在母口上。
排除心得
在网络设置、维护工作中,出现无法获得IP地址,无法联网等连通性故障是比较常见的:无论是网线、网卡、集线器等硬件出问题,还是路由器参数设置、各机器网络参数设置等出问题,都可能造成网络不通。硬件问题可以通过替换、比较的方法排除,相对较简单;而软件方面的参数设置由于涉及面多,隐蔽性强,较难查找。这就需要耐心、细致,仔细对照相关资料、参数。以下就给大家介绍一下如何确定网络连通性故障的常见步骤。
(1)当出现一种网络应用故障时,如无法接入Internet,要尝试使用其他网络应用,如查找网络中的其他电脑,或使用局域网中的Web测览等。即可判定是连通性故障,然后继续下面操作。
(2)查看网卡的指示灯是否正常。正常情况下,在不传送数据时,网卡的指示灯闪烁较慢,传送数据时,闪烁较快。无论是不亮,还是长亮不灭,都表明有故障存在。假如网卡的指示灯不正常,需关掉电脑更换网卡。对于HUB的指示灯,凡是插有网线的端口,指示灯都亮。由于是HUB,所以,指示灯的作用只能指示该端口是否连接有终端设备,不能显示通信状态。
(3)使用Ping命令,Ping本地的IP地址或计算机名(如zw179)。检查网卡和IP网络协议是否安装完好。假如能Ping通,说明该电脑的网卡和网络协议设置都没有问题。应当检查网线和HUB及HUB的接口状态,假如无法Ping通,只能说明TCP/IP协议有问题。
(4)假如确定网卡和协议都没有问题的情况下,网络还是不通,可初步断定是HUB和双绞线的问颖。为了进一步进行确认,可再换一台计算机用同样的方法进行判定。假如其他计算机与本机连接正常,则故障一定是先前的那台计算机和HUB的接口上。
(5)如呆确定Hub有故障,应首先检查HUB的指示灯是否正常,假如先前那台电脑与HUB连接的接口灯不亮说明该HUB的接口有故障(HUB的指示灯表明插有网线的端口,指示灯亮,指示灯不能显示通信状态)。
(6)假如HUB没有问题,则检查电脑到HUB的那一段双绞线和所安装的网卡是否有故障。判定双绞线是否有问题可以通过 "双绞线测试仪"或用2块万用表分别由两个人往双绞线的两端测试。主要测试双绞线的1、2和3、6四条线 (其中1、2线用于发送,3、6线用于接收)。假如发现有一根不通就要重新制作。
通过上面的故障原因分析,我们就可以判定故障出在网卡、双绞线或Hub等网络设备上。