windows server2003 网络服务系列之dhcp
                    本站原创,转载请注明出处:永远's blog[ http://rnetb.cn]

A.理论基础
  DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境
 一、IP地址的分配方法
   1、手动输入:容易出错,特别在大型网络中,出错后造成不必要的麻烦,增加网络管理工作量。
   2、自动获取:向能够提供ip信息服务的服务器获得 ip,减轻管理ip信息的工作量,需要拥有dhcp服务的服务器。[实际中dhcp服务器设备当然还存在于拥有dhcp的交换路由设备],客户端[主机]获得ip一定的使用期限,到期归还,使用再申请的办法.
   3、分配IP地址的方式:
a、永久租用:dhcp客户端获得此ip后,可以永久使用该ip,如果网络环境中ip充足可以使用此方法
b、限定租期:当DHCP客户端向DHCP服务器租用到IP地址后,这个IP就暂时的属于客户端使用,如果在租约到期前没有更新租约的话,那么这个地址就会被收回并转租给了其他的客户端,如果原客户端想在获得一个IP的话,那么它可以重新想DHCP服务器申请新的IP,这种情况适用于人多而IP少,那么这个IP就相当是多个人公用。

DHCP服务器,不但可以做到IP的分配,而且还可以提供其他相关选项的分配。比如:子网掩码、默认网关、DNS、WINS的IP地址。

 二、DHCP的运作原理
   1、从DHCP服务器获取地址(正常能够获取)
          a、需要从DHCP服务器获取地址的几种情况
            ● 该客户端第一次扮演客户端的角色,即第一次从DHCP服务器获取IP地址。
            ● 该客户端租期已到,IP已经被DHCP服务器收回,并已经转租给其他的主机,而该客户端需要重新或其地址上网。
            ● 该客户端租期未到,但它主动释放出IP,并要求重新租用一个新的IP[相当于ipconfig /release]。
            ● 该客户端更换了网卡。
            ● 该客户端计算机被转移到了另外一个网段。

