最近公司里部分员工计算机频繁出现不能上网的问题,这些计算机都是自动获得IP的,经过排查发现他们的网关地址都出现了问题,正确的地址应该是10.82.4.254,而这些故障计算机得到的网关地址却是10.82.4.65。部分计算机使用ipconfig /release释放获得的网络参数后,用ipconfig /renew可以获得真实的网关地址,而大部分获得的仍然是错误的数据。为什么真正的DHCP服务器分配的网络参数无法正确传输到客户机上呢?希望IT168的高手能帮帮我。     [IT168解答]这位朋友遇到的问题确实是棘手的问题。原因很简单,网络中存在了另一个DHCP服务器,这个DHCP服务器将非法网络信息分配给设置为自动获得IP地址的客户机。今天我就根据这个问题详细的讲解下如何有效的防范网内非法DCHP服务器。

1、非法DHCP带来的灾害:
    一般公司内部都会有一个DHCP服务器来给员工计算机提供必要的网络参数信息的,例如IP地址,子网掩码,网关,DNS等地址,很多情况路由器就可以担当此重任。每次员工计算机启动后都会向网络中发送广播包寻找DHCP服务器(前提是该计算机被设置为自动获得IP地址),广播包随机发送到网络中,当有一台DHCP服务器收到这个广播包后就会向该包源MAC地址的计算机发送一个应答信息,同时从自己的地址池中抽取一个IP地址分配给该计算机。
    合法DHCP服务器可以提供正确的数据,非法DHCP服务器则提供的是错误的数据。我们如何让员工机器都通过合法DHCP服务器获得网络信息呢?如果是交换式网络则没有可能,因为广播包会发向网络中的所有设备,合法还是非法服务器先应答是没有任何规律的。这样网络就被彻底扰乱了,原本可以正常上网的机器再也不能连接到INTERNET

2、消极防范:
    既然广播包会发向网络中的所有设备,合法还是非法服务器先应答是没有任何规律的,那么我们可以通过多次尝试广播包的发送来临时解决这个问题,直到客户机可以得到真实的地址为止。问题中网友使用的方法就是此手段。即先使用ipconfig /release释放非法网络数据,然后使用ipconfig /renew尝试获得网络参数,如果还是获得错误信息则再次尝试/release与/renew直到得到正确信息。
    不过这种方法治标不治本,反复尝试的次数没有保证,一般都需要十几次甚至是几十次,另外当DHCP租约到期后员工机需要再次寻找DHCP服务器获得信息,故障仍然会出现。
3、官方提供的办法:
    一般我们使用的操作系统都是Windows,微软为我们提供了一个官方解决办法。在windows系统组建的网络中,如果非法DHCP服务器也是用Windows系统建立的话我们可以通过“域”的方式对非法DHCP服务器进行过滤。
    将合法的DHCP服务器添加到活动目录(Active Directory)中,通过这种认证方式就可以有效的制止非法DHCP服务器了。原理就是没有加入域中的DHCP Server在相应请求前,会向网络中的其他DHCP Server发送DHCPINFORM查询包, 如果其他DHCP Server有响应,那么这个DHCP Server就不能对客户的要求作相应,也就是说网络中加入域的DHCP服务器的优先级比没有加入域的DHCP服务器要高。这样当合法DHCP存在时非法的就不起任何作用了。
    授权合法DHCP的过程如下:
    第一步:开始->程序->管理工具->DHCP
    第二步:选择DHCP root, 用鼠标右键单击,然后浏览选择需要认证的服务器。
    第三步:点“添加”按钮, 输入要认证的DHCP服务器IP地址, 完成授权操作。
    这种方法效果虽然不错,但需要域的支持。要知道对于众多中小企业来说“域”对他们是大材小用,基本上使用工作组就足以应对日常的工作了。所以这个方法是微软推荐的,效果也不错,但不太适合实际情况。另外该方法只适用于非法DHCP服务器是windows系统,对非Windows的操作系统甚至是NT4这样的系统都会有一定的问题。

