1、DHCP的工作原理
当局域网中有大量的主机时,如果逐个为每一台主机手动设置IP地址、默认网关、DNS服务器地址等网络参数,这显然是一个费力也未必讨好的办法。
而DHCP服务器的应用,正好可以解决这一问题。
1.1 DHCP是什么
DHCP——动态主机配置协议,是专门用于为TCP/IP网络中的计算机自动分配网络参数的协议。
注:适用DHCP服务可以避免因手动设置IP地址所产生的错误,同时也可避免把一个IP地址分配给多台工作站所造成的地址冲突。
DHCP提供了安全、可靠且简单的TCP/IP网络设置,降低了配置IP地址的负担。
DHCP的网络结构如下图:
1.2 DHCP的优点
使用DHCP的好处有:
- 减少管理员的工作量
- 避免输入错误的可能
- 避免IP地址冲突
注:对于同一个局域网来讲,如果两个主机的IP地址是一样的,就会造成IP地址冲突。IP地址冲突会造成两个主机访问网络异常。
- 当网络更改IP地址段时,不需要再重新配置每个用户的IP地址
- 提高了IP地址的利用率
注:谁开机,DHCP就给谁分配IP地址,不开机的话就不给分配IP地址。
- 方便客户端的配置
1.3 DHCP的分配方式
在网络中架设一台专用的DHCP服务器,负责集中分配各种网络地址参数(包括IP地址、子网掩码、广播地址、默认网关地址、DNS服务器地址),其他主机作为DHCP的客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自动配置过程。
DHCP服务器提供了三种IP地址分配方式:自动分配、手动分配和动态分配:
- 自动分配:当DHCP客户机第一次成功地从DHCP服务器获取到一个IP地址后,就永久地使用这个IP地址
- 手动分配:由DHCP服务器管理员专门指定IP地址
- 动态分配:当DHCP客户机第一次从DHCP服务器获取到IP地址后,并非永久地使用该地址,而是在每次使用完后,DHCP客户机就会释放这个IP地址,供其他客户机使用。
1.4 DHCP的租约过程
把客户端从DHCP服务器获取IP地址的过程称之为DHCP的租约过程,此过程主要有四个步骤:
- 客户端在网络中搜索服务器
- 服务器向客户端响应服务
- 客户端向服务器发出服务请求
- 服务器向客户端提供服务
(1)客户端请求IP地址
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP来获取一个合法的地址。
此时DHCP客户机以广播方式发送DHCP Discover广播消息来寻找可用的DHCP服务器,如下图所示:
注:因为刚开始客户端是没有地址的,所以它的目标地址是一个广播地址(四个255),而它自己是没有地址的,也就是自己的地址未知,所以用4个0来代表它的源地址,4个0代表它没有地址。
在路由技术里,4个0代表所有未知网络,也即是说当我这个节点不知道地址的时候,用4个0来代表它的地址。
所以在整个局域网,所有的主机都可以收到,因为这是广播的类型,只要是在这个局域网里的所有主机都可以收到这个包。
补充:组播地址、广播地址不能做源地址。
(2)、服务器响应
当DHCP服务器接收来自客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机。
如果有,DHCP就将在此IP地址做上标记,加入到DHCP Offer的消息中。然后DHCP服务器就广播一则DHCP Offer消息,如下图所示:
注:offer的报文里面,源地址是服务器自己的IP地址,目标地址还是一个广播地址。
因为此时客户端根本还没有自己的IP地址,所以并不能直接以单播的方式发送给客户端,那就只能以广播的方式发送。
服务器发送客户端的这个DHCP Offer消息里,其中包含有IP地址和其他配置信息。
(3)客户机选择IP地址
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址(发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机),之后客户端会向第一个给它发送DHCP Offer的服务器发送DHCP Request消息,进行确认。如下图:
注:这个过程也是以广播的方式。这个报文的目标地址也是一个广播地址,因为它不仅要告诉它所选中的DHCP服务器,也要告诉其他的DHCP服务器一声。然而,源地址此时此刻还是4个0。
(4)服务器确定租约
当DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机
广播成功确认(该消息包含有IP地址的有效租约和其他可配置的信息),来确认IP地址的分配。
最后这一步也是广播的类型,因为整个过程当中,它的客户端都是没有地址的,
直到最后收到服务器的确认之后,客户端才有自己的IP地址。所以在第四步的时候,客户端还没有地址的,
所以第四个阶段的源地址还是服务器的地址,目标地址还是4个255.
注:确认租约,客户端获得IP地址之后,当客户机每次重新登录网络(比如关机又开机或把网卡禁用了再启用)时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。
注:对于一个客户机来说,假如你重新登陆了,这个IP地址是重新申请一次新的IP,还是继续使用原来的IP好呢?
继续使用原来的IP比较好。对于一个主机来说,如果你让它频繁的去切换它的IP的话,对于这个主机来讲并不好,频繁更换IP地址对它的通信肯定会造成影响的,所以能用之前的地址就尽量用之前的地址。
因此,如果客户端重新登录了,并不会让它从头重新去走一遍DHCP Discover的流程,而是从中间的请求(DHCP Request)这一步直接开始,跳过前两步而从第三步开始去走一遍流程(重新去请求一下DHCP服务器,我原来的IP地址还要继续用,服务器是否允许呢?)
如果服务器允许,就会回复一个DHCP ACK信息;如果服务器不允许或已经把这个IP地址分给别人了,就会回应一个DHCP NACK的否认信息。如果说客户端收到了这样一个DHCP NACK的否认信息,那客户端就会直接返回到第一个步骤,先来一个DHCP Discover,然后重新4个流程再走一遍流程。
补充:更新租约:当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。
这时候客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约。
假如说一个IP地址被获取到了,但那并不是说这个IP地址我就可以永久使用了,它是有一个租约期限(就是给你一个IP地址,允许你用多长时间)的,
管理员是可以设置DHCP的这个租约期限的,如果不设置的话,windows里面默认是8天的租约期限。
2、使用DHCP动态配置主机地址
DHCP服务可分配的地址信息主要有:
网卡的IP地址、子网掩码、对应的网络地址、广播地址、默认网关地址、DNS服务器地址等。
2.1 在Linux系统中配置DHCP服务器
(1)安装DHCP服务器软件
先执行rpm -q dhcp命令来查看系统中是否已经安装dhcp软件包,如果没有安装,则要挂载Centos系统光盘,安装其中的软件包。
如下图,先查看系统中是否安装了dhcp软件包,然后用df命令查看一下光盘挂载情况(发现挂载到了/media/cdrom下)然后直接安装dhcp软件包即可(使用yum命令):
(2)建立主配置文件dhcpd.conf
dhcp服务的主配置文件是/etc/dhcp/dhcpd.conf(该文件中默认不包含任何有效配置,需要管理员手动建立)
注:管理员可以根据文件中的提示,参考配置文件的范本建立新的dhcp.conf文件。
用vim编辑器打开dhcp的这个配置文件dhcp.conf,如下图:
退出vim编辑器之后,在命令行用cp命令把这个dhcp模板文件拷贝到/etc/dhcp/dhcpd.conf这个dhcp的配置文件下:
补充:/etc/dhcp/dhcpd.conf文件的配置构成是:
2.2 dhcp配置文件的内容说明
- 声明:用来描述dhcp服务器的对网络布局的划分,是网络设置的逻辑范围。
较常见的声明是subnet——用来约束一个网段、host——用来约束一台特定的主机,
(1)subnet网段声明
一台DHCP服务器可以为多个不同网段提供服务,因此subnet网段声明必须有而且可以有多个。
例如,若要让DHCP服务器为192.168.4.0/24网段提供服务,用于自动分配的IP地址范围192.168.4.128~192.168.4.254,
为客户机指定默认网关地址为192.168.4.1,则可以修改dhcpd.conf配置文件,可参考下图内容调整subnet网段的声明:
(2)host主机声明
host主机声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地址(保留地址)
注:这些主机的特点是要求每次获取的IP地址相同,以确保服务的稳定性。
使用hardware ethernet参数——来指定该主机的MAC地址;
使用fixed-address参数——指定保留给主机的IP地址;
例如,要为打印机prtsr分配固定的IP地址192.168.4.100,可以修改dhcpd.conf配置文件,如下图:
- 参数:由配置关键字和对应的值组成,总是以;分号结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)
- 选项:由option引导,后面跟具体的配置关键字和对应的值,也是以;分号结束。
用于指定分配给客户机的各种地址参数(如默认网关、子网掩码、DNS服务器地址等)
2.3 启动dhcpd服务
在启动dhcpd服务之前,应确认至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则将无法正常启动dhcpd服务。
注:dhcpd服务的全局配置:
为了使配置文件的结构更加清晰,全局配置通常会放在配置文件dhcpd.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数如下:
- ddns-update-style——用来设置与DHCP服务相关联的DNS数据动态更新模式。
注:在实际的DHCP应用中很少用到该参数,将值设为none即可。
- default-lease-time——默认租约时间,单位是秒。表示客户端可以从DHCP服务器租用某个IP地址的默认时间
- max-lease-time——最大租约时间,单位是秒。表示允许DHCP客户端请求的最大租约时间(当客户端未请求明确的租约时间时,服务器将采用默认租约时间)
- option domain-name——默认搜素区域。为客户端指定解析主机名时的默认搜索域,该配置选项将体现在客户机的/etc/resolv.conf配置文件中,如search benet.com
- option domain-name-servers——DNS服务器地址,为客户机指定解析域名时使用的DNS服务器地址,
该配置选项同样体现在客户姐的/etc/resolv.conf配置文件中。需要设置多个DNS服务器地址时,以逗号进行分隔。
3 DHCP中继
3.1 DHCP中继原理
当企业内部网络规模比较大时,通常通过VLAN将网络划分为多个不同的子网。但是在这种情况下,一台DHCP服务器无法为不同网段的客户机同时提供服务,因为DHCP协议使用广播,而VLAN能隔离广播。
例如,DHCP服务器在VLAN100中,就只有VLAN100内的客户机能从DHCP服务器那里获取IP地址。如果是VLAN2或VLAN3的客户机就无法通过这台DHCP服务器来获取IP地址。
于是,针对以上这种情况,我们就有两种方案:
(1)为每个网段安装一台DHCP服务器,但这种方式的弊端是:资源浪费并不利于管理;
(2)在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器那里获取IP地址。如下图所示:
3.2 DHCP中继配置
在三层交换机上配置DHCP中继转发:首先需要保证交换机上各VLAN之间网络通信正常,然后依次在不包含DHCP服务器的VLAN上进行DHCP中继配置。
例如,执行下图中的命令可以在VLAN2中进行DHCP中继转发配置: