Linux运维-DHCP服务器

DHCP服务器的配置与管理

项目场景

学校各部门共有180台电脑,除了计算机学院的教师会配置电脑的网络连接,其他部门的老师和工作人员均不会,为了提高网络的管理效率,技术人员决定配置一台DHCP服务器,来提供动态的IP地址分配,不会配置网络连接的人员选择自动获取IP即可。

DHCP基础知识

(1)什么是DHCP?
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。主要是用来给网络客户机分配动态IP地址、子网掩码、网关地址、DNS服务器地址。

(2)DHCP的主要功能
主要有两个功能:
①给内部网络或网络服务供应商自动分配IP地址。
②给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

(3)DHCP的优点
1)DHCP避免了由于需要手动在每个计算机上输入值而引起的配置错误。DHCP还有助于防止由于在网络上配置新的计算机时重新使用以前已分配的IP地址而引起的地址冲突。

2)使用DHCP服务器可以大大降低用于配置和重新配置网上计算机的时间。可以配置服务器,使其在分配地址租约时提供全部的其他配置值,如:网关地址、DNS服务器地址等。

3)DHCP租约续订过程中,有助于确保客户端计算机配置需要经常更新的情况,如:使用移动设备频繁封盖位置的用户。

(4)DHCP常用的术语
①DHCP服务器:提供DHCP服务的计算机。
②DHCP客户端:启用DHCP设置的计算机,就是需要DHCP服务的设备。
③作用域:一个完整连续的可用IP地址范围,DHCP服务主要就是通过作用域来管理网络分布,IP地址分配及其它相关配置参数。
④超级作用域:管理级的作用域集合,用于支持同一物理网络上的多个逻辑IP子网,超级作用域包含子作用域的列表,对子作用域进行统一管理。
⑤排除范围:排除范围是作用域内从DHCP服务中排除的有限IP地址序列,排除范围确保在这些范围中的任何地址都不是由网络上的服务器提供给DHCP客户机,(就相当于保留地址,比如网络中网络打印机地址需要固定,就不能把这个地址再给客户机)
⑥地址池:在定义DHCP作用域并应用排除范围之后,剩余的地址在作用域内形成可用地址池,就是作用域中可用IP的范围,这时的地址才可以由DHCP服务器动态分配给DHCP客户端使用。
⑦租约:客户计算机可以使用动态分配IP地址的时间,这个时间可以由DHCP服务器设置。当一台客户机发出租约后,此租约被看作是活动的,在租约终止前,客户机可以向DHCP服务器请求更新其租约。当租约到期或被服务器删除后,就变动不活动的了,租约的持续时间决定了租约什么时候终止及客户机隔多久向DHCP服务器更新其租约 。
⑧预约:创建从DHCP服务器客户机的永久地址租约指定,预约可以保证子网上的特定设备总是使用相同的IP地址(如网络打印机的IP,DHS服务器的等)
⑨选项类型:当DHCP服务器向DHCP客户机提供租约服务时可以指定的其它客户机的配置参数,典型的这些选项类型由各个作用域启用和配置。大多数选项在RFC21232中预定了,如需要,可以在DHCP管理器定义并添加自定义选项类型。
⑩选项类别:DHCP服务器用于进一步提供给客户机的选项类型的方法,选项类别可以在用户的DHCP服务器上配置以提供特定的客户机支持。

(5)DCHP的工作流程
客户机首次获取IP租约,需要经过4个阶段与DHCP服务器建立联系。

  1. IP租用请求:客户机通过UDP端口67广播一个DHCPDISCOVER信息包,向网络上的任意一个DHCP服务器请求提供IP租约。
  2. IP租用提供:网络上所有的DHCP服务器均会收到此信息包,每台DHCP服务器通过UDP端口68给客户机回应一个DHCPOFFER广播包,提供一个IP地址。
  3. IP租用选择:客户机收到多台DHCP服务器的OFFER后,会选择第一个收到的OFFER包,并向网络广播一个DHCPREQUEST消息包,表明自己已接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。
  4. IP租用确认:被客户机选择的DHCP服务器在收到REQUEST广播后,会广播给客户机一个DHCPACK消息包,表明接受客户机的选择,并将这一IP地址的合法租用以及其他配置信息放入广播包发给客户机。客户机收到ACK包后配置TCP/IP,租用过程完成,可以在网络中通信。

(6)DHCP客户的IP租约更新(续约):
取得IP租约后,客户机必须定期更新租约,否则租约到期就不能继续使用IP地址。按照默认规定,每当租用时间超过租约的50%和87.5%时,客户机就必须发出REQUEST信息包,向服务器请求更新租约。

(7)DHCP中继代理(dhcprelay):当DHCP服务器的IP地址要与分配的IP地址不在一个子网时,需要一个支持DHCP请求转发的硬件路由器,如果没有,就需要在DHCP服务器的子网上架设DHCP中继代理。

(6)DHCP分配地址的方式
①自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

②动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

③手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

与DHCP相关的文件

  • DHCP守护进程: /usr/sbin/dhcpd
  • DHCP中继代理守护进程:/usr/sbin/dhcprelay
  • DHCP服务单元配置文件:/usr/lib/systemd/system/dhcpd.service
  • 主配置文件(IPv4):/etc/dhcp/dhcpd.conf
  • DHCP租约文件(IPv4):/var/lib/dhcpd/dhcpd.leases
  • 主配置文件模板(IPv4):/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

DHCP的主配置文件

DCHP安装结束后, DHCP端口监听程序 dhcpd配置文件是/etc/dhcp目录中的名为dhcpd.conf的文件。dhcpd.conf文件通常包括三部分:parameters、declarations 、option。
①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地址的要求。

② DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等。主要内容如下:

  • shared-network
  • 说明:用来告知DHCP服务器某些IP子网其实是共享同一个物理网络,在此声明可以使用多个subnet声明多个逻辑子网络。
  • subnet
  • 说明:描述一个IP地址是否属于该子网。
  • range 起始IP 终止IP
  • 说明:提供动态分配IP 的地址范围。
  • host 主机名称
  • 说明:为特定的DHCP客户机提供IP网络参数。
  • group
  • 说明:为一组参数提供声明。
  • allow unknown-clients ;deny unknown-client
  • 说明:是否动态分配IP给未知的使用者。
  • allow bootp;deny bootp
  • 说明:是否响应激活查询。
  • allow booting;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
  • 说明:为客户端设定与格林威治时间的偏移时间,单位是秒。

默认dhcpd.conf配置文件中是没有配置内容的,其中有3行说明文字,如图所示。第1行告诉我们这个是DHCP服务的配置文件,第2行告诉我们可以参照样例文件/usr/share/doc/dhcp*/dhcpd.conf.example来配置。也可以将样例文件直接复制过来进行修改。第3行告诉我们可以使用man命令查看dhcpd.conf的帮助手册。

[root@localhost dhcp-common-4.2.5]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

配置实施

实施流程

1.安装DHCP服务器
2.DHCP服务器基础配置
3.配置Linux客户机DHCP服务器并测试
4.配置Windows客户机DHCP服务器并测试

DHCP服务器配置流程

(1)安装DCHP服务程序
查看可安装的DHCP软件包信息。
yum info dhcp
在这里插入图片描述

安装DHCP软件包:
yum -y install dhcp
在这里插入图片描述

查看系统有没有安装DHCP:rpm -ql dhcp
在这里插入图片描述

查看安装状况: rpm -qa|grep dhcp
在这里插入图片描述

(2)编辑主配置文件dhcpd.conf ,指定IP作用域。
配置实例

配置用于在局域网中提供DHCP服务,要求实现如下功能:

  1. 默认租约时间为18000秒;最大租约时间为36000秒。
  2. 局域网内所有主机的域名为 lhg.com。
  3. 客户机使用的DNS服务器的IP地址是192.168.88.1和192.168.88.251。
  4. 在子网192.168.88.0/24中用于动态分配的IP地址范围从192.168.0.100~192.168.88.199(地址池)。
  5. 所有分配的IP地址的子网掩码是255.255.255.0,默认网关地址是192.168.88.1。
  6. 在子网192.168.0.0/24中有名为STU的服务器主机,需要固定分配IP地址为192.168.88.250,该服务器网络接口的MAC地址是00:A0:78:8E:9E:AA,STU主机的其他配置内容那个使用所在子网的默认配置。
  7. 在子网192.168.88.0/24中有一台提供TFTP服务的服务器192.168.88.252,且PXE的启动引导器为pxelinux.0。

