Linux DHCP服务学习

目录

 

一.DHCP服务简介

二.DHCP服务工作过程以及报文介绍

三.DHCP服务IP地址的租期和更新

四.IP地址的规划

五.DHCP服务的软件安装和基础设置

六.DHCP服务的基本配置

七.DHCP的日志信息

八.DHCP的其他配置

九.自动专用IP

十.DHCP中继

十一.实验


一.DHCP服务简介

       在配置IP地址时,我们可以选择手动去指定静态IP,或者动态自动分配IP,那要自动分配IP就要去使用DHCP服务,DHCP服务是一种网络基础服务,应用广泛,比如各种wifi,,提供wifi服务的无线路由器基本上都有DHCP的功能,还有局域网中的三层交换机,也会提高DHCP的功能,也可以用Linux服务器来实现DHCP的功能,比如在Linux自动化运维中,有一种称为Kickstart的Linux系统自动安装方式,通过Kickstart可以很方便的在网络中批量部署Linux服务器,而要实现Kickstart安装方式,就需要DHCP服务。

       DHCP协议提供了动态配置IP地址的功能,可以向客户端自动分配IP地址,子网掩码,默认网关,DNS服务器等参数,DHCP在传输层使用的是UDP协议(DNS也是),端口是UDP67号端口,在客户端使用的是UDP68号端口,由于DHCP协议工作过程中,很多DHCP报文都是基于广播的方式发送,所以DHCP协议仅限于在局域网内使用。

       在DHCP协议中使用了租约的概念,来限制客户端可以使用所分配到的IP地址的有效期限,租期长短可以由管理员根据网络情况灵活设置,如果网络中的客户端频繁变换,那么租期就应该设置时间短一些,如果客户端比较稳定,则可以设置时间比较长的租期。

二.DHCP服务工作过程以及报文介绍

       当DHCP客户端首次启动时,并不知道网络中是否存在DHCP服务器,因此客户端会以广播的形式发送“DHCP Discovery”报文来去寻找DHCP服务器,报文中含有DHCP客户端的MAC底子和计算机名,以便DHCP服务器能确定是由哪个客户端发送的请求;在网络层,客户端封装“DHCP Discovery”报文,目的IP就是广播地址255.255.255.255,然后源IP应该是客户端自身IP,但由于自身没有分配IP,所以是0.0.0.0;在数据链路层,源MAC地址就是客户端自身的地址,由于不知道目的MAC,所以应该也是广播地址,所以就是FF:FF:FF:FF:FF:FF。

      服务器在收到客户端发来的“DHCP Discovery”报文后,根据情况确认后,会给客户端一个“DHCP offer”回应报文,代表服务器允许给客户端分配的回应,“DHCP offer”报文在网络层封装时,源IP采用的就是服务器的IP,目的IP就是服务器打算分给客户端的IP,实际在局域网中起真正决定包向哪发送的是目的MAC(物理地址),而不是目的IP(逻辑地址);在链路层封装,源MAC地址就是服务器自己的MAC,而目的MAC就是客户端的MAC,客户端的MAC在发来的“DHCP Discovery”报文中就有;虽然目的IP是还没分配的IP,但因为目的MAC是真实客户端的MAC,所以报文可以准确的发给客户端,而且是单播方式;在Linux DHCP服务器中offer报文是属于单播的,在Windows DHCP服务器/三层交换机中是属于广播形式的。

       一个网络中可能存在多个可以进行DHCP的设备,那么客户端会选定最先到达的第一个offer报文的服务器来分配IP,在收到来自offer消息后,客户端会返回一个“DHCP Request”的报文,以广播的方式发送出去,网络中所有的DHCP服务器都会收到这个报文,那些没有被客户端所采用的DHCP服务器会回收所发送的offer报文IP,作为DHCP客户端所保留的IP地址,来供其他客户端来使用;这时Request报文在网络层上的封装,目的IP就是255.255.255.255,源IP仍然没有,所以是0.0.0.0,在链路层上的目的MAC也是一样,所以Request和Discovery报文在封装结构上是一致的。

       接收到来自客户端的Request报文后,服务器就会以单播方式再向客户端发送一个确认报文“DHCP Ack”,Ack报文与offer报文的封装是一致的,客户端收到Ack报文后,就可以正常使用DHCP服务器所分配的IP地址了。