4、路由交换设备上封杀:
    有的路由交换设备自身功能比较强,例如具有extreme功能,他可以自动抑制非法dhcp的数据包。如果没有extreme功能我们如何提前预防非法DHCP服务器的接入呢?
    首先需要对DHCP数据包使用的端口有所了解,DHCP服务主要使用的是UDP的67和68端口,服务器端应答数据包使用68端口,67端口为客户机发送请求时使用。所以我们可以在路由器和交换机上通过访问控制列表来屏蔽除合法DHCP服务器以外的所有DHCP应答包,也就是说将68端口封闭。具体命令为“access-list 108 deny udp any eq 68 any”。(如图1)
有效防范网内非法DHCP服务器妙招
图1 点击看大图

    这种方法也同样只对于WINDOWS操作系统的DHCP服务器有效,对于在其他操作系统上建立的DHCP服务器则无法完全过滤。而且大量的ACL也会降低路由交换设备的性能,使网络速度受到一定的影响。
5、另类方法干扰非法DHCP服务器:
    在实际使用中笔者发现了一个另类的方法,该方法和上面介绍的消极防范结合起来使用效果还算不错。这个方法就是只要知道非法的DHCP的IP,找台电脑设置和他同样的IP,能降低非法DHCP发放的数量,这样在执行ipconfig /release和ipconfig /renew时获得合法网络信息的概率大大提高。

6、行政方法:
    其实和众多网络管理方法一样,制定规范合理严格的规章制度是减小网络故障产生的最好手段。我们可以通过制度来约束网络中非法服务的产生,对于提供非法服务的用户给予行政上的处罚。
7、实打实屏蔽非法DHCP服务器:
    文章的最后笔者将带领各位读者进行一次实打实的非法DHCP服务器屏蔽工作。
    第一步:知道了非法DHCP服务器的IP地址后使用ping -a ip来反向查看他的计算机主机名。

    第二步:根据ARP命令查询该计算机对应的MAC地址,也可以到合法DHCP服务器上查看缓存池中该IP对应的MAC地址。
    小提示:屏蔽非法DHCP服务器一定要从MAC地址来入手,因为IP地址可以修改而且自动获得IP的方法很多,获得的参数也会产生变化。
    第三步:知道了MAC地址后登录交换机执行sh mac address显示所有MAC地址与交换机端口的对应关系。(如图2)
有效防范网内非法DHCP服务器妙招
图2 点击看大图

    第四步:我们就可以从显示的对应关系列表中查看到该MAC对应的端口号了,如果端口比较多还可以使用“sh mac address add 0011.5b5c.6214”这样的格式来查询0011.5b5c.6214这个MAC地址对应的端口。(如图3)
有效防范网内非法DHCP服务器妙招
图3 点击看大图

    第五步:找到对应的端口后通过int命令进入该接口,然后使用shutdown关闭该接口,从而阻断了该计算机与外界的联系。(如图4)
有效防范网内非法DHCP服务器妙招
图4 点击看大图

    这种方法存在一个问题,那就是如果使用的是集线器连接下方设备时,会在交换机上的一个端口学习到多个MAC地址,如果我们直接将该端口通过shutdown命令关闭的话,则集线器连接的所有设备都无法使用网络了。遇到这种情况我们可以使用基于MAC地址的访问控制列表来控制。具体命令为:
    mac accesss-list extended softer
    deny host 0011.5b5c.6214 any
    permit any any
    然后在进入非法DHCP所在的交换机端口执行mac access-group softer in即可。
    设置完毕后就阻止了MAC地址为0011.5b5c.6214的计算机对外网的访问,而又不影响连接到同一台集线器上的其他设备。(如图5)

有效防范网内非法DHCP服务器妙招
图5 点击看大图


总结:
    网络管理充斥着非法使用网络者带来的危机,所以在平时就要对网络结构进行合理的规划,对网络参数的设置也要保留有详细的备案信息。这样当问题发现后我们就可以迅速的根据保留的数据第一时间发现问题的关键点。


来源:http://www.5dmail.net/html/2005-10-24/20051024111051.htm