dhcp(Dynamic host configuration protocol)动态主机配置协议


dhcp前身是bootp(引导程序协议),用于无盘主机连接的网络上面的,网络主机使用BOOTROM而不是硬盘启动并连接网络。
bootp可以自动的为那些主机设定TCP/IP环境,bootp缺点是在设定前必须事先获取客户端网卡mac地址,而且与IP对应是静态的,缺乏“动态性”,如果在有限的IP资源环境中,bootp的一对一对应是很浪费的。


dhcp八种报文{DHCPDISCOVER|DHCPOFFER|DHCPREQUEST|DHCPACK|DHCPNAK|DHCPRELEASE|DHCPDECLINE|DHCPINFORM}


dhcp八种状态

{INIT|SELECTING|REQUESTING|BOUND|RENEWING|REBINDING|REBOOT|HALT}


dhcp相关概念

dhcp server:dhcp服务器

dhcp client:dhcp客户端

dhcp relay:dhcp中继

dhcp security:dhcp安全特性,实现合法用户ip地址表管理功能

dhcp snooping:dhcp监听,记录通过二层设备申请到IP地址的用户信息


dhcp分配形式有两种

1、自动分配方式(automatic allocation)dhcp服务器可以给主机 一个永久的ip地址

2、动态分配方式(dynamic allocation)dhcp服务器给主机指定一个有时间限制(租约)的ip地址,到了租约(lease)或主机放弃(release)这个地址,则这个地址可以被其他主机使用。客户端也可以比其他主机更优先的延续(renew)租约,或租用其他ip


dhcp实现原理

发现阶段、提供阶段、选择阶段、确认阶段、重新登录、更新租约


dhcp客户端从dhcp服务器获取ip四个步骤

a、DHCP客户端发出DHCPDISCOVER报文,设置报文目的IP地址为255.255.255.255,向网络广播。
b、服务器向回应客户端的 DHCPoffer 包,目的告诉客户端,提供IP地址。
c、 DHCPREQUEST 包,客户端向服务器请求IP地址。
d、 DHCPACK 包,确认包,服务器向客户端分配IP地址。

*如果网络中有多个DHCP服务器,则客户端接受响应速度最快的那个DHCP服务器。



dhcp优点

可以验证ip地址和其他配置参数、不用检查每台主机

dhcp不会同时租借相同IP地址给两台主机

dhcp可以约束特定计算机使用特定ip地址

可以为每个dhcp作用域设置很多选项

客户机在不同子网移动时不需要重新设置ip地址


dhcp缺点

dhcp不能发现网络上非dhcp客户机已经在使用的IP地址

当网络上存在多个dhcp服务器时,一个dhcp服务器不能查出已被其他服务器租出去

dhcp服务器不能跨路由与客户机通信,除非路由允许dhcp转发



dhcp安装(rpm包安装,dhcp安装包在光盘镜像中)

#rpm -ivh /media/cdrom/Packages/dhcp-4.1.1-34.P1.el6.x86_64.rpm

#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf             //默认dhcp配置文件没有配置,需要复制dhcp配置文件模板


源码包安装

获取dhcp安装包ftp://ftp.isc.org/isc/dhcp
#wget ftp://ftp.isc.org/isc/dhcp/dhcp-4.0.3.tar.gz

解压安装编译dhcp

#tar zxvf dhcp-4.0.3.tar.gz

#cd dhcp-4.0.3

#./configure --prefix=/usr/local/dhcp && make && make install

生成地址池文件,该文件记录分配出去的ip

#touch /var/db/dhcp/dhcpd.lease                //必须创建。*centos是/var/db/下,redhat是/var/state/下


生成dhcp主配置文件

#cp /usr/local/dhcp/etc/dhcpd.conf.example /usr/local/dhcp/etc/dhcpd.conf



讲解dhcpd.conf文

#more /etc/dhcp/dhcpd.conf
broadcast-address                #广播地址
routers                          #网关地址
domain-name                      #DNS域名
domain-name-servers              #DNS域名地址
subnet-mask                      #分配子网
host-name                        #分配主机
nis-name                         #分配nis域名
ntp-server                       #分配时间服务器
time-offset                      #格林威治时间和偏移时间
client-updates                   #客户端更新
ddns-update-style                #配置dhcp-dns互动更新模式
default-lease-time               #默认最大租约时间长度,单位秒
max-lease-time                   #最大租约长度,单位秒
hardware                         #指定网卡接口类型
server-name                      #dhcp服务器名称
get-lease-hostname flag          #检测客户端使用ip地址
fixed-address ip                 #分配客户端固定ip地址
authritative                     #拒绝不正确的IP地址要求
shared-network                   #多个子网分配时需要定义
subnet                           #描述IP子网
rang IP IP                       #定义分配ip的地址范围
host 主机名称                     #需要绑定的IP主机IP--MAC
group                            #为一个组参数提供说明
allow unknown-clients
deny unknow-clients              #是否动态分配IP给未知客户端
allow botp;deny bootp            #是否响应激活查询
allow booting;deny booting       #是否响应使用者查询




示例一


#more /etc/dhcp/dhcpd.conf
option domain-name "zhuxy.com";             #指定域名
option domain-name-servers dns.zhuxy.com;   #指定DNS
default-lease-time 600;                     #默认租约时间s
max-lease-time 7200;                        #最大租约时间s
log-facility local7;                        #日记级别
ddns-update-style interim;                  #DNS更新类型
subnet 192.168.1.0 netmask 255.255.255.0    #指定网段为192.168.1.0/24
  {
    range 192.168.1.11 192.168.1.253;       #可以分配的客户端IP范围
    option domain-name-servers "dns.zhuxy.com"; #指定客户端DNS
    option domain-name "zhuxy.com";         #指定客户端域名
    option routers 192.168.1.1;             #指定客户端网关
    option subnet-mask 255.255.255.0;       #指定客户端掩码
    option broadcast-address 192.168.1.255; #指定客户端广播地址
    option time-offset -28800;              #指定时间s,(北京时间与格林威治时间偏差为8小时)
    default-lease-time 600;                 #指定客户端默认租约时间s
    max-lease-time 7200;                    #指定客户端最   大租约时间s
host boss                                   #老板计算机声明
 { 
    hardware ethernet 00:E0:4C:03:7A:3F;    #绑定老板mac地址
    fixed-address 192.168.1.88;             #指定为mac地址分配的的IP地址
 }
host admin                                  #管理员计算机声明
 {
    hardware ethernet 00:E0:4C:00:04:26;    #绑定admin mac地址
    fixed-address 192.168.1.253;            #指定为mac地址分配ip地址
 }
    }

启动dhcp服务

如果只有一块网卡则

#/usr/local/dhcp/sbin/dhcpd

如果双网卡

#/usr/local/dhcp/sbin/dhcpd eth0