什么是PXE?
PXE的全程是preboot execute environment,光从英文名看不出什么来。它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准,具体的标准说明可以在http://www.pix.net/software/pxeboot/archive/pxespec.pdf找到。
PXE有什么用?
前面已经提到,PXE是用来通过网络引导系统的,但是为什么要这么做呢?可以参考下面的场景:
你现在有1台电脑需要装系统,那么很简单,你拿上一个U盘安装盘插在这台电脑上,然后从U盘启动,之后就可以手动安装系统了;但如果你现在有100台电脑,如果你在拿着一个U盘安装盘一台台安装,那效率肯定是太低了,这个时候PXE就派上用场了。
某公司对信息安全要求比较高,需要使用无盘系统(系统不在本地电脑上,而在公司特定的服务器上),这个时候也需要使用PXE。
你想要一台远程的电脑运行你手上特定的系统,这个时候你就可以在本地布置一个你手上的系统,然后通过PXE启动你本地的系统(这个可能需要额外的支持,比如BMC,因为要远程)。

那要使用PXE呢,就需要有两个前提
1、网卡支持PXE(现在网卡一般情况都支持)
2、BIOS开启PXE(也就是你的问题)
(为什么就能给我安装很多操作系统)
第一步:PXE-client发送请求去找dhcp服务器获取地址
第二步:DHCP应答请求并回应分配的IP地址,pxelinux启动程序(TFTP)的位置,以及配置文件的位置
第三步:PXE-client请求下载启动文件PXE客户端收到回应后,向TFTP服务器请求下载所需的启动系统安装文件
第四步:TFTP服务器响应请求并传送文件当TFTP服务器收到请求后,服务器会响应请求并应答请求,之后传送所需的文件给客户端
第五步:PXE-client请求下载自动应答文件PXE客户端通过文件成引导linux安装后,接着读取文件中指定的自动应答文件ks.cfg,然后根据文件位置请求下载镜像
第六步:客户端安装系统有了镜像之后就能安装操作系统了

dhcpd.conf 是DHCP服务的配置文件,DHCP服务所有参数都是通过修改dhcpd.conf 文件来实现,安装后dhcpd.conf 是没有做任何配置的,将/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example 复制为/etc/dhcp/dhcpd.conf 文件进行配置。
前述实例的dhcpd.conf配置文件:

#定义所支持的DNS动态更新类型(必选)
ddns-update-style none;
#忽略客户机更新DNS记录
ignore client-updates;
#默认租约时间为18000秒
Default-lease-time  18000;
#最大租约时间为36000秒
Max-lease-time  36000;#定义作用域(IP子网)
subnet 192.168.88.0 netmask 255.255.255.0  {
#给客户端分配地址的范围range 192.168.88.100   192.168.88.199;
#为客户端指定网关option routers 192.168.88.1;
#为客户端指定子网掩码option subnet-mask 255.255.255.0;
#为客户端指定DNS域名option domain-name "lhg.com";
#为客户端指定DNS服务器的IP地址option domain-name-servers 192.168.88.1, 192.168.88.251;
#为客户端设置网络时间服务器的IP地址option ntp-servers   192.168.88.1;
# 备注名称,可以自行定义。host  STU     {#静态绑定mac和iphardware ethernet  00:A0:78:8E:9E:AA;#固定分配的地址fixed-address 192.168.88.250;        }
#远程启动服务器地址next-server 192.168.88.252;
#获取远程启动服务器地址后下载pxelinux.0这个文件filename "pxelinux.0";
}

注意要dhcp服务器的网段要与Linux服务器网段一致,否则无法启动,写配置文件的时候注意修改IP地址

DHCP配置检查与服务启动

dhcpd –t                #检查配置文件语法的正确性
systemctl enable dhcpd             #设置开机启动
systemctl start dhcpd                #启动dhcp服务
systemctl status dhcpd              #查看DHCP服务状态

在这里插入图片描述

在这里插入图片描述

底下那个红色的是因为虚拟机中的虚拟网卡virbr0,在CentOS 7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡,这个是因为在虚拟化中有使用到libvirtd服务生成的,如果不需要可以关闭后去掉。
直接将libvirtd服务卸载,这样也就不会生成虚拟网卡,更是一劳永逸,待需要使用时,再安装该服务即可。操作命令如下:
yum remove libvirt-libs.x86_64
(非必须操作)

(3)配置Linux客户机DHCP服务器并测试

1、通过“网络连接”继续配置。
进入桌面系统后,在左上角点击“应用程序”→“系统工具”→“设置”单击后进入“设置”对话框窗口,找到网络(左边往下划拉鼠标)。进入对话框后选择“有线连接”→点“+”→,名称输入“System eth0”→“ipv4设置”选项卡,在“ipv4设置”选项卡上,在“方法”下列列表框中选择“自动(DHCP)”。
在这里插入图片描述

2、也可使用nmtui测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/487500.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

啊丢的刷题记录手册

