一、DHCP服务概述
在一个计算机较多的网络中,如果要为整个企业每个部门的上百台机器逐一进行ip地址的配置绝不是一件轻松的工作。为了方便、简洁地完成这项工作,很多时候会才用动态主机配置协议(Dynamic Host Configuration Protocal,DHCP)来自动为客户端配置ip地址。
DHCP基于客户/服务器模式,当DHCP客户端启动时,它会自动与DHCP服务器通信,要求提供自动分配ip地址的服务,而安装DHCP服务的服务器则会响应要求。
DHCP是一个简化主机ip地址分配管理的TCP/IP标准协议,用户可以利用DHCP服务器管理动态的ip地址分配及其他相关的环境配置工作,如DNS服务器、Gateway的设置。
在DHCP机制中分为服务器和客户端两个部分,分别监听的UDP的67、68端口
二、DHCP工作过程
DHCP客户端和服务器端申请ip地址、获得ip地址的过程一般分为4个阶段,如上图所示。
1、DHCP客户端发送ip租约请求
当客户端启动网络时,由于ip网络中的每台机器都需要一个地址,因此,此时的计算机TCP/IP地址与0.0.0.0绑定在一起。他会发送一个“DHCP Discover(DHCP发现)”广播信息包到本地子网,该信息包发送给UDP端口67,即DHCP/BOOTP服务器端口的广播信息包。
2、DHCP服务器提供ip地址
本地子网的每一个DHCP服务器都会接受“DHCP Discover”信息包。每个接受到请求的DHCP服务器都会检查它是否有提供给请求客户端的有效空闲地址,如果有,则以“DHCP Offer(DHCP提供)”信息包作为响应,该信息包包括有效的ip地址、子网掩码、DHCP服务器的ip地址、租用期限,以及其他的有关DHCP范围的详细配置。所有发送DHCP Offer信息包的服务器将保留他们提供的这个ip地址(该地址暂时不能分配给其他的客户端)。“DHCP Offer”信息包广播发送到UDP端口68,即DHCP/BOOTP客户端端口。
3、DHCP客户端进行ip租用选择
客户端通常对第一个提议产生响应,并以广播的方式发送“DHCP Request(DHCP请求)”信息包作为回应。该信息包告诉服务器“是的,我想让你给我提供服务,我接受你给我的租用期限。”而且,一单信息包以广播方式发送以后,网络中所有的DHCP服务器都可以看到该信息包,那些提议没有被客户端承认的DHCP服务器将保留的ip地址返回给她的可用地址池。客户端还可利用DHCP Request询问服务器其他的配置选项,如DNS服务器或网关地址。
4、DHCP服务器ip租用认可
当服务器接受到“DHCP Request”信息包时,它以一个“DHCP Acknowledge(DHCP确认)”信息包作为响应,该信息提供了客户端请求的任何其他信息,并且也是以广播的方式发送的,该信息包告诉客户端“一切准备好。记住你只能在有限时间内租用该地址,而不能永久占据。以下是你询问的其他信息。”
三、ip地址租用和更新
(1)ip地址租约
DHCP服务器是以地址租约的方式为DHCP客户端提供服务的,它主要提供以下两种方式的地址租约。
i、限定租期。当DHCP客户端向DHCP服务器租用到ip地址后,DHCP客户端只是暂时使用这个地址一段时间。如果客户端在租约到期时,没有更新租约,则DHCP服务器会收回该ip地址,并将ip地址提供给其他的DHCP客户端使用。如果原DHCP客户端又需要ip地址,它可以向DHCP服务器重新租用另一个ip地址。ii、永久租用。当DHCP客户端向DHCP服务器租用到ip地址后,这个地址就永远分派给这个DHCP客户端使用。
(2)租约更新
i、更新。当客户端注意到她的租用期到了50%以上时,就要跟新该租用期。这时它发送一个直接UDP信息包(单播)给它所获得原始信息的服务器,该信息包是一个DHCP Request信息包,用来询问是否能够保持TCP/IP配置信息并更新它的租用期。如果服务器是可用的,则它通常发送一个DHCP Acknowledge信息包给客户端,统一客户端请求。
ii重新绑定。当租用期到达期满时间的近87.5%时,客户端如果在前一次请求中没能更新租用期的话,它会再次试图更新租用期。如果这次更新失败的话,客户端就会尝试与任何一个DHCP服务器联系以获得一个有效的ip地址。如果另外的DHCP服务器能够分配一个新的ip地址,则改客户端再次进入捆绑状态。如果客户端当前的ip地址租用期期满,则客户端必须放弃该ip地址,并重新进入初始化状态,然后重复整个过程。
(3)解约条件
既然客户端就ip地址的分配与DHCP服务器建立了一个有效租约,那么这个租约什么时候解除了?
i、客户端租约到期
DHCP服务器分配给客户端的ip地址是有使用期限的。如果客户端使用此ip地址达到了这个有效期限的终点,并且没有再次向DHCP服务器提出租约更新,DHCP服务器就会将这个ip地址回收,客户端就会造成断线。
ii、客户端离线
除了客户端租约到期会造成解除外,当客户端离线,DHCP服务器都会将ip地址回收。
四、DHCP服务器分配给客户端的ip地址类型
(1)动态ip地址
客户端从DHCP服务器取得的ip地址一般都不是固定的,而是每次都可能不一样。在ip地址有限的单位内,动态ip地址可以最大化地达到资源的有效利用。它利用并不是每个员工都会同时上线的原理,优先为上线的员工提供ip地址,离线后收回。
(2)固定ip地址
有的单位除了员工计算机外,还有服务器,这些服务器用动态ip地址,不但不利于管理,而且客户端访问起来也不方便。所以DHCP服务器记录特定计算机的MAC地址,然后为每个MAC地址分配一个固定的ip。
小技巧:查询MAC地址
i、查询本地MAC地址:使用ifconfig命令
ii、查询远程主机MAC地址
TCP/IP最终用到MAC地址,那么使用ping命令就可以获取对方的MAC地址信息,但不会显示出来,所以借助arp工具
第一步:ping -c 1 ip
第二部:arp -n查询缓存在本地的远程计算机中的MAC地址
环境:centos6.5_x86_64
安装:
yum install -y dhcp
查看启动并开机自动启动
[root@school ~]# chkconfig --list dhcpddhcpd 0:off1:off2:off3:off4:off5:off6:off[root@school ~]# chkconfig dhcpd on[root@school ~]# chkconfig --list dhcpddhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
查看生成的文件
[root@school ~]# rpm -ql dhcp/etc/dhcp/etc/dhcp/dhcpd.conf #ipv4的配置文件/etc/dhcp/dhcpd6.conf #ipv6的配置文件/etc/openldap/schema/dhcp.schema/etc/portreserve/dhcpd/etc/rc.d/init.d/dhcpd #ipv4的服务脚本 /etc/rc.d/init.d/dhcpd6 #ipv6的服务脚本 /etc/rc.d/init.d/dhcrelay #ipv4中继的服务脚本 /etc/rc.d/init.d/dhcrelay6 #ipv6中继的服务脚本/etc/sysconfig/dhcpd #ipv4的配置文件/etc/sysconfig/dhcpd6 #ipv6的配置文件/etc/sysconfig/dhcrelay #ipv4中继的配置文件/etc/sysconfig/dhcrelay6 #ipv6中继的配置文件/usr/bin/omshell/usr/sbin/dhcpd #ipv4和ipv6的启动程序/usr/sbin/dhcrelay #中继的启动程序/usr/share/doc/dhcp-4.1.1 #这些是文档/usr/share/doc/dhcp-4.1.1/3.0b1-lease-convert/usr/share/doc/dhcp-4.1.1/IANA-arp-parameters/usr/share/doc/dhcp-4.1.1/README.ldap/usr/share/doc/dhcp-4.1.1/api+protocol/usr/share/doc/dhcp-4.1.1/dhclient-tz-exithook.sh/usr/share/doc/dhcp-4.1.1/dhcpd-conf-to-ldap/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample/usr/share/doc/dhcp-4.1.1/dhcpd6.conf.sample/usr/share/doc/dhcp-4.1.1/draft-ietf-dhc-ldap-schema-01.txt/usr/share/doc/dhcp-4.1.1/ms2isc/usr/share/doc/dhcp-4.1.1/ms2isc/Registry.perlmodule/usr/share/doc/dhcp-4.1.1/ms2isc/ms2isc.pl/usr/share/doc/dhcp-4.1.1/ms2isc/readme.txt/usr/share/doc/dhcp-4.1.1/sethostname.sh/usr/share/doc/dhcp-4.1.1/solaris.init/usr/share/man/man1/omshell.1.gz/usr/share/man/man5/dhcpd.conf.5.gz/usr/share/man/man5/dhcpd.leases.5.gz/usr/share/man/man8/dhcpd.8.gz/usr/share/man/man8/dhcrelay.8.gz/var/lib/dhcpd #运行产生的数据存放目录/var/lib/dhcpd/dhcpd.leases #ipv4数据文件/var/lib/dhcpd/dhcpd6.leases #ipv6数据文件
配置文件:复制模板并修改
[root@school ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.confcp: overwrite `/etc/dhcp/dhcpd.conf'? y[root@school ~]# vim /etc/dhcp/dhcpd.conf
DHCP工作流程;
1、客户端发送广播向服务器申请ip
2、服务器收到请求后查看主配置文件dhcpd.conf,先根据客户端的MAC地址查看是否为客户端设置固定ip
3、如果为客户端设置了固定ip则将该ip地址发送给客户端。否则将地址池中的ip发送给客户端
4、客户端收到服务器回应后,客户端给予服务器回应,告诉服务器已使用了该ip
5、服务器将相关租约信息存入数据库
主配置文件dhcpd.conf
(1)dhcpd.conf主配置文件组成部分
paramenters(参数)
declarations(声明)
option(选项)
(2)dhcpd.conf主配置文件整体框架
dhcpd.conf包括全局配置和局部配置。
全局配置可以包括参数或选项,该部分对整个DHCP服务器生效。
局部配置通常由声明部分来表示,仅对局部生效,
dhcpd.conf文件格式:
#全局配置
参数或选项;
#局部配置
声明{
参数或选项;
}
当一行内容结束时,以;结束,大括号所在行除外
常用参数介绍
(1)ddns-update-style ({none|interim|ad-hoc})
作用:定义所支持的DNS动态更新类型
none:不支持动态更新
interim:DNS互动更新
ad-hoc:特殊DNS更新
这个参数必需在第一行
(2)ignore client-updates
忽略客户端更新,只能在服务器端使用
(3)default-lease-time #定义默认ip租约时间
(4)max-lease-time #定义作用时间最大值
常用声明介绍
声明一般用来指定ip作用域、定义为客户端分配的ip地址池等
格式:
声明{
选项或参数;
}
(1)subnet 网络号 netmask 子网掩码 {......}
作用:定义作用域、指定子网
(2)range dynamic-bootp 起始ip 结束ip
作用:指定动态ip地址范围
常用选项介绍
选项通常用来配置客户端的可选参数,如DNS地址、默认网关等。
(1)option routers ip地址 #为客户端指定默认网关
(2)option subnet-mask 子网掩码 #设置客户端的子网掩码
(3)option domain-name-servers ip地址 #为客户端指定DNS服务器
选项可在全局中配置,也可在局部配置
租约数据库文件:包含客户端主机名、MAC、分配ip、ip有效期。
cat /var/lib/dhcpd/dhcpd.leases
ip绑定用于给客户端分配固定ip地址。通过MAC地址与ip地址的对应关系为指定的物理地址计算机分配固定ip
(1)host 主机名 {...} #用于定义保留地址
(2)hardware 类型 硬件地址 #定义网络接口类型和硬件地址。常用类型为以太网(ethernet),地址为MAC地址。
(3)fixed-address ip地址 #定义DHCP客户端指定的ip
(1)通常搭配subnet声明使用(2)(3)只能用于host声明中
service dhcpd configtest配置文件语法测试
dhclient客户端工具
-d前台工作
CENTOS7:服务控制机制
systemctl is-enabled daemon.service查看是否开机启动
systemctl enable daemon.service开机自动启动
systemctl disable daemon.service禁止开机自动启动
systemctl {start|stop|restart|status} daemon.service启动、停止、重启、状态
总结:
dhcpd.conf
option domain-name
option domain-name-servers
option routers
subnet NETWORK netmask MASK{
range START_IP END_IP;
host HOSTID{
hardware ethernet 0:11:22;
fixed-address ip;
}
}
题外:/etc/resolv.conf
“search domainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;