三.DHCP服务IP地址的租期和更新

        在“DHCP Ack”这个报文里就包含了关于IP地址的租约的信息,DHCP服务器是以地址租约的方式给客户端提供服务使用的,当客户端租到IP地址后,只是暂时使用这个地址一段时间,如果客户端在租约到期后没有更新租约,那么DHCP服务器就会回收这个IP。

      客户端在租约到期之前的这段时间内,会多次与服务器联系,抉择下一步要进行的动作,有两个情况会使DHCP服务器将IP回收:

  • 客户端重新登陆网络时的IP处理

当DHCP客户端从网络中离线之后,即使地址的租约尚未到期,DHCP服务器也可能会将这个IP重新分配给别的客户端使用。

因此DHCP客户端每次重新登录网络时,都要发送包含前一次所分配的IP地址的“DHCP Request”请求报文,DHCP服务器收到报文后,会检查之前所分配给客户端的IP是否可以继续使用,并回答一个“DHCP ACK”的确认报文。

如果这个之前分配的IP没法再给客户端使用,那么DHCP服务器就会给客户端返回一个“DHCP Nack”的否认报文信息,客户端收到“DHCP Nack”的否认信息后,就会重新发送“DHCP Discovery”报文来申请新的IP地址;

  • 另外,如果客户端改变了所处的网络,在开机时联系不上DHCP服务器,那么租约即使没到期,也会将原来获得的IP释放掉。
  • IP地址的续约:如果DHCP客户端一直稳定的接在网络中,也必须在租约到期前就进行续约。

        当客户端的租期到一半时,就需要重新进行更新租约,客户端直接向提供租约的服务器的发送“DHCP Request”报文,要求更新现有的地址租约,如果DHCP服务器应答就延迟租约。

       如果服务器没有应答,那么就会在租期达到3/4的时间时,客户端就会再次发送“DHCP Request”报文进行续约,如果续约还是不成功,那么客户端就会在租约结束时,放弃当前使用的IP,再重新发送“DHCP Discovery”报文来寻找网络中其他的DHCP服务器。

四.IP地址的规划

       对于配置DHCP服务器之前,应该先对IP地址进行合理的规划,明确哪些IP时给客户端,哪些是给服务器

一般情况下,对于网络中的服务器可以采用静态分配IP,对于客户端可以采用动态DHCP分配IP,规划的信息主要包括几个方面:

  • 确定DHCP服务器分配给客户端的IP地址的范围
  • 确定是否要保留一些固定的IP地址提供给客户端来使用。
  • 确定IP地址的租期期限,通常租期应等于网络中客户端的平均活动时间,例如:客户端是很少关闭的桌面计算机,租期就可以适当设置的长一点,如果客户端时经常离开网络或在子网之间移动的移动设备,租期可以设置的短一些。

IP地址段的规划

