一.DHCP的基本概念
1.DHCP的定义
DHCP<动态主机配置协议>是TCP/IP协议集所提供的一种实现自动分配IP配置信息的子协议。
2.DHCP的功能
① 动态分配(每一个IP地址都具有租约)
② 分配网关、WINS、DNS系统信息
③ 与DNS相结合实现动态更新
④ 保留IP地址给指定主机
3.DHCP的体系结构
DHCP服务器:运行DHCP服务软件包和DHCP协议的主机
(装有WIN2K、WINNT、LINUX、UNIX系统的主机)
DHCP客户机:运行DHCP协议可以发送DHCP请求的主机
(装有WIN2K、WINNT、WIN95/98/ME/XP、LINUX、UNIX系统的主机)
4.分配IP地址过程
 
① CLIENT发送广播DHCPDISCOVER寻找DCHP服务器。
② 服务器发送广播DHCPOFFER响应CLIENT的请求。
③ CLIENT会检查得到的IP信息是否完整并且发送广播DHCPREQUEST通知DHCP服务器已获得IP地址。
④ SERVER发送广播DHCPACK确认客户机的请求,表示分配成功。
5.更新租约
 ①  每次DHCP客户端重新启动时, 都会自动利用广播的方式,给DHCP服务器发送DHCPREQUEST更新信息,要求继续租用原来的IP地址