以上情况,DHCP客户端是要向DHCP服务器重新获取地址,那么client和server之间要通过下面4种数据包进行相互通信

          b、在获取地址过程中的四种数据包
           ● DHCP discover 客户端发送Discovery(广播),寻找可提供的服务的DHCP服务器
                                   源:0.0.0.0
                                   目标:255.255.255.255
                                   MAC+Netbios名称
               如果DHCP客户端收到多台DHCP服务器的回应(offer),客户端是"谁先响应,谁先服务"原则采用IP地址
           ● DHCP offer   单一DHCP服务器提供服务:服务器端发送Offer((广播),包含该台DHCP服务器所能提供的IP地址租约(并且包含DHCP服务器IP+MAC)
                                   多台DHCP服务器提供服务:服务器端发送Offer((广播)
           ● DHCP request 客户端发送Request(广播)----确认请求先收到Offer的源DHCP服务器的租约地址
                                      通告其它DHCP服务器收回所提供的IP地址租约
           ● DHCP ack 所提供服务的DHCP服务器发送确认信息至DHCP客户端,建立租约条目记录,完成DHCP地址分配服务
       其它服务器收到DHCP客户端Request后,收回其所提供的IP地址租约。

   2、从DHCP服务器获取地址(没有获取到)---自动分配私有IP地址
           如果找DHCP服务器没有获取到地址,那么计算机将会自动分配到一个network ID 为 169.254.0.0的私有地址,并使用这样一个地址与其他人进行通信,在使用某个地址之前将以广播形式这个地址在网络上有没有其他的主机使用,如果没有则使用,如果有则尝试其他的私有IP地址,并且每隔五分钟来寻找DHCP服务器要一次有效的地址,在获得有效地址之前,客户端仍然使用这个私有的IP地址。

       3、更新IP地址的租约
           如果客户端想要延长IP地址的使用期限,则DHCP客户端必须更新(renew)其IP地址的租约。更新租约时,DHCP客户端DHCP request信息发送给服务器
         a、自动更新租约
           ● 在客户端重新启动的时候,每一次客户端重新启动计算机的时候,都会向服务器广播发送dhcp request,一般要求继续租用原来的IP地址。若租约无法更新客户端会尝试与默认网关通信,若通信正常且租约未到期,则客户端仍然可以使用原来的IP地址,并且等到下次更新时间到了在更新,若客户端与默认网关通信不正常,客户端将放弃使用当前IP,改用169.254.0.0这样的私有IP,并每隔5分钟尝试更新租约。
           ● 当租约过一半时,客户端仍然会发送 DHCP request 给出租给自己IP的DHCP服务器,当租约过一半时无法成功的更新租约,客户端会在租约过7/8的时候在利用广播发送 DHCP request 向任何一台DHCP服务器更新租约,如果仍然无法更新,则此客户端将会立刻放弃正在使用的IP地址,然后重新向DHCP服务器申请一个新的IP地址 则重复获取地址的四个包,只要客户端能够成功更新租约,DHCP服务器就会相应一个DHCP ACK 信息通知客户端可以继续使用原IP并且会有一个新的租约,新租约的天数则由服务器的配置来定或这个地址已经被其他的地址所使用,则会返回一个DHCP nak的信息给客户端.
       b、手动更新租约与释放IP地址
          DHCP客户端也可以利用ipconfig/renew命令来更新IP租约 通过ipconfig/release 自行释放IP地址 释放后客户端将向服务器发送一个DHCP release 信息释放后每隔5分钟将自动的去重新找DHCP服务器要地址.
 问题:如果有恶意的DHCP提供服务器,怎么办?
     如果有纯工作组,没有域,没有什么好的解决办法(技术)  
     如果是域环境,很好解决:
     如果是域里的DHCP服务器(域成员机器),默认即使安装了DHCP服务器,仍没有被授权,只有域管理员授权后才可以对外提供服务
     对于域和工作组混合的情况,工作组下的所有的DHCP服务器在启动时会自动向外广播(DHCPinfor),搜索域控制器,如果收到了域控制器的ACK,则认为自已没有经过授权,所以不能对外提供服务,如果没有收到,才可以对外提供服务(说明在工作组情况下,可以多台独立DHCP同时对外提供服务)
     DHCP通讯端口 UDP 67/68

问题:客户端什么更新租约?
正常租约时间 8天
             每次客户端开机--->直接Request DHCP服务器,如果服务器有回应,客户端继续使用原有IP
                               可能DHCP服务器没有回应(ACK),客户端直接连接网关,如果能够连接上网关,继续用原有IP,如果连接不上网关,直接放弃原有IP.重新Discovery
             租约时间过半 --->直接Request DHCP服务器,服务器端有回应,客户端继续使用原有IP
                                       如果服务器端滑有回应,每隔5分钟再次Request,如果还没有收到,继续使用原有IP , 超过租约时间87.5%---->如果原DHCP服务器没有回应,直接Discovery,如果还是没有DHCP服务器回应,则客户使用APIPA(automatic private IP  addresing--169.254.0.0-169.254.255.254)

问题:租期该设置多久
   如果租期设的较短,客户端必须在短时间向DHCP服务器更新租约,这样将增加了网络的负担,但是客户端可以很快的得到新的租约,如果IP地址不够用,或是移
  
   动办公用户将可设置成这种模式
   如果租期蛇的较长,可以降低网络的压力但是,客户端要很久才能的得到服务器的更新,使用于固定办公用户。
            ----------------------------------------------------------------------             一般可以在设置完作用域后在行操作,通过右键点击作用域--属性---修改租约限期,如果是无限制的话,也就是永久续租,这种方式当客户端
             断开网络的时候这个地址并不会被收回,而是必须需要管理员手动的释放才可以
            ----------------------------------------------------------------------

 三、DHCP服务器的安装
   1、注意事项:
          a、DHCP必须安装在服务器的版本上,server200,server2003或更高的版本,
          b、DHCP服务器本身的IP地址必须是静态的,也就是其IP地址、子网掩码、默认网关等信息都必须手工指定
          c、事先应该规划好出租给客户端计算机的IP地址的地址池,这样可以减少错误!
   2、安装步骤
          开始---控制面板---添加删除程序---添加删除组件---网络服务---动态主机配置协议(DHCP)
          安装完毕后:可以通过开始---管理工具---dhcp就可以连接DHCP和管理DHCP服务器
    四、DHCP服务器的授权(仅在域环境下使用,在组环境下则不能使用)
         如果没有授权这个过程的话所有人都可以随意安装DHCP服务器,并且其所出租的IP地址可以随便乱设,那么就会出现下面的客户端获取的地址就可能根本无法使用如此不仅使客户端无法有效的访问网络资源,同时也加重了系统管理员的负担。因此当DHCP服务器搭建完毕后并不是马上像客户端提供服务的而是要先做好授权工作,未经授权的DHCP服务器则不能像下面的设备提供地址出租服务。
       1、授权的原理和注意事项
          a、2003域中的所有DHCP服务器都必须被授权,未授权的DHCP服务器并不会提供DHCP服务,也不会将IP出租给DHCP的客户端
          b、只有Enterprise Admins 组内的成员才有权执行授权的动作
          c、已被授权的DHCP服务器的IP地址记录在AD数据库中
          d、不是域成员的DHCP服务器(独立的服务器)无法授权
          e、win2000 server 必须安装sp2补丁才可以在win2003的DHCP主控制窗口内被授权
           f、dhcp服务器的完整域名不可以超过64个字符
          g、授权的功能只适用于win2003与win2000server
       2、授权的方法
          开始---管理工具---DHCP---右击DHCP服务器---选择授权

     五、IP作用域的建立与管理
       1、建立域的作用
          在DHCP服务器内,建立一个或多个域,当DHCP客户端在向DHCP服务器租用IP地址的时候,DHCP服务器就可以从这些作用域内,选取一个适当的、尚未出租的IP地址,然后将其分配给DHCP客户端。
  ---------------------------------------------------------------------------------------------------------------------
         除了administrators组之外,DHCP administrators成员也可以执行DHCP服务器的管理工作,例如建立、删除、修改作用域的配置,DHCP users只能看不能改
  ---------------------------------------------------------------------------------------------------------------------
       2、建立IP作用域
         a、在DHCP主窗口中,右击DHCP服务器---新建作用域
         b、输入作用域的名称---输入可租给客户端的起始和结束ip地址范围、配置子网掩码
         c、在之前所设置的IP地址范围内,如果有不想被使用的IP可以点击下一步设置排除地址,点击添加即可
         d、设置IP的租期,默认为8天,可以根据实际情况来决定
         e、点击完成,然后在新建的域上点右键,激活此域
              ----------------------------------------------------------------------------------------------------------
                                                     一个子网只能有一个作用域
              ---------------------------------------------------------------------------------------------------------
       3、建立多个IP作用域
          建立多个IP作用域使得不同网段都可以采用一个DHCP服务器来分配地址,并且因为网关的原因,每个网段只能回去的自己网段的地址,例:
                                  dhcp----SW1----R1-----pc1
                                                 |
                                  PC2 ------|
   
     PC2和DHCP服务器都在192.168.1.0网段而PC1在192.168.2.0网段,当PC2向DHCP服务器要地址的时候是不需要跨越路由器的,所以在数据包内的路由器IP地址为0.0.0.0,如果跨越了路由器那么在数据包中的路由器IP字段就标示了路由器的地址。
       5、保留IP地址
         这种方法其实是将某个特定的IP地址与客户端的mac地址相互绑定,这样可以使客户端永远都获得那个绑定的IP。
          a、保留名称:输入来识别客户端的名称,可以不是主机名,只是为了管理员识别,比如:总经理
          b、IP地址:输入要保留的IP地址   例如:168.168.168.168
          c、MAC地址:客户端的网卡物理地址
          d、描述:辅助性的文字  例如:市场部
          e、支持类型:配置客户端支持什么样的协议  bootp 是无盘工作站所支持的一种协议
       6、作用域的协调
         在DHCP服务器内,租用信息会存放(两份)在DHCP数据库和注册表中,有的时候当你删除了某个信息都是属于单项的删除,通过协调选择可以将两者的数据协调成为一致的数据。这种情况在dhcp双服务器冗余情况
        7、安装多台DHCP服务器
         同时安装多台DHCP服务器可以进行容错,在这里面要注意多台DHCP服务器要符合20/80原则
      六、DHCP客户端的设置
  用户只需要在网络连接中设置成为--自动获取即可  可通过 ipconfig/all 查看所有的信息   ipconfig/renew 可以重新获取地址  ipconfig/release 释放地址
     七、配置选项
         1、概述:ip以外的如DNS 默认网关、WINS服务器等等
         2、服务器选项 (server options)最外的选项,作用域都继承,如dns,gateway
         3、作用域选项(Scope options)仅针对一个当前的作用域 例:默认网关[与服务器选项比,它优先]
      ------------------------------------------------------------------------------------------------------------------
                                  注意:如果不设置将默认继承服务器选项,如果设置则按照作用域选项进行[范围越小越优先]
     -------------------------------------------------------------------------------------------------------------------
         4、保留(Reservation)针对某一对象预留某一ip,当请求时,直接分发该ip
-----------------------------------------------------------------------------------------------------------------------
                                  注意:如果不设置将默认继承 作用域选项,如果设置则按照保留选项进行
-----------------------------------------------------------------------------------------------------------------------
        5、类别选项(class options)
           最小的一个范围,可以在服务器、作用域、保留区内,针对某些特定类别的计算机来配置的选项。
              a、用户类别:您可以替某些特定DHCP客户端来配置一个用户类别识别码
              b、厂商类别:由操作系统的厂商来定义的类的操作方法(服务器端):在服务器点击右键-----定义用户类别----添加---显示名称(标示作用)----ascii(输入类别真正名称(区分大小写))
              注意:类是一类特殊的计算机,可以在服务器选项右键---配置选项---高级---用户类别---选择定义的类----定义具体的选项
        
          在服务器选项上做可以加入这个类的主机就可以是在服务器上所有网段的计算机
          在作用域选项上做可以加入这个类的主机就只能是这个域(单独的某一个网段上的计算机)
          在保留选项上做可以加入这个类的主机就这能是几个特定的保留主机中的设备
          类的操作方法(客户端):把某个主机加入某个类 ipconfig/setclassid xx yy
 
                                    xx 代表网络连接的名字 如果是中文要用引号引起来  例如:本地连接
                                    yy 代表类的真实名称 即:ascii(输入类别真正名称(区分大小写))
                           把某个主机从某个类中移除 ipconfig/setclassid xx yy
         
                                    xx 代表网络连接的名字 如果是中文要用引号引起来  例如:本地连接
                                    yy 为空
                           查看该网络连接属于哪个类  ipconfig/showclassid "xx"    ipconfig /all
        6、优先级顺序:
           当上述四种优先级发生冲突的时候优先级的顺序  服务器选项(最低)--> 作用域选项 --> 保留选项--> 类别选项(最高)
     
           原则:越小越优先,但越优先范围越小

     八、DHCP中继代理
        1、概述
          在网络中根据需要可以安装一台或多台DHCP服务器,如果DHCP服务器不在同一个网络,而且DHCP在获取地址的过程中都是采用的是广播,但是广播信息是不能够跨越路由器的为了解决这个问题:
           a、每个网段都安放一个DHCP服务器
           b、所选择的路由必须支持RFC 1542 的TCP/IP标准,这种标准在信息转发的时候对DHCP的数据包进行了定义,DHCP的数据包是可以被转发到其他的网段。
           c、如果路由器不支持RFC 1542 那么就的在这个网段搭建一台DHCP中继代理服务器,通信的过程如下
           dhcp的客户端以广播的形式向不同网段的DHCP服务器请求IP地址通过(DHCP discover)
           广播信息不能跨越路由器,但是可以被本网段内的中继代理服务器收到,这个时候由这个中继代理服务器将信息以单播的形式发送给另一个网段的DHCP服务器
           DHCP服务器将回应信息回应给DHCP中继代理,中继代理在将信息返回给了DHCP的客户端
        2、中继代理的配置
          管理工具---》路由和远程访问---》右击服务器图标---》配置并启用路由和远程访问---》自定义设置---》LAN路由---》常规右击----》新增路由协议 ----》DHCP中继代理---》右击DHCP中继代理---》属性---》设置其他网段DHCP服务器的地址---》新增接口---》本地连接---》可以设置阈值(作用:如果在本地既有DHCP又有中继代理,那么中继代理将 延时,阈值时间启动。)
      九、超级作用域和多播作用域
  超级作用域:将多个作用域进行组合
 
  多播作用域:可以让DHCP将多播地址出租给其他人
      十、DHCP数据库的维护
          DHCP文件默认会存放在%systemroot%\system32\dhcp\dhcp.mdb中,其他的则为辅助文件,在DHCP服务器上点右键--属性--高级,可以修改所存放的路由
          1、数据库的备份:
            a、自动备份:每60分钟将自动备份一次文件到%systemroot%\system32\dhcp\backup 如果要修改这个时间需要修改注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters下BackupInterval健值是自动备份时间,默认是60分钟
             b、手动备份:右击DHCP服务器----点击备份
          2、数据库的还原:
             a、自动还原:当DHCP检查到数据库损坏的话,它会自动修复数据库
             b、手动还原:右击DHCP服务器----点击还原
         3、数据库重整:
           数据库使用一段时间后,内部数据分布的就会比较凌乱,那么可以就必须进行重整   要先停止DHCP服务才可以
           命令  C:\WINDOWS\system32\dhcp>jetpack dhcp.mdb c:\tempdhcp.mdb  
           注意,原理是将数据库文件先复制一份到c:\tempdhcp.mdb ,然后把这个在重整,然后在回复回去

-----------------------------------------------------------------------------------------------------------------------

B实验部分
     一、实验TOP

pc1(dhcp server)---------|                                         |----------pc4(dhcp server)
                                         |--------pc3(router)--------|
pc2(dhcp client)----------|                                         |----------pc5(dhcp client)
                                                                                   |
                                                                                   |----------pc6(dhcp proxy) 
pc1、pc2 属于192.168.0.0/24网段;pc3为路由器;pc4、pc5、pc6为192.168.1.0/24网段,在这个网络中又两个DHCP服务器,两个相互冗余

     二、实验目的

  1、了解Windows DHCP服务器的安装过程
  2、了解Windows DHCP服务器的工作过程
  3、掌握Windows DHCP服务器的配置和管理
  4、理解DHCP中继代理概念,会用windows客户机或者路由器做DHCP中继代理获取TCP/IP参数。
  5、掌握备份和还原DHCP数据库
  6、浅谈路由器做DHCP服务器或DHCP中继代理
     二、实验过程
       1.配置DHCP服务器

         配置tcp/ip信息,授权域环境下的dhcp服务器

         新建作用域

         作用域名称

          ip地址范围

          保留的dhcp地址ip

          默认租期

          暂时不配置dhcp选项
[

          激活

           基本完成dhcp服务器配置

          客户端获得简单的ip信息
      2.保留
         端保留可以确保让某台计算机总是获得同一个IP地址,而这个IP地址实际跟计算机的MAC地址绑定在一起的
         配置保留ip与mac[实际经验保留获得到ip的时间要比一般的长一点点]
         保留也可以配置选项,它只针对保留的ip配置选项
     3.配置作用域选项
        作用域先项可以配置比如DNS,GT,等等
        服务器选项>作用域选项>保留选项

     4.配置中继dhcp代理

        启用路由与远程访问[这里就不多说了,上面写了方法]

        然后配置接口
   
        上面的“跃点计数阈值”是中继代理通信可以跨过的最大跳数,“启动阈值(秒)”是中继代理转发DHCP消息前的等待时间,该选项对希望本地DHCP服务器首先相应,如果 DHCP服务器在规定的时间内不响应,则中继代理就会转发DHCP消息给其他网段的DHCP服务器,默认值都是4
         这样当pc4因为故障时,pc5发广播pc6收到向pc1索取ip.pc6将ip信息发到pc5

     三、维护dhcp数据,灾难恢复
          dhcp最容易受ddos***,备份数据是一个优秀管理员的习惯,

          dhcp备份

          dhcp还原
          当然使用jetpack程序是检测数据完整的和手动备份的工具。这里就不多讲了
          也可使用命令,如下:
            1.依次单击“开始”和“运行”,在“打开”框中键入 cmd ,然后单击“确定”。
            2.键入如 netsh dhcp server export C:\dhcp.txt all , 回车 。
              注意:须具有本地管理员权限才能导出数据。
            3.将文件复制到新服务器上。
            4.键入如 netsh dhcp server import C:\dhcp.txt all ,回车。
          实际中,如果考虑到机器的损坏,建议也备份reg,将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer子键导出