搭建DHCP服务器实现动态主机配置
DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,提供了动态配置IP地址的功能,同时在一定上缓解了IP地址缺乏的问题
dhcp后台进程:dhcpd ; 执行文件:/usr/sbin/dhcpd ; 启动脚本:/etc/rc.d/init.d/dhcpd ; 使用端口:67(bootps),68(bootpc)
相关RPM包:dhcp-3.0.5-3.el5.i386.rpm     (第三张光盘) 默认未装
              dhcp-devel-3.0.5-3.el5.i386.rpm (第三张光盘) 默认未装
还有一些与dhcp相关的rpm包在第二,三张光盘中暂不用装
下载地址: http://www.isc.org
源代码最新版本:
安装rpm程序包:#rpm –ivh dhcp-3.0.5-3.el5.i386.rpm;# rpm –ivh dhcp-devel-3.0.5-3.el5.i386.rpm
#service  dhcpd  start     =/etc/rc.d/init.d/dhcpd start   启动dhcpd服务
#service  dhcpd  stop     =/etc/rc.d/init.d/dhcpd stop    停止dhcpd服务
#service  dhcpd  restart   =/etc/rc.d/init.d/dhcpd restart  重启dhcpd服务
#service  dhcpd status     =/etc/rc.d/init.d/dhcpd status    检查dhcpd服务状态
# ntsysv 或 #chkconfig  -–level  35  dhcpd  on         更改服务自动加载
dhcpd的相关配置文件:/var/lib/dhcpd/dhcpd.leases租约文件记录租约的起始与到期日的档案
                       /var/log/messages登录信息文件,用于排错
                     /usr/share/doc/share3.0.1/dhcpd.conf.sample dhcpd.conf主配置文件的示范文件
                       /etc/dhcpd.conf 主配置文件,需从示范文件复制
注意:
(1)在启动dhcp服务之前,应确认提供DHCP服务器的网络接口具有固定的IP地址(即采用静态的网络地址配置方式),并且该网络接口的IP地址通常与DHCP服务器中进行动态分配的地址(范围)属于同一网段。
(2)dhcp的主配置文件/etc/dhcpd.conf默认情况下是不存在的(实际是空的),需要用户自行创建,然而,在安装dhcp服务时会安装一个示范文件 ,即“/usr/share/doc/share3.0.1/dhcpd.conf.sample”,在配置dhcp服务时,可将此文件改名为dhcpd.conf,再复制到/etc目录下,然后根据需要进行编辑。另在dhcpd.conf文件中,每行开头的“#”表示注释外,其它每一行都必须以“;”号结尾。
配置文件dhcpd.conf格式为:
选项/全局参数
 声明
{
  选项/局部参数
 }
声明:用于定义网络布局,提供给客户端的IP地址等,包括
     shared-network 名称 {…}  ……………定义超级作用域
     subnet 网络号 netmask 子网掩码 {…} 定义作用域或IP子网
 range  起始IP地址  终止IP地址 ……定义作用域(或IP子网范围)
  host  主机名 {…}  ……………………..定义保留地址
  group  {…}   ……………………….......定义一组参数
参数:用于配置DHCP服务功能,全局参数和局部参数,包括
ddns-update-style  类型 …………. …定义所支持的DNS动态更新类型(必选)
allow/ignore  client-updates ……….允许/忽略客户机更新DNS记录
default-lease-time  数字 ………………..指定默认的租用期限,单位:秒
max-lease-time  数字 ………………….指定最大租用期限,单位:秒
hardware  硬件类型和MAC地址…….指定网卡接口类型和MAC地址
server-name  主机名 …………………..通知DHCP客户机服务器的主机名
fixed-address  IP地址 …………………分配给客户端一个固定的IP地址
选项;全部用option关键字作为开头,常用的选项包括
      option  subnet-mask  子网掩码 ……………….为客户端指定子网掩码
      option  domain-name  “域名”……………….为客户端指定DNS域名
      option  domain-name-server  IP地址………….为客户端指定DNS服务器的IP地址
      option  host-name  “主机名” …………………..为客户端指定主机名
      option  routes  IP地址 ………………………...为客户端指定默认网关
      option  broadcast-address  广播地址 …………为客户端指定广播地址
      option  netbios-name-servers  IP地址…………为客户端指定WINS服务器的IP地址
      option  netbios-node-type  节点类型 ………….为客户端指定节点类型
      option  ntp-server  IP地址 ……………………为客户端指定网络时间服务器的IP地址
      option  nis-server  IP地址 …………………...为客户端指定NIS域服务器的地址
      option  nis-domain  “名称” ………………..…为客户端指定所属的NIS域的名称
      option  time-offset   偏移差 ………………....为客户端指定与格林尼治时间的偏移差