在企业网络内部中主要是使用私有IP地址,包括几个地址段:

  • 192.168.0.0-192.168.255.255,子网掩码,255.255.255.0(适用于小型网络)
  • 172.16.0.0-172.31.255.255,子网掩码,255.255.0.0(使用中型网络)
  • 10.0.0.0-10.255.255.255,子网掩码,255.0.0.0(使用大型网络)

        在小型网络中,使用192.168.x.x段的IP地址即可,不过应尽量避免使用192.168.0.0和192.168.1.0地址段,因为某些网络设备(如无线路由器)或应用程序拥有自动分配IP的功能,而且默认的IP地址池往往在这两个地址池段,容易导致IP地址冲突。

       在计算机数量较多的大型网络中,可选用10或172的地址段,不过不论选用哪个地址段,一般不建议采用过大的子网掩码,而建议采用255.255.255.0作为子网掩码,来获取更多的可用网段,并使每个网段中所容纳的计算机数量都较少,一般情况下,每个网段中的计算机数量都不超过250台,同一网段中的计算机数量越多,广播包数量也就越多,有效宽带损失的也越多,导致网络传输的效率降低。

        实验环境中采用的是192.168.80.0/24,预留的地址段为192.168.80.1-192.168.80.20来给服务器设置静态IP,DHCP服务器可以采用静态IP 192.168.80.10,客户端使用IP地址段192.168.80.21-192.168.80.254,网关为192.168.80.2,首先DNS服务器为202.102.134.68。

五.DHCP服务的软件安装和基础设置

        Linux中提供DHCP服务的软件名叫“dhcp”,进程名叫dhcpd,默认情况下系统没有安装,安装完后,DHCP服务还不能直接启动,因为此时DHCP服务的配置文件中还没有实质内容,配置文件中的内容需要我们手工来添加(比较特殊),这里可用先执行“systemctl enable dhcpd”命令来将服务设为开机自启。

       DHCP的配置文件是/etc/dhcp/dhcpd.conf,里面的内容都是注释信息,没有默认设置,我们可以根据提示参照/usr/share/doc/dhcp*/dhcpd.conf.example文件或帮助手册配置,当然只是做参考,参考模板文件路径中的*代表表示DHCP服务的版本号

六.DHCP服务的基本配置

      设置配置文件,在/etc/dhcp/dhcpd.conf要添加设置内容,dhcpd.conf文件对格式要求比较严格,每一行设置项的最后必须都已“;”做结尾,大括号所在行除外。

DHCP的一些概念:

  • 作用域:一个IP地址池再加上相关的配置选项就构成了一个作用域,DHCP协议根据作用域来管理网络的分布,分配IP地址及其它网络参数,在一台DHCP服务器中也可以同时存在多个作用域,实际可以说,一个作用域就是一个可用用来分配的IP地址范围,一个DHCP设备可以给多个网络段来设置IP,只不过需要路由设备(一般是三层交换机)来做中继,所以可以存在多个作用域。
  • 地址池:可以分配给DHCP客户端的IP地址范围。
  • 排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
  • 租约:DHCP客户端能够使用动态分配IP的时间
  • 保留:保证网络中的特定色被总是能获取到同一个IP地址

配置DHCP:

首先要先创建一个作用域,设置作用域的命令是“subnet”,语法:

Subnet 要使用的分配的网段地址 netmask 子网掩码 {range(指定地址池)192.168.x.x 192.168.x.y;

Option routers (设置网关,option代表可选项)x.x.x.x;

Default-lease-time(租期)3600(可随意设);

 Max-lease-time (最大租约期限);}

Option domain-name-servers (设置DNS,可选)x.x.x.x;

       DHCP的配置文件主要包括两部分,全局配置和局部配置,全局配置对所有作用域都有效,局部配置的作用范围则只局限于相对应的作用域,{}内的就是局部参数,外的就是全局参数。

       设置最大租约时间,正常情况下,客户端在租约到期之前会向服务器申请续约,但是如果因为某些特殊情况,客户端未能向服务器续约,那么在租约到期后,服务器并不会立即回收这个IP,而是要继续在等待一段时间,这个时间就是最大租约时间。如果最大租约时间到期后,客户端还是没来续约,那么服务器就会回收IP。

这样DHCP服务配置完成了,可以用Linux客户端和Windows客户端去进行测试。

七.DHCP的日志信息

       查看DHCP日志信息,DHCP服务提供有专门的租约数据库文件用于保存租约信息,其中包含客户端的主机名,MAC地址,分配到的IP地址,以及IP地址的租期信息等,每当租约发生变化时,都会在文件末尾添加新记录。

      专门的日志文件的路径时/var/lib/dhcpd/dhcpd.leases,刚安装好时,这个是个空文件,当DHCP服务正常运行后就可以查看文件里边的内容。