② 50%时,CLIENT以点到点方式发送DHCPREQUEST请求服务器的更新租约。
③ 87.5%时,CLIENT发送广播DHCPREQUEST寻找其他DHCP服务器,如果更新成功的话,DHCP服务器向CLIENT发送DHCPACK;如果不成功的话则发送DHCPNACK。
二.DHCP服务的配置
1.安装DHCP的服务软件包
#  mount  /dev/cdrom
#  cd  /mnt/cdrom/RedHat/RPMS
#  rpm  –ivh  dhcp-3.0pl1-23.i386.rpm
相关文件和目录:
/var/lib/dhcp目录         :存放租约文件(/var/stat/dhcp)
/etc/dhcpd.conf     :核心配置文件, 要手工创建。
/var/lib/dhcp/dhcpd.leases :客户租约的数据库文件。
/etc/sysconfig/dhcpd  :配置DHCP的启动参数。
/etc/sysconfig/dhcrelay  :配置DHCP中继代理。
/etc/rc.d/init.d/dhcpd (/etc/init.d/dhcpd):DHCP服务的启动脚本
2./etc/dhcpd.conf
#  vi  /etc/dhcpd.conf
格式:
选项/参数(放在所有作用域之上的选项/参数,作用范围是整个DHCP服务器)
声明 {
选项/参数(只在声明中的有效)
}
说明: 
(1) 声明
? subnet  网络号  netmask  子网掩码  { ……..}
功能:定义子网 (定义作用域 )
注意:网络号必须与服务器的网络号相同,如果服务器有多块网卡时,必须为每一个网卡都建立一个相同网络号的子网,但是不用分配地址的子网可以不定义地址范围
? host  主机名 {………}
功能:定义保留地址
注意:通常放在subnet声明中
? group {……..}
功能:定义组参数
注意:常用于包含host声明和subnet声明
? shared-network  名称 {………..}
功能:设置DHCP服务器多个IP子网共享同一个物理网络
注意:通常用于包含多个subnet声明
(2) 参数
? range 起始IP地址   终止IP地址;
功能:定义作用域范围
注意:subnet声明中至少有一个range,也可以在一个subnet中有多个range,但多个range所定义IP范围不能重复。
? ddns-update-style  (none|ad-hoc|interim);
功能:定义动态更新类型
注意:none  表示不支持动态更新
ad-hoc  表示特殊更新模式
interim  表示互动更新模式
在文件中必须包含该参数,且放在第一行
? ignore  client-updates;
功能:忽略客户机更新
注意:该选项只能作为服务器选项
? default-lease-time   数字 ;
功能:指定默认地址租约
注意:可以作为服务器选项和作用域选项,默认单位为秒
? max-lease-time  数字;
功能:指定最长的地址租期
注意:可以作为服务器选项和作用域选项,默认单位为秒
? hardware   硬件类型  硬件地址;
功能:指定硬件接口类型及硬件地址
注意:硬件类型可以取ethernet/token-ring
硬件地址为网卡地址的MAC地址
该选项只能用于host声明中
? fixed-address  ip地址;
功能:定义DHCP客户机指定的IP地址
注意:该选项只能用于host声明中
? server-name  主机名;
功能:通知DHCP客户机服务器的主机名
注意:可以作为服务器选项和作用域选项
(3) 选项
? option  domain-name   “域名”;
功能:为客户机指明DNS域名
注意:可以作为服务器选项和作用域选项
? option  domain-name-servers  ip地址[,ip地址…………];
功能:指定客户机的DNS服务器的地址
注意:可以作为服务器选项和作用域选项
? option  routers  ip地址[,ip地址……….];
功能:为客户机指定默认网关
注意:可以作为服务器选项和作用域选项
? option   netbios-name-servers  ip地址[,ip地址……..];
功能:为客户机指定WINS服务器地址
注意:可以作为服务器选项和作用域选项
? option  broadcast-address  广播地址;
功能:设置客户机的广播地址
注意:可以作为服务器选项和作用域选项
? option  subnet-mask  子网掩码;
功能:设置客户机的子网掩码
注意:可以作为服务器选项和作用域选项
? option  nis-domain   “名称”;(应用于LINUX客户机)
功能:定义客户机的所属NIS域的名称
注意:可以作为服务器选项和作用域选项,且只对unix/linux客户机有效
? option  nis-servers  ip地址[,ip地址……];
功能:定义客户机的NIS域服务器的地址
注意:可以作为服务器选项和作用域选项,且只对unix/linux客户机有效
实例:设置dhcpd.conf文件,达到以下要求:
(1) 不支持dns动态更新,且忽略客户机的更新
(2) 服务器的默认地址租约时间为3600秒,最大地址租约时间为7200秒
(3) 所有作用域的客户机后缀域名为abc.com,DNS服务器地址为192.168.0.254
(4) 所有作用域的客户机默认网关地址192.168.0.1
(5) 定义作用域192.168.0.0子网,地址掩码为255.255.255.0,地址范围为192.168.0.2-----192.168.0.250
(6) 保留192.168.0.0子网中的192.168.0.8给以太网卡物理地址为00:E0:4C:70:33:65的客户机
#vi   /etc/dhcpd.conf
ddns-update-style  none;
ignore  client-updates;
default-lease-time   3600;
max-lease-time   7200;
option routers 192.168.0.1;
option domain-name “abc.com”;
option domain-name-servers  192.168.0.254;
subnet  192.168.0.0  netmask  255.255.255.0 {
range  192.168.0.2  192.168.0.250;
host  c1 {
hardware   ethernet  00:E0:4C:70:33:65;
fixed-address  192.168.0.8;
}
}
3.设置DHCP守护进程的工作参数
#vi   /etc/sysconfig/dhcpd
DHCPDARGS=eth0(设置DHCP守护进程监听网卡接口)
4. 启动DHCP服务器
#service dhcpd  start
三.DHCP客户端的配置
1.Linux客户端
(1)设置网卡采用dhcp启动协议,自动获取ip地址信息
#vi   /etc/sysconfig/network-scripts/ifcfg-ethX(X可以0,1,2……)
修改BOOTPROTO为:
BOOTPROTO=dhcp
(2)获取IP地址
#ifdown ethX ;ifup ethX  (X可以取0,1,2,……)
注意:linux系统的dhcp客户端使用dhclient脚本来获取IP地址信息
2.Windows客户端
(1)右击网上邻居----属性------双击tcp/ip协议----选择“自动获动IP地址”
(2)c:\>ipconfig/release
c:\>ipconfig/renew
四.配置案例
要求:一台RedHat Linux主机,eth0的ip地址为:192.168.0.1,现要求利用dhcpd软件制做一台满足以下要求的DHCP服务器:
(1) 不支持dns动态更新,且忽略客户机的更新
(2) 服务器的默认地址租约时间为3600秒,最大地址租约时间为7200秒
(3) 所有作用域的客户机后缀域名为abc.com,DNS服务器地址为192.168.0.254
(4) 所有作用域的客户机默认网关地址192.168.0.1
(5) 定义作用域192.168.0.0子网,地址掩码为255.255.255.0,地址范围为192.168.0.2-----192.168.0.250
(6) 保留192.168.0.0子网中的192.168.0.8给以太网卡物理地址为00:E0:4C:70:33:65的客户机
(7)绑定dhcp服务在eth0接口上
配置过程:
(1) #  rpm  –ivh  dhcp-3.0pl1-23.i386.rpm
(2) # vi  /etc/dhcpd.conf
ddns-update-style none;
ignore  client-updates;
default-lease-time   3600;
max-lease-time   7200;
option routers 192.168.0.1;
option domain-name “abc.com”;
option domain-name-servers  192.168.0.254;
subnet  192.168.0.0  netmask  255.255.255.0 {
range  192.168.0.2  192.168.0.250;
host  c1 {
hardward   ethernet  00:E0:4C:70:33:65;
fixed-address  192.168.0.8;
}
}
(3) #vi  /etc/sysconfig/dhcpd
         DHCPDARGS=eth0
(4) # /etc/rc.d/init.d/dhcpd  restart
五.补充内容
1.DHCP中继代理设置
#vi   /etc/sysconfig/dhcrelay
INTERFACES=“eth0”          设置与DHCP服务器相连的接口名
DHCPSERVERS=“192.168.2.1”  设置DHCP服务器的地址
#service  dhcrelay   start
2.DHCP服务的部署
(1) 小型网络中可以只用一台DHCP服务器管理整个网络的IP地址, 对于一些dns,wins,web服务器应使用静态ip
(2) 大型网络由多个路由器相连时,可以在每个子网设置一台DHCP服务器,或者通过DHCP中继,再或者是通过RFC 1542路由器实现跨路由分配分配IP地址
(3) 在大型网络可以有多台DHCP服务器,并且相互提供备份,所谓的备份就是每个服务器同时建立所备份服务器的作用域,但作用域范围不能重复
注:当一台计算机作为服务器时,最好用静态ip地址,来减少一些不必要的麻烦。