DHCP原理
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是用于对多个客户计算机集中分配IP地址以及IP地址相关的信息的协议,这样就能将IP地址和TCP/IP的设置统一管理起来,而避免不必要的地址冲突的问题。
工作流程
寻找DHCP Server。
当DHCP客户机第一次登录网络的时候(也就是客户机上没有任何IP地址数据时),它会通过UDP 67端口向网络上发出一个DHCPDISCOVER数据包(包中包含客户机的MAC地址和计算机名等信息)。因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目标地址为255.255.255.255,然后再附上DHCP discover的信息,向网络进行广播。
网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。DHCP Server分配IP地址
当DHCP Server监听到客户机发出的DHCP discover广播后,它会从那些还没有租出去的地址中,选择最前面的空置IP,连同其它TCP/IP设定,通过UDP 68端口响应给客户机一个DHCP OFFER数据包(包中包含IP地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址(预留ip)。
由于客户机在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP Server响应的DHCP OFFER封包则会根据这些资料传递给要求租约的客户。DHCP Client接受IP租约
如果客户机收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCP OFFER(一般是最先到达的那个),并且会向网络发送一个DHCP REQUEST广播数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP Server它将接受哪一台服务器提供的IP地址,所有其他的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。
事实上,并不是所有DHCP客户机都会无条件接受DHCP Server的OFFER,特别是如果这些主机上安装有其它TCP/IP相关的客户机软件。客户机也可以用DHCP REQUEST向服务器提出DHCP选择,这些选择会以不同的号码填写在DHCP Option Field里面。客户机可以保留自己的一些TCP/IP设定。租约确认
当DHCP Server接收到客户机的DHCP REQUEST之后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。
如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。DHCP Client重新登录
以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。更新租约
DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
DHCP服务器提供以下两种配置方法
- 地址池:
这种方法指定了一个用来动态的提供给第一个访问网络的DHCP客户端的IP地址池(有时也称作区域或范围)。当DHCP客户端离开网络超过一定时间后,IP地址就会被回收到地址池以供其它DHCP客户端使用。 - MAC地址:
这种方法强制使用DHCP来区别每一块连接上网络的网卡的硬件地址,之后这块网卡每次连上网络请求DHCP服务时都为它提供这个固定的IP地址。
DHCP配置
拷贝dhcp的样例文件
模板位置比较深,可以使用rpm –ql dhcp命令进行查找
#cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。
参 数 | 解 释 |
---|---|
ddns-update-style | 配置DHCP-DNS 互动更新模式 |
default-lease-time | 指定确省租赁时间的长度,单位秒 |
max-lease-time | 指定最大租赁时间长度,单位是秒 |
hardware | 指定网卡接口类型和MAC地址 |
server-name | 通知DHCP客户服务器名称 |
get-lease-hostnames flag | 检查客户端使用的IP地址 |
fixed-address ip | 分配给客户端一个固定的地址 |
authritative | 拒绝不正确的IP地址的要求 |
ddns-update-style interim|ad-hoc|none 参数用来设置DHCP服务器与DNS服务器的动态信息更新模式,对于一般的DHCP服务器可不考虑该项设置,但是全局设置中一定要包括这一项,dhcpd才能正常启动,其中interim为DNS互动更新模式,ad-hoc为特殊DNS更新模式,none为不支持动态更新模式。
DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等
声 明 | 解释 |
---|---|
shared-network | 用来告知是否一些子网络分享相同网络 |
subnet | 描述一个IP地址是否属于该子网 |
range 起始IP 终止IP | 提供动态分配IP 的范围 |
host 主机名称 | 参考特别的主 |
group | 为一组参数提供声明 |
allow/deny unknown-clients | 是否动态分配IP给未知的使用者 |
allow/deny bootp | 是否响应激活查询 |
allow/deny booting | 是否响应使用者查询 |
filename | 开始启动文件的名称,应用于无盘工作站 |
next-server | 设置服务器从引导文件中装如主机名,应用于无盘工作站 |
DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始
选 项 | 解释 |
---|---|
subnet-mask | 为客户端设定子网掩码 |
domain-name | 为客户端指明DNS名字 |
domain-name-servers | 为客户端指明DNS服务器IP地址 |
host-name | 为客户端指定主机名称 |
routers | 为客户端设定默认网关 |
broadcast-address | 为客户端设定广播地址 |
ntp-server | 为客户端设定网络时间服务器IP地址 |
time-offset | 为客户端设定和格林威治时间的偏移时间,单位秒 |
多网络接口是需要使用配置的文件 作为dhcp服务器使用的主机通常拥有多个网络接口,而dhcpp服务可能只需要在其中一个网络接口上提供服务,此时可以在“/etc/sysconfig/dhcpd”文件中指定需要提供dhcp服务的网络接口。
#echo “DHCPDARGD=eth0” >> /etc/sysconfig/dhcpd”