另外在DHCP服务端查看系统日志(/var/log/messages),也能看到在DHCP服务器与客户端之间所传送的DHCP报文信息。

八.DHCP的其他配置

       保留固定的IP地址,DHCP服务器可以保留特定的IP地址给指定的客户端使用,也就是说,当这个客户端每次向DHCP服务器申请IP地址或更新租约时,DHCP服务器都会给该客户端分配相同的IP地址。

       保留IP地址是可以节省反复修改IP的不便,通过将客户端的MAC地址与需要保留的IP地址进行绑定实现的,比如之前的Linux客户端分配到了192.168.80.21,现在想要为它指定一个192.168.80.88,可以先查出客户端的MAC地址(Linux:ifconfig查看MAC,Windows:ipconfig /all;在服务器上可以查看租约日志文件来获取;还可以查看arp表获取MAC),然后再dhcpd.conf配置文件的相应作用域设置项中,加入host语句(host 任意名字来指定是给哪个客户端所保留的{hardware ethernet 客户端的MAC地址;fixed-address 要保留的IP地址})。

       IP的释放与重新申请,我们在服务端设置好了要给客户端保留的IP地址后,在客户端租约还未到期,想要将之前申请的IP地址释放掉,再重新申请,就要执行“dhclient -r ens33”命令释放ens33网卡之前获取的IP,此时客户端回向服务器发送DHCP Release报文,告知服务器要释放所分配的地址,DHCP服务器会将地址回收并释放租约,然后再执行“dhclient ens33”命令为ens33网卡重新申请IP地址,就可以发现客户端成功申请到在服务器端给客户端设置的保留的IP地址。

Windows释放IP和重新申请,要用到两个命令,“ipconfig /release”释放IP,“ipconfig /renew”重新申请IP。

九.自动专用IP

        对于Windows客户端,如果由于种种原因而未能从DHCP服务器处获得IP地址,此时系统会为其分配一个“自动专用IP”,自动专用地址是指169.254.0.0/16网段中的地址,这是一个临时的备用地址。

       例如,我们将Windows客户端与服务端之间的网络暂时断开,然后再执行“ipconfig /release”和“ipconfig /renew”命令,这时就会发现系统使用了自动专用IP。

当客户端计算机在得到一个自动专用IP后,他会每隔5分钟发一次广播,尝试去得到一个可用的IP。

       如果网络中的两台主机都是用自动专用IP,他们之间也可以正常通信,但这毕竟是种意外情况,所以如果发现某主机使用的是169.254.0.0/16网段的自动专用IP,也就意味着客户端和DHCP服务器之间出现了问题。

十.DHCP中继

       由于很多DHCP报文都是基于广播的方式进行发送的,所以默认情况下,DHCP服务端和客户端要求必须位于同一网段内,对于一些规模大些的局域网,往往会将整个网络划分成多个子网,如果想在网络内采用动态地址分配的方案的话,那么就得再每个子网都架设一台DHCP服务器,这显然不太经济,我们可以使用中继代理的方法解决这个问题,中继代理是一台具有路由功能的网络设备,在这个路由设备上启用中继代理后,他就可以再不同网段之间转发DHCP广播报文,这样就只需再其中某个子网内部署一台DHCP服务器,就可以为整个网络提供地址分配服务。

DHCP中继功能通常都是由路由器,防火墙或者三层交换机这类网络设备来实现的。

十一.实验

1.首先在centos7系统中安装好DHCP服务,软件名叫dhcp。

2.然后确认DHCP服务的运行状态:

由于没有做配置,DHCP服务默认没法运行。

3.接下来修改主配置文件,定义全局配置一个作用域:

4.保存退出后,启动服务:

5.设置完成后,可以在Windows和Linux客户端上验证一下:

可以看到服务配置成功,IP分配成功。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值