DHCP的主配置文件/etc/dhcpd.conf内容说明:
ddns-update-style interim;         (全局参数,指定DHCP服务器支持的DNS动态更新的方式为interim)
ignore client-updates;             (全局参数,指定不允许客户机更新DNS记录)
subnet 192.168.0.0 netmask 255.255.255.0 {  (声明IP地址范围,设置子网的网络地址和子网掩码,通常一个IP作用域对应一个IP子网段值得注意的是,语句中的子网ID必须与DHCP服务器所在的网络ID相同)      
# --- default gateway
    option routers          192.168.0.1;     (设置DHCP客户端的默认网关的地址)
    option subnet-mask      255.255.255.0;   (设置DHCP客户端的子网掩码)
    option nis-domain       "domain.org";
    option domain-name      "domain.org";    (设置DHCP客户端的DNS域名,将与客户端主机名称一起组成主机全名)
    option domain-name-servers  192.168.1.1; (设置DHCP客户端的DNS服务器IP地址)
    option time-offset      -18000; # Eastern Standard Time  (指定与格林尼治时间的偏移差)
#   option ntp-servers      192.168.1.1;
#   option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#   option netbios-node-type 2;
range dynamic-bootp 192.168.0.128 192.168.0.254; (动态IP地址池,可分配的IP地址范围,只用于本地网络可删去dynamic-bootp通常一个IP作用域对应一个IP子网段。IP子网段可用一个或多个range语句来描述,但是多个range所定义的IP范围不能重复,例如:
subnet 192.168.12.0 network 255.255.255.0
{
  range  192.168.12.10  192.168.12.100;
  range  192.168.12.150  192.168.12.200;
}
    default-lease-time 21600;         (设置默认的租用时间长度,单位为秒)
    max-lease-time 43200;             (设置客户端租用IP地址的最长时间,单位为秒)
    # we want the nameserver to appear at a fixed address
    host ns {                         (设置静态IP地址,host后面为需分配固定IP的主机的主机名)
        next-server marvin.redhat.com;
        hardware ethernet 12:34:56:78:AB:CD; (客户端网卡的MAC地址)
        fixed-address 207.175.42.254;        (固定分配的IP地址)
    }
}
DHCP服务器会从动态分配地址范围的高端开始分配IP地址,与WINDOW服务器中的DHCP服务器有区别
多网络接口时需要配置的文件
  作为DHCP服务器使用的主机通常会拥有多个网络接口,而dhcp服务可能只需要在其中一个网络接口上提供服务,此时可以在/etc/sysconfig/dhcpd文件中指定需要提供dhcpd服务的网络接口,/etc/sysconfig/dhcpd文件中默认的DHCPDARGS设置项为空,可修改为指定的网络接口名称,例如eth0,这样dhcpd将只在eth0网络接口上提供DHCP服务。改成:DHCPDARGS=eth0
另一个范本
为多个网段分配动态IP(DHCP中继)
如果在一个规模比较大的物理网络中存在多个IP子网,而多个IP子网的主机都需要DHCP服务器一提供地址配置信息,可以采用在一个子网中安装DHCP服务器,并让其为多个子网分配IP地址的方案。DHCP中继代理功能就能够使DHCP服务器向多个风段提供动态IP分配服务。DHCP中继代理允许将无DHCP服务器的子网内的DHCP客户请求转发给其他子网内的一个或多个DHCP服务器。以下设置将使DHCP服务器向多个网段提供动态IP分配服务.
(1)定义共享网络:在DHCP服务器(位于子网1中,IP地址为192.168.57.129)的dhcpd.conf文件中,添加shared-network语句,向DHCP服务器声明子网1,子网2,子网3都是共享网络:
ddns-update-style interim;
ignore client-updates;
shared-network share
{
    option subnet-mask 255.255.255.0;
    option domain-name "domain.org";
    option domain-name-servers 192.168.57.1,159.226.39.7;
    option broadcast-address 192.168.57.255;
    default-lease-time 21600;
max-lease-time 43200; (subnet语句的括号外的选项对三个子网都会起作用,而在三个子网各自的subnet语句括号内的
选项,只作用于该子网)
      subnet 192.168.57.0 netmask 255.255.255.0
{
          range 192.168.57.10 192.168.57.200;  
          option routers 192.168.57.2;
          host pc1
{
              hardware ethernet 00:a0:cc:cf:9C:14;
              fixed-address 192.168.57.11;
             }
          host pc2
 {
              hardware ethernet 04:20:c1:f8:37:11;
              fixed-address 192.168.57.12;
             }
          }
      subnet 192.168.58.0 netmask 255.255.255.0
{
          range 192.168.58.100 192.168.58.150; 
          option routers 192.168.58.1;
           host pc1
             {
                hardware ethernet A1:35:62:C3:31:65;
                fixed-address 192.168.58.101
}
          }
      subnet 192.168.59.0 netmask 255.255.255.0
{
          range 192.168.59.111 192.168.59.222; 
          option routers 192.168.59.1;
       }
}
(2)DHCP中继代理:在安装DHCP服务器时,同时安装了DHCP中继代理dhcrelay工具。一般情况下,DHCP中继代理监听所有接口上的DHCP请求,也能够向某个子网指定DHCP中继代理。在上面的dhcpd.conf文件中,假设DHCP服务器位于子网1内,则用DHCP中继代理子网2,子网3提供DHCP服务。子网2,子网3的网卡分别对应为eth1,eth2.
编辑/etc/sysconfig/dhcrelay配置文件,将语句INTERFACES=“”改为INTERFACES=“eth1 eth2”,同时,将语句DHCPSERVERS=“”改为DHCP服务务器的IP地址,即“192.168.57.129”。即写成:INTERFACES=“eth1 eth2”
                                                DHCPSERVERS=“192.168.57.129”
然后使用此命令实现DHCP中继代理:#dhcrelay -i eth1 -i eth2 192.168.57.129 参数-i表示DHCP中继代理通过指定的网络接口向指定的子网提供DHCP服务,如果没有-i参数,则表示向所有子网提供服务。
除了使用DHCP中继代理外,还可以通过选用具有DHCP/BOOTP中继功能(定义在RFC 1542)的路由器,以支持DHCP服务器实现跨网段分配IP地址。
关于DHCP服务器双机备份
DHCP服务器的双机备份目的是保证网络的稳定性,可靠性。当一台DHCP服务器出现故障时,可以使用备份DHCP服务器,保证网络用户能够获得IP配置,正常访问网络。DHCP服务器的双机备份要求提供的IP地址范围不能重复,以防止一台DHCP服务器出现故障时,备份DHCP服务器分配的IP地址与发生故障的DHCP服务器已分配的IP地址发生冲突。实际上,DHCP的双机备份,是通过分割可用的IP地址范围实现的。将可用的IP地址范围划分给多台备份DHCP服务器,实现DHCP的备份。例 如,DHCP服务器上配置为:
subnet 192.168.59.0 netmask 255.255.255.0
                                {
      range 192.168.59.10 192.168.59.110;
      option broadcast-address 192.168.59.255;
      option routers 192.168.59.1;
      option domain-name-servers 192.168.59.1,159.226.39.7;
}
而备份DHCP服务器上的配置为:subnet 192.168.59.0 netmask 255.255.255.0
                                 {
      range 192.168.59.111 192.168.59.200;
      option broadcast-address 192.168.59.255;
      option routers 192.168.59.1;
      option domain-name-servers 192.168.59.1,159.226.39.7;
}
 
                           关于静态IP分配和动态IP分配
DHCP服务器是以地址租约的方式为DHCP客户端提供服务的。它有以下两种方式
1.限定租期(动态IP分配)
当DHCP客户端向DHCP服务器租用到IP地址后,DHCP客户端可以使用该IP地址一段时间,当租约快到期时,客户端必须向DHCP服务器提出续约请求,请求成功后可以继续使用该IP地址。如果客户端没有续约或续约不成功,服务器就会将该IP地址回收,分配给其他DHCP客户端使用。当然原DHCP客户端之后还需要IP地址的话,它可以向DHCP服务器重新租用其他地址。这种方式是一种动态分配的方式,可以很好地解决IP地址不够用的问题。
2.永久租用(静态IP分配)
当DHCP客户端向:DHCP服务器租用到IP地址后,这个地址就永久地分配给这个DHCP客户端使用(它是通过客户端网卡上的MAC地址来识别的)了。采用这种方式的前提是公司中的IP地址足够使用,这样DHCP客户端就不必频繁地向DHCP服务器提出续约请求。
关于DHCP客户端的配置
Linux中DHCP客户端的配置
dhclient
直接从dhcp中获取地址
/etc/dhclient.config
默认没有,同样拷贝过来
# dhclient.conf
interface "eth0"{
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
}
# end dhclient.conf
或者
①直接编辑文件/etc/sysconfig/network-scripts/ifcfg-ethO,找到语句"BOOTPROTO=none"将其改为“BOOTPROTO=dhcp”即可
②重新启动网卡,可在该客户端的本地终端窗口下执行下面的命令:
ifdown eth0;ifup eth0
ifconfig eth0 down;ifconfig eth0 up
③测试该DHCP客户端是否已配置好,可执行下面的命令
ifconfig eth0
Windows 2000/XP/2003中DHCP客户端的配置
选自动获得IP和自动获得DNS
测试 ipconfig /all
更新租约 ipconfig /renew
释放IP ipconfig /release
 
1                          租约期限
租约期限是在DHCP服务器上指定的时间长度,在这个时间范围内DHCP客户端可以临时使用从DHCP服务器租借到的IP地址。如果客户端在租约到期前,没有更新租约,则DHCP服务器会收回该IP地址,并将该IP地址提供给其他的DHCP客户端使用。如果原DHCP客户端之后还需要IP地址的话,它就可以向DHCP服务器重新申请租用另一个IP地址。
当然,DHCP客户端可以在租约未到期前更新租约。实际上,每当DHCP客户端重新启动时,以及经过租约期限的1/2后,都会主动向DHCP服务器要求更新租约。只要能够成功更新租约,DHCP客户端就可以继续使用其IP地址,并且会重新取得一个新的租约。
 
在dhcpd.conf文件中,有下面两个与租约期限有关的设置。
1.默认的租约期限
可用default-lease-time语句来设置默认的租约时间长度,其单位为秒
default-lease-time 86400; #1天
 
2.最大租约期限
可用max-lease-time语句来设置客户机租用IP地址的最长时间
max-lease-time 172800;                #2天
 
一旦网络上的DHCP客户端开始从DHCP服务器中租用了IP地址,租用信息就会被记录在/var/lib/dhcp/dhcpd.leases文件中,该文件会不断被更新.从该文件中就可查看到IP地址分配情况,包括每个租用的IP地址及对应的MAC地址、租约的起始时间和结束时间等信息。
 
tail -f /var/lib/dhcp/dhcpd.leases
查看dhcp更新记录
2                          ☆保留特定的IP地址
可以保留特定的IP地址给指定的DHCP客户端使用,也就是说,当这个客户端每次向DHCP服务器索取1P地址或更新租约时,DHCP服务器都会给该客户端分配相同的IP地址。这种DHCP服务器为DHCP客户端分配IP地址的方式,通常也被称为静态分配IP或固定分配IP。
要保留特定的IP地址给指定的DHCP客户端使用,可先用arp命令查出该客户端网卡的MAC地址;然后在/etc/dhcpd.conf文件中,加入如下格式的host语句
host 主机名 {
hardware ethernet  网卡的MAC地址;               #指定DHCP客户端网卡的MAC地址
fixed-address  IP地址;                              #指定为该DHCP客户端分配的IP地址
IP参数;                                                #指定默认网关等其他IP参数
}
先ping -c 3 192.168.152.131
看是否在线
用arp看刚才ping的ip所对应的MAC地址(获得MAC地址)
最后在/etc/dhcpd.conf中加
host pcl{
    hardware ethernet 00:0C:29:B0:B2:EB;
    fixed-address 192.168.152.131;
}