DHCP 工作流程:
1. DHCP请求IP地址的过程
-- 发现阶段(DHCPDISCOVER), 即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCPDISCOVER包,只有DHCP服务器才会响应。
-- 提供阶段(DHCPOFFER), 即DHCP服务器提供IP地址的阶段。 DHCP 服务器接收到客户端的DHCPDISCOVER报文后,从IP地址池中选择一个尚未分配的IP地址分配给客户端,向该客户端发送包含租借的IP地址和其他配置信息的DHCPOFFER包。
-- 选择阶段(DHCPREQUEST), 即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器( DHCPServer )向该客户端发送DHCPOFFER包,客户端从中随机挑选,然后以广播形式向各DHCP服务器回应DHCPREQUEST包,宣告使用它挑中的DHCP服务器提供的地址,并正式请求该DHCP服务器分配地址。其它所有发送DHCPOFFER包的DHCP服务器接收到该数据包后,将释放已经OFFER(预分配)给客户端的IP地址。
如果发送给DHCP客户端的DHCPOFFER包中包含无效的配置参数,客户端会向服务器发送DHCPCLINE包拒绝接受已经分配的配置信息。
-- 确认阶段(DHCPACK), 即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCPREQUEST包后,便向客户端发送包含它所提供的IP地址及其他配置信息的DHCPACK确认包。然后,DHCP客户端将接收并使用IP地址及其他TCP/IP配置参数。
2. DHCP客户端续租IP地址的过程
--DHCP服务器( DHCPServer )分配给客户端的动态IP地址通常有一定的租借期限,期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP租约。实际使用中, 在IP地址租约期限达到一半时 ,DHCP客户端会自动向DHCP服务器发送DHCPREQUEST包,以完成IP租约的更新。如果此IP地址有效,则DHCP服务器回应 DHCPACK 包,通知DHCP客户端已经获得新IP租约。
如果DHCP客户端续租地址时发送的DHCPREQUEST包中的IP地址与DHCP服务器当前分配给它的IP地址(仍在租期内)不一致,DHCP服务器将发送 DHCPNAK 消息给DHCP客户端。
3. DHCP客户端释放IP地址的过程
--DHCP客户端已从DHCP服务器获得地址,并在租期内正常使用,如果该DHCP客户端不想再使用该地址,则需主动向DHCP服务器发送 DHCPRELEASE 包,以释放该地址,同时将其IP地址设为0.0.0.0。
DHCP配置文件通常包括3部分 :declarations, parameters, options。
declarations:描述网络的布局;描述客户;提供客户的地址。
parameters:表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。
option:配置DHCP可选参数。
常用声明(declarations) :
shared-network 告知DHCP服务器是否为一些子网络分享相同网络
subnet 描述一个IP是否属于子网
range 提供动态分配IP地址的起始和结束范围
host 为特定的主机提供网络参数
group 为一组参数提供声明
常用参数(parameters) :
ddns-update-style 配置DHCP-DNS互动更新模式
default-lease-time 指定默认租赁时间的长度,单位为秒
max-lease-time 指定最大租赁时间长度,单位为秒
hardware 指定网卡接口类型和MAC地址
server-name 告知DHCP客户服务器名称
fixed-address 为客户端指定一个固定的IP地址
常用选项(option) :
domain-name 为客户端指定域名
domain-name-servers为客户端指明DNS服务器IP地址
host-name 为客户端指明主机名称
routers 为客户端指明默认网关
broadcast-address 为客户端设定广播地址
subnet-mask 为客户端设定子网掩码
ntp-server 为客户端设定格林威治时间的偏移时间,单位为秒
下面是一个 DHCP Server 配置文件的例子 :
如果是Linux系统的话就按下面操作:
1、先挂载光盘 #mount /dev/cdrom /media
2、然后安装DHCP服务器安装包 #rpm -ivh /media/Server/dhcp-3.0.5-3.el5.i386.rpm
3、复制dhcp服务器配置示例文件到/etc下并改名为dhcpd.conf
#cd /usr/share/doc/dhcp-3.0.5/
#cp dhcpd.conf.sample /etc/dhcpd.conf这一步会有一个是否覆盖,写y就行了
4、修改dhcp服务器的配置文件:#vi /etc/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#[root@pact config]# cat /usr/share/doc/dhcp*/dhcpd.conf.sample
ddns-update-style interim; #ddns-update-style 配置DHCP-DNS互动更新模式
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 { #subnet 描述一个IP是否属于子网
# --- default gateway
option routers 192.168.0.1; #为客户端指定默认网关
option subnet-mask 255.255.255.0; #设置客户端的子网掩码
option nis-domain "domain.org";
option domain-name "domain.org"; #为客户端指定域名
option domain-name-servers 192.168.1.1; #为客户端指定DNS服务器地址
option time-offset -18000; # 为客户端设定格林威治时间的偏移时间,单位为秒
# 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地址的起始和结束范围
default-lease-time 21600; #指定默认租赁时间的长度,单位为秒
max-lease-time 43200; #指定最大租赁时间长度,单位为秒
# we want the nameserver to appear at a fixed address
host ns { #host 为特定的主机提供网络参数
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD; #指定网卡接口类型和MAC地址
fixed-address 207.175.42.254; #为客户端指定一个固定的IP地址
}
}