1.洛谷题P1923 求第k小的数 题目描述 输入 n&#xff08;1≤n<5000000 且 n 为奇数&#xff09;个数字ai​&#xff08;1≤ai​<109&#xff09;&#xff0c;输出这些数字的第 k 小的数。最小的数是第 0 小。 请尽量不要使用 nth_element 来写本题&#xff0c;因为本题…

2.23数据结构

单向循环链表 创建单向循环链表&#xff0c;创建节点 &#xff0c;头插&#xff0c;按位置插入&#xff0c;输出&#xff0c;尾删&#xff0c;按位置删除功能 //main.c #include "loop_list.h" int main() {loop_p Hcreate_head();insert_head(H,12);insert_head(…

知识图谱建立以及基于图谱的知识问答实战——以古诗文知识为例

最近比赛需要&#xff0c;所以特出一期建立知识图谱和相关知识问答的教程 整个过程需要用到工具Neo4j&#xff0c;这在我以前的博客中讲到怎么部署详情请看&#xff1a; Neo4j部署教程 如果想快速入门Neo4j请点击这里&#xff1a; Neo4j快速入门 此项目的github地址 参考的刘…

最简单的基于 FFmpeg 的视音频分离器 - 简化版

最简单的基于 FFmpeg 的视音频分离器 - 简化版 最简单的基于 FFmpeg 的视音频分离器 - 简化版正文结果工程文件下载参考链接 最简单的基于 FFmpeg 的视音频分离器 - 简化版 参考雷霄骅博士的文章&#xff0c;链接&#xff1a;最简单的基于FFmpeg的封装格式处理&#xff1a;视音…

TreeData 数据查找

TreeData 数据查找 最近做需求的时候遇到了这样的一个需求&#xff0c;Tree组件数据支持查找&#xff0c;而且TreeData的数据层级是无限级的 开始想的事借助UI组件库&#xff08;Ant-design-vue&#xff09;中的Tree组件的相关方法直接实现,看了下api 发现没法实现&#xff0c;…

yolov5-tracking-xxxsort yolov5融合六种跟踪算法(三)--目标跟踪

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接&#xff1a;https://github.com/zzhmx/yolov5-tracking-xxxsort.git 先按照之前的博客配置好环境&#xff1a; yolov5-tracking-xxxsort yolov5融合六种跟踪算法&#xff08;一&#xff09;–环境配…

QT常用类

五、常用类 QString 字符串类&#xff08;掌握&#xff09; QString是Qt的字符串类&#xff0c;与C的std::string相比&#xff0c; 不再使用ASCII编码。QString使用的是Unicode编码。 QString中每个字符都是一个16位的QChar&#xff0c;而不是8位的char。 QString完全支持中文&…

Stable Diffusion 模型分享:AstrAnime(Astr动画)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五 下载地址 模型介绍 AstrAnime 是一个动漫模型&#xff0c;画风色彩鲜明&#xff0c;擅长绘制漂亮的小姐姐。 条目内容类型大模型…

C++——基础语法(2):函数重载

4. 函数重载 函数重载就是同一个函数名可以重复被定义&#xff0c;即允许定义相同函数名的函数。但是相同名字的函数怎么在使用的时候进行区分呢&#xff1f;所以同一个函数名的函数之间肯定是要存在不同点的&#xff0c;除了函数名外&#xff0c;还有返回类型和参数两部分可以…

使用LinkedList实现堆栈及Set集合特点、遍历方式、常见实现类

目录 一、使用LinkedList实现堆栈 堆栈 LinkedList实现堆栈 二、集合框架 三、Set集合 1.特点 2.遍历方式 3.常见实现类 HashSet LinkedHashSet TreeSet 一、使用LinkedList实现堆栈 堆栈 堆栈&#xff08;stack&#xff09;是一种常见的数据结构&#xff0c;一端…

LED智能互联办公室照明恒流调光IC芯片无频闪H5114

调光高辉度65536级/高精度3% LED降压型恒流驱动器H5114 产品描述 H5114是一款外围电路简单的多功能平 均电流型LED恒流驱动器&#xff0c;适用于5-90V电压范围的非隔离式大功率恒流LED驱动领域。 芯片采用了平均电流模式控制&#xff0c;输出电流精度在3&#xff05;&#xff…

.NET指定图片地址下载并转换Base64字符串

需求描述 需要调用第三方图片上传接口上传图片&#xff0c;对方图片格式只能接收Base64字符串。所以我们需要将系统服务器的图片通过Url下载下来&#xff0c;然后转换成Base64字符串。接下来我们将使用HttpClient类库下载图片并将其转换为Base64格式的字符串。 代码示例